本指南介绍如何设置 Binary Authorization 以对 Cloud Run 服务和工作强制执行基于政策的部署。
准备工作
执行以下操作,以设置 Cloud Run 并启用 API:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
在现有 Cloud Run 服务中启用 Binary Authorization
您可以针对现有服务启用 Binary Authorization 强制执行。如需在启用强制执行后将其激活,您可能需要部署一个修订版本或更新服务流量。
您可以使用 Google Cloud 控制台或 Google Cloud CLI 针对现有服务启用 Binary Authorization 强制执行:
控制台
转到 Google Cloud 控制台中的“Cloud Run”页面。
点击服务。
点击 Security(安全)标签。
如需对该服务启用 Binary Authorization 强制执行,请点击启用。
可选:如需配置 Binary Authorization 政策,请点击配置政策。
gcloud
针对该服务启用 Binary Authorization 并进行部署:
gcloud run services update SERVICE_NAME --binary-authorization=default
将 SERVICE_NAME
替换为您的服务的名称。
YAML
如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置:
gcloud run services describe SERVICE --format export > service.yaml
按如下所示更新
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
使用以下命令将服务的配置替换为新配置:
gcloud run services replace service.yaml
针对现有 Cloud Run 作业启用 Binary Authorization
您可以使用 Google Cloud 控制台或 Google Cloud CLI 针对现有作业启用 Binary Authorization 强制执行:
控制台
转到 Google Cloud 控制台中的“Cloud Run 作业”页面。
点击作业以打开作业详细信息。
点击配置标签页。
在 Binary Authorization 下,从政策列表中选择一个政策。
点击应用以针对作业启用 Binary Authorization 强制执行。
可选:如需配置 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:
控制台
转到 Cloud Run 页面:
点击创建服务。
在“创建服务”表单中:
- 选择 Cloud Run 作为开发平台。
- 选择您希望自己的服务所在的区域。
- 输入服务名称。
- 点击下一步以继续转到“配置服务的第一个修订版本”页面。
- 选择从现有容器映像部署一个修订版本。
- 输入或选择要部署的映像。
- 展开高级设置部分。
- 点击安全标签。
选中使用 Binary Authorization 验证容器部署复选框。
可选:点击配置政策以配置 Binary Authorization 政策。如需详细了解如何配置政策,请参阅配置政策
部署该服务。
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
如需创建启用了 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 作业创建页面中介绍的任何可用选项。
等待创建作业的操作完成。成功完成后,控制台会显示一条成功消息。
创建新作业时,Cloud Run 服务代理需要能够访问容器(默认情况下能够访问)。
YAML
使用以下内容创建新的
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
使用以下命令部署新服务:
gcloud run services replace service.yaml
后续步骤
- 使用
built-by-cloud-build
证明者仅部署由 Cloud Build 构建的映像。 - 使用 Google Cloud 控制台或命令行工具配置 Binary Authorization 政策。
- 通过使用证明来仅部署已签名的容器映像。
- 观看视频,了解如何在 Cloud Run 中使用 Binary Authorization,以便仅部署已获批准的版本。