3

例如,假设用户 A 需要对某个端点具有 GET 权限但没有 POST 权限。有没有办法:

  1. 在某个用户无法向端点发出某些类型的请求的情况下创建角色?
  2. 确保端点遵循这些规则?
4

1 回答 1

1

关于您的第一个问题,Cloud IAM 角色旨在控制用户帐户对项目中存在的服务和产品的访问级别。Cloud Endpoints的IAM 角色允许限制哪些用户可以启用您的 API,但它们不提供如此精细的权限来控制确实允许调用的用户如何与您的 API 的特定路由进行交互。

现在,可以限制对特定 API 方法的访问,我在下面描述了两种方法:

  • 使用 Auth0 并以编程方式检查用户授权:当允许访问端点的用户发出请求时,它的身份将传递给 header 下的处理代码X-Endpoint-API-UserInfo。然后,您可能会检查谁是呼叫者以否定答案。这将需要一些数据库通信来检查受限用户或硬编码用户的可疑天真方法。从安全角度来看,这种方法是可靠的,因为 Cloud IAP 会阻止未经授权的用户访问 API,然后您可以根据需要进一步限制访问范围。这种方法的唯一缺点是它会产生一些延迟。请参阅此处以获取多种语言的文档和代码示例链接。
  • API 密钥:API 密钥提供了一种允许/限制访问单个方法的方法,只要您可以区分端点路由。例如,您可能允许某些键调用yourendpoint/route/method1但要限制yourendpoint/route/method2。这样做有几个缺点,首先是 API 密钥用于识别项目/应用程序/网站/IP 而不是个人用户,这并不是您要问的。第二个是它们不如身份验证安全,一旦您的 API 密钥被公开,几乎任何人都可以使用它,这可能会对您的计费帐户产生意外费用。尽管如此,为了完整起见,我还是想提及它,因为它可能在其他情况下有用。有关API 密钥的概述,请参见此处。

总的来说,我建议将 Auth0 与编程身份验证一起使用。

于 2020-02-18T11:26:42.003 回答