从服务器端安全的Google云函数调用,身份验证策略?

2024-05-14 14:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python开发了一个Google Cloud Function (GCF),我想从部署在AWS上的web服务(用python编写)访问它。而在GCF的开发阶段,它将Cloud Function Invoker权限设置为allUsers。我想这就是为什么它在被调用时没有请求Authorization Token。在

我想撤销这个公共访问,并使它成为我只能从web服务代码调用这个函数,它是不可访问的公共联盟。在

可能的方法:在我的研究中,我发现可以通过以下步骤实现:

  1. 删除对GCF拥有权限的所有不必要的成员。在
  2. 正在创建一个新的服务帐户,该帐户的访问权限被限制为只能使用GCF。在
  3. 下载服务帐户密钥(json)并在awsweb应用程序中使用它
  4. 将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为该服务帐户密钥(json)文件的路径。在

问题

  1. 如何使用服务帐户生成访问令牌,然后在对GCF的HTTP调用中将其附加为Authorization Bearer?没有此标记,GCF应该抛出错误。

  2. docs表示不要将服务帐户密钥放在源代码中。那最好的办法是什么。他们建议使用KMS,这似乎是一种过度杀戮。

Do not embed secrets related to authentication in source code, such as API keys, OAuth tokens, and service account credentials. You can use an environment variable pointing to credentials outside of the application's source code, such as Cloud Key Management Service.

  1. 我对服务帐户所需的最低权限是多少?在

如果你认为我的理解是错误的,请随时纠正我,并且有更好更好的方法来做。在

更新:AWS上的web服务将以服务器到服务器的方式调用GCF。不需要传播客户端(最终用户)凭据。在


Tags: to方法awswebjsoncloud权限source
1条回答
网友
1楼 · 发布于 2024-05-14 14:19:04
  1. 在你的描述中,你没有提到谁/什么叫你的GCF。用户?电脑?另一个GCF?但是,这个page可以帮助您找到代码示例

  2. 是的,明文和推送GIT的秘密还不是秘密!再说一遍,我不知道打电话是怎么回事。如果是计算、函数、云运行或任何GCP服务,不要使用JSON文件密钥,而是使用组件标识。我会说,创建一个服务帐户并将其设置为该组件。如果您需要更多帮助,请告诉我更多关于您部署在哪里的信息!

  3. 与2相关:如果您有服务帐户,最小角色是什么:cloudfunctions.Invoker. 它是调用函数的最小角色

gcloud beta functions add-iam-policy-binding RECEIVING_FUNCTION \
   member='serviceAccount:CALLING_FUNCTION_IDENTITY' \
   role='roles/cloudfunctions.invoker'

相关问题 更多 >

    热门问题