此选项适用于用作公共 API 或网站的 Cloud Run 服务。
您可以通过以下两种方式创建公共 Cloud Run 服务:
停用 Cloud Run Invoker IAM 检查
建议您通过停用 Cloud Run Invoker IAM 检查来创建公开服务。默认情况下,系统会强制执行该检查。 如果项目受组织政策中网域限定共享限制的约束,此解决方案尤为适用。
如需为服务停用或重新启用 Invoker IAM 检查,您必须拥有以下权限:
run.services.create
run.services.update
run.services.setIamPolicy
Owner 和 Cloud Run Admin 角色均可提供这些权限。如需查看角色及其关联权限的完整列表,请参阅 [Cloud Run IAM 角色][1]。
停用 Cloud Run Invoker IAM 检查
如需停用检查,请执行以下操作:
控制台
如果您要配置新服务,请点击创建服务,然后根据需要填写初始服务设置页面。如果您要配置现有服务,请点击该服务,然后点击安全性。
清除使用 IAM 对传入请求进行身份验证。
点击创建或保存。
gcloud
对于新服务,请使用带有
--no-invoker-iam-check
标志的gcloud run deploy
命令:gcloud run deploy SERVICE_NAME --no-invoker-iam-check
其中,
SERVICE_NAME
是服务名称。对于现有服务,请使用带有
--no-invoker-iam-check
标志的gcloud run services update
命令:gcloud run services update SERVICE_NAME --no-invoker-iam-check
其中,
SERVICE_NAME
是服务名称。
YAML
如需查看和下载配置,请运行以下命令:
gcloud run services describe SERVICE --format export > service.yaml
更新
run.googleapis.com/invoker-iam-disabled:
注释:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invoker-iam-disabled: true name: SERVICE_NAME
其中,SERVICE_NAME 是您的 Cloud Run 服务的名称。
使用以下命令将服务的配置替换为新配置:
gcloud run services replace service.yaml
前往服务的 HTTPS 端点,验证检查是否已在部署后停用。
重新启用 Cloud Run Invoker IAM 检查
如需重新启用检查,请执行以下操作:
控制台
点击相应服务,然后点击安全性。
选择使用 IAM 对传入请求进行身份验证。
点击保存。
gcloud
通过传递
--invoker-iam-check
标志来更新服务:gcloud run services update SERVICE_NAME --invoker-iam-check
其中,
SERVICE_NAME
是服务名称。
YAML
如需查看和下载配置,请运行以下命令:
gcloud run services describe SERVICE --format export > service.yaml
更新
run.googleapis.com/invoker-iam-disabled:
注释:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invoker-iam-disabled: false name: SERVICE_NAME
其中,SERVICE_NAME 是 Cloud Run 服务的名称。
前往服务的 HTTPS 端点,验证检查是否已在部署后重新启用。
为 Cloud Run invoker IAM 检查配置组织政策
如果您是管理员,可以使用 constraints/run.managed.requireInvokerIam
受管理的限制条件来限制停用 Invoker IAM 检查的权限。默认情况下,系统不会强制执行此限制条件。
将 Cloud Run IAM Invoker 角色分配给 allUsers
成员类型
您可以允许在未通过身份验证的情况下调用服务,方法是为 allUsers
成员类型分配 Cloud Run IAM Invoker 角色。
您必须具有 run.services.setIamPolicy
权限才能在 Cloud Run 服务上配置身份验证。Owner 和 Cloud Run Admin 角色均拥有这项权限。如需查看角色及其关联权限的完整列表,请参阅 Cloud Run IAM 角色。
控制台界面
对于现有 Cloud Run 服务:
前往 Google Cloud 控制台:
点击要公开的服务左侧的复选框。(请勿点击服务本身。)
在右上角的信息窗格中,点击权限标签页。如果未显示信息窗格,您可能需要点击显示信息面板,然后点击权限。
点击添加主账号。
在新的主账号字段中,输入值 allUsers
从“角色”下拉菜单中,选择 Cloud Run Invoker 角色。
点击保存。
系统会提示您确认是否要公开此资源。点击允许公开访问将更改应用到服务的 IAM 设置。
若要创建新服务,请点击创建服务,但务必选中身份验证标签页中的允许未通过身份验证的调用复选框,以使该服务可供公开访问。如果选择需要身份验证,则会将服务设为不公开。
gcloud
如需使服务可公开访问,请使用 gcloud run services
命令向服务添加特殊 allUsers
成员类型并向其授予 roles/run.invoker
角色:
gcloud run services add-iam-policy-binding [SERVICE_NAME] \ --member="allUsers" \ --role="roles/run.invoker"
运行 gcloud run deploy
命令以在部署服务时使服务可公开访问:
gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated
YAML
创建一个名为 policy.yaml
的文件,其中包含以下内容:
bindings:
- members:
- allUsers
role: roles/run.invoker
使用以下命令允许对现有 SERVICE 进行未经身份验证的调用:
gcloud run services set-iam-policy SERVICE policy.yaml
Terraform
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
将以下内容添加到 Terraform 配置中的google_cloud_run_v2_service
资源:如需针对 roles/run.invoker
更新服务 IAM 绑定,请添加引用 Cloud Run 服务的以下资源:
此绑定仅针对给定角色授权。服务 IAM 政策中的其他 IAM 绑定均会予以保留。