对开发者进行身份验证

除了创建、更新和删除服务等管理操作以外,开发者通常还需要在发布服务之前进行不公开测试。此选项适用于 Cloud Run 服务,而不适用于 Cloud Run 作业。

开始前须知

请确保您授予访问要向其进行身份验证的服务的权限。您必须将 Cloud Run Invoker 角色授予开发者或开发者组:

控制台界面

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 选择服务,但不点击它。

  3. 点击右侧面板中的权限标签页。(您可能需要先点击右上角的显示信息面板。)

  4. 点击添加成员

  5. 添加成员字段中,输入开发者帐号电子邮件地址。

  6. 选择角色下拉菜单中选择 Cloud Run Invoker 角色。

  7. 点击保存

gcloud

使用 gcloud run services add-iam-policy-binding 命令:

gcloud run services add-iam-policy-binding SERVICE \
  --member='USER:EMAIL' \
  --role='roles/run.invoker'

其中

  • SERVICE 是服务的名称。
  • USER 的值是 usergroup,具体取决于您是向单个开发者授权还是向群组授权。
  • EMAIL 是电子邮件帐号。

    例如:

    gcloud run services add-iam-policy-binding myservice \
    --member='user:test-user@gmail.com' \
    --role='roles/run.invoker'
    

测试专用服务

在 Google Cloud CLI 中使用 Cloud Run 代理

测试专用服务的最简单方法是使用 Google Cloud CLI 中的 Cloud Run 代理。它将此专用服务代理到 http://localhost:8080(或使用 --port 指定的端口),并提供活跃帐号的令牌或您指定的其他令牌。这可让您使用网络浏览器或 curl 等工具。
这是在浏览器中以私密方式测试网站或 API 的推荐方法。

您可以使用以下命令在本地代理服务:

gcloud beta run services proxy SERVICE --project PROJECT-ID

使用 curl

您也可以在不使用代理的情况下测试专用服务,方法是使用 curl 等工具并在 Authorization 标头中传递一个身份验证令牌:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

为了让 curl 命令正常运行,您必须将一个有效的身份令牌传递给具有 run.routes.invoke 权限的用户,例如 Cloud Run AdminCloud Run Invoker。如需查看角色及其关联权限的完整列表,请参阅 Cloud Run IAM 角色

如示例所示,要为当前登录 gcloud 的身份获取有效的身份令牌,您可以使用 gcloud auth print-identity-token。 请注意,使用 gcloud 命令生成的 ID 令牌应仅在开发设置中使用,因为不需要指定“audience”。如果要求指定 audience,则可以降低重放攻击的风险。相比之下,通过服务帐号生成令牌时,必须指定 audience