您可以通过以下两种方式创建公共 Cloud Run 服务:
所需的角色
如需为服务停用或重新启用 Invoker IAM 检查,您必须拥有以下权限:
run.services.create
run.services.update
run.services.setIamPolicy
这些权限包含在 Cloud Run Admin 角色 (roles/run.admin
) 中。如需查看角色及其关联权限的完整列表,请参阅 Cloud Run IAM 角色。
停用 Cloud Run Invoker IAM 检查
建议您通过停用 Cloud Run Invoker IAM 检查来创建公共服务。Cloud Run 默认会强制执行此检查。如果项目受组织政策中网域限定共享限制的约束,请使用此解决方案。
如需停用检查,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run 页面:
如果您要配置新服务,请点击创建服务,然后根据需要填写初始服务设置页面。
如果您要配置现有服务,请点击该服务,然后点击安全性标签页。
选择允许公开访问。
点击创建或保存。
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 检查
如需重新启用检查,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run 页面:
点击相应服务,然后点击安全性。
选择需要身份验证,然后选择 Identity and Access Management (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 Invoker IAM 角色。
您必须具有 run.services.setIamPolicy
权限才能在 Cloud Run 服务上配置身份验证。此权限包含在 Cloud Run Admin 角色中。如需查看角色及其关联权限的完整列表,请参阅 Cloud Run IAM 角色。
控制台
对于现有 Cloud Run 服务:
在 Google Cloud 控制台中,前往 Cloud Run 页面。
点击要公开的服务左侧的复选框。请勿点击服务本身。
在右上角的信息窗格中,点击权限标签页。如果未显示信息窗格,您可能需要点击显示信息面板,然后点击权限。
点击添加主账号。
在新的主账号字段中,输入值 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 绑定均会予以保留。