此选项适用于用作公共 API 或网站的 Cloud Run 服务。
您可以允许在未通过身份验证的情况下调用服务,方法是为 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
如需创建 Cloud Run 服务,请将以下内容添加到现有 main.tf
文件中:
如需针对 roles/run.invoker
更新服务 IAM 绑定,请添加引用 Cloud Run 服务的以下资源:
此绑定仅针对给定角色授权。服务 IAM 政策中的其他 IAM 绑定均会予以保留。
网域限定共享
默认情况下,如果项目受组织政策中网域限定共享限制的约束,您将无法创建公共服务。您可以使用标记和条件政策来避免特定服务受到此限制条件的约束。如需了解详情,请参阅关于在实施网域限定共享时创建公共 Cloud Run 服务的博文。