启用 Binary Authorization for Cloud Run

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

准备工作

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

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    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

  1. 如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置

    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

后续步骤