我的 Cloud Build 服务帐户需要哪些角色才能部署 http 触发的未经身份验证的 Cloud Functions?
What roles do my Cloud Build service account need to deploy an http triggered unauthenticated Cloud Function?
我试图使用此配置通过 Cloud Build 部署一个 http 触发的 Cloud Function。
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args:
- beta
- functions
- deploy
- myfunction
- --source=start_shopify_installation
- --trigger-http
- --region=europe-west1
- --runtime=nodejs14
- --allow-unauthenticated
- --ingress-settings=all
- --security-level=secure-always
- --set-secrets=env_1=secret_1:latest
当我收到错误提示 Cloud Build 无法设置 IAM 策略时。
WARNING: Setting IAM policy failed, try:
gcloud alpha functions add-iam-policy-binding myfunction\
--region=europe-west1 \
--member=allUsers \
--role=roles/cloudfunctions.invoker
函数已部署,当我在 GCP 控制台中查看时,allUsers
成员似乎具有角色 Cloud Functions Invoker
,但它在身份验证中没有 allow unauthenticated
柱子。当我调用该函数时,出现 'missing permissions' 错误。
当我从我的云端 Shell 执行建议的命令时,它工作得很好。但是,如果我将其作为部署配置中的额外步骤填写,则该步骤将失败。
我认为我的 Cloud Build 服务帐户必须缺少一个角色才能使该功能无需身份验证即可访问?目前它有这些角色:Cloud Build Service Account
、Cloud Functions Developer
和 Service Account User
.
编辑
我将 Project IAM Admin
角色添加到 Cloud Build 服务帐户并重试。
不幸的是,它没有改变任何东西。
我在我这边重现了你的错误(警告)并修复了它:我可以看到 allUsers
在函数的 PERMISSIONS 选项卡中具有 Cloud Functions Invoker
角色。
事实上,您的云构建服务帐户需要 cloudfunctions.functions.setIamPolicy
权限。 所以解决方案是用Cloud Functions Admin
角色替换Cloud Functions Developer
角色。
Use of the --allow-unauthenticated flag modifies IAM permissions. To ensure that unauthorized developers cannot modify function permissions, the user or service that is deploying the function must have the cloudfunctions.functions.setIamPolicy permission. This permission is included in both the Owner and Cloud Functions Admin roles.
参考:https://cloud.google.com/functions/docs/securing/managing-access-iam#at_deployment
我试图使用此配置通过 Cloud Build 部署一个 http 触发的 Cloud Function。
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args:
- beta
- functions
- deploy
- myfunction
- --source=start_shopify_installation
- --trigger-http
- --region=europe-west1
- --runtime=nodejs14
- --allow-unauthenticated
- --ingress-settings=all
- --security-level=secure-always
- --set-secrets=env_1=secret_1:latest
当我收到错误提示 Cloud Build 无法设置 IAM 策略时。
WARNING: Setting IAM policy failed, try:
gcloud alpha functions add-iam-policy-binding myfunction\
--region=europe-west1 \
--member=allUsers \
--role=roles/cloudfunctions.invoker
函数已部署,当我在 GCP 控制台中查看时,allUsers
成员似乎具有角色 Cloud Functions Invoker
,但它在身份验证中没有 allow unauthenticated
柱子。当我调用该函数时,出现 'missing permissions' 错误。
当我从我的云端 Shell 执行建议的命令时,它工作得很好。但是,如果我将其作为部署配置中的额外步骤填写,则该步骤将失败。
我认为我的 Cloud Build 服务帐户必须缺少一个角色才能使该功能无需身份验证即可访问?目前它有这些角色:Cloud Build Service Account
、Cloud Functions Developer
和 Service Account User
.
编辑
我将 Project IAM Admin
角色添加到 Cloud Build 服务帐户并重试。
我在我这边重现了你的错误(警告)并修复了它:我可以看到 allUsers
在函数的 PERMISSIONS 选项卡中具有 Cloud Functions Invoker
角色。
事实上,您的云构建服务帐户需要 cloudfunctions.functions.setIamPolicy
权限。 所以解决方案是用Cloud Functions Admin
角色替换Cloud Functions Developer
角色。
Use of the --allow-unauthenticated flag modifies IAM permissions. To ensure that unauthorized developers cannot modify function permissions, the user or service that is deploying the function must have the cloudfunctions.functions.setIamPolicy permission. This permission is included in both the Owner and Cloud Functions Admin roles.
参考:https://cloud.google.com/functions/docs/securing/managing-access-iam#at_deployment