启用 Binary Authorization for Cloud Run

本指南介绍如何设置 Binary Authorization 以对 Cloud Run 服务和工作强制执行基于政策的部署。

准备工作

执行以下操作,以设置 Cloud Run 并启用 API:

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Cloud Run, Artifact Registry, Binary Authorization API。

    启用 API

  5. 安装 Google Cloud CLI。
  6. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  7. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  8. 确保您的 Google Cloud 项目已启用结算功能

  9. 启用 Cloud Run, Artifact Registry, Binary Authorization API。

    启用 API

  10. 安装 Google Cloud CLI。
  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init

在现有 Cloud Run 服务中启用 Binary Authorization

您可以针对现有服务启用 Binary Authorization 强制执行。如需在启用强制执行后将其激活,您可能需要部署一个修订版本或更新服务流量。

您可以使用 Google Cloud 控制台或 Google Cloud CLI 针对现有服务启用 Binary Authorization 强制执行:

控制台

  1. 转到 Google Cloud 控制台中的“Cloud Run”页面。

    转到 Cloud Run

  2. 点击服务。

  3. 点击 Security(安全)标签。

  4. 如需对该服务启用 Binary Authorization 强制执行,请点击启用

  5. 可选:如需配置 Binary Authorization 政策,请点击配置政策

gcloud

针对该服务启用 Binary Authorization 并进行部署:

gcloud run services update SERVICE_NAME --binary-authorization=default

SERVICE_NAME 替换为您的服务的名称。

YAML

您可以使用 gcloud run services describe --format export 命令下载并查看现有服务配置,该命令会生成清理后的 YAML 格式的结果。然后按照后续说明修改字段,最后使用 gcloud run services replace 命令上传修改后的 YAML。请务必严格按照说明修改字段。

  1. 如需查看和下载配置,请运行以下命令:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 按如下所示的方式更新 run.googleapis.com/binary-authorization: 注释:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/binary-authorization: POLICY
      name: SERVICE
    spec:
      template:

    请替换以下内容:

    • SERVICE:Cloud Run 的名称
    • POLICY:设置为 default
  3. 使用以下命令将服务替换为其新配置:

gcloud run services replace service.yaml

针对现有 Cloud Run 作业启用 Binary Authorization

您可以使用 Google Cloud 控制台或 Google Cloud CLI 针对现有作业启用 Binary Authorization 强制执行:

控制台

  1. 转到 Google Cloud 控制台中的“Cloud Run 作业”页面。

    转到 Cloud Run

  2. 点击作业以打开作业详细信息。

  3. 点击配置标签页。

  4. Binary Authorization 下,从政策列表中选择一个政策。

  5. 点击应用以针对作业启用 Binary Authorization 强制执行。

  6. 可选:如需配置 Binary Authorization 政策,请点击配置政策

gcloud

如需针对作业启用 Binary Authorization,请执行以下命令:

gcloud run jobs update JOB_NAME --binary-authorization=POLICY

请替换以下内容:

  • JOB_NAME:您的作业的名称。
  • POLICY:您要应用的政策。使用值 default 以使用默认政策。

我们建议您通过配置组织政策来要求 Cloud Run 使用 Binary Authorization。如果未配置这样的政策,则 Binary Authorization 可能会被 Cloud Run 开发者停用。

查看政策

如需查看政策,请点击查看政策

如需了解详情,请参阅配置 Binary Authorization 政策

服务或作业部署失败

如果您的服务或作业因违反 Binary Authorization 政策而无法部署,您可能会看到如下错误:

Revision REVISION_NAME uses an unauthorized container image.
Container image IMAGE_NAME is not authorized by policy.

此错误还包含有关映像为何违反政策的信息。在这种情况下,您可以使用 Breakglass 绕过政策强制执行并部署映像。

在新服务中启用 Binary Authorization

您可以使用 Google Cloud 控制台或 Google Cloud CLI 针对新服务启用 Binary Authorization:

控制台

  1. 转到 Cloud Run 页面:

    转到 Cloud Run

  2. 点击创建服务

  3. “创建服务”表单中:

    1. 选择 Cloud Run 作为开发平台。
    2. 选择您希望自己的服务所在的区域。
    3. 输入服务名称。
    4. 点击下一步以继续转到“配置服务的第一个修订版本”页面。
    5. 选择从现有容器映像部署一个修订版本
    6. 输入或选择要部署的映像。
    7. 展开高级设置部分。
    8. 点击安全标签。
    9. 选中使用 Binary Authorization 验证容器部署复选框。

    10. 可选:点击配置政策以配置 Binary Authorization 政策。如需详细了解如何配置政策,请参阅配置政策

    11. 部署该服务。

gcloud

针对该服务启用 Binary Authorization 并进行部署:

  gcloud run deploy SERVICE_NAME --image=IMAGE_URL --binary-authorization=default --region=REGION

请替换以下内容:

  • SERVICE_NAME:服务的名称。
  • IMAGE_URL:要部署的映像。
  • REGION:要在其中部署服务的区域。

针对新作业启用 Binary Authorization

您可以使用 Google Cloud CLI 针对新作业启用 Binary Authorization:

gcloud

  1. 如需创建启用了 Binary Authorization 的新作业,请运行以下命令:

    gcloud run jobs create JOB_NAME \
      --image IMAGE_URL OPTIONS \
      --binary-authorization=POLICY \
      --region=REGION

    请替换以下内容:

    • JOB_NAME:您要创建的作业的名称。您可以省略此参数,但如果省略它,系统将提示您输入作业名称。
    • POLICY:您要应用的政策。使用值 default 以使用默认政策。
    • IMAGE_URL 替换为对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/job:latest
    • REGION:此作业将在其中运行的区域。
    • OPTIONS:Cloud Run 作业创建页面中介绍的任何可用选项。
  2. 等待创建作业的操作完成。成功完成后,控制台会显示一条成功消息。

  3. 如需执行作业,请参阅执行作业按计划执行作业

创建新作业时,Cloud Run 服务代理需要能够访问容器(默认情况下能够访问)。

YAML

  1. 使用以下内容创建新的 service.yaml 文件:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/binary-authorization: POLICY
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    请替换以下内容:

    • SERVICE:Cloud Run 的名称
    • IMAGE:容器映像的网址。
    • POLICY:设置为 default
  2. 使用以下命令部署新服务:

gcloud run services replace service.yaml

后续步骤