建议使用 Artifact Registry 服务来管理容器映像。Container Registry 仍受支持,但只会收到重要的安全补丁。了解如何过渡到 Artifact Registry

Container Registry 服务帐号

Container Registry Service Agent 是一个 Google 管理的服务帐号,该帐号在与 Google Cloud 服务交互时会代表 Container Registry 执行操作。

为了强制实施最小权限安全原则,在 2020 年 10 月 5 日之后,在启用了 Container Registry API 的项目中,将为此服务帐号授予 Container Registry Service Agent 角色。此角色具有以下权限:

  • 发布主题:pubsub.topics.publish
  • 读取存储对象 ACL:storage.objects.getIamPolicy
  • 读取存储对象数据和元数据:storage.objects.get
  • 列出存储分区中的存储对象并读取对象元数据:storage.objects.list

以前,为 Container Registry 服务帐号授予了 Editor 角色。因为 Editor 角色可授予在项目中创建和删除大多数资源的权限,所以如果您的 Container Registry 服务帐号具有此角色,我们建议您限制权限。

查找服务帐号 ID

Container Registry 服务帐号的 ID 如下所示:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

如需查找服务帐号,请查看有权访问您的项目的主帐号列表。

控制台

  1. 转到 IAM 页面

  2. 如需将 Google 管理的帐号添加到主帐号列表,请选中包括 Google 提供的角色授权复选框。

  3. 如需过滤列表,请在过滤条件字段中输入 containerregistry

gcloud

运行以下命令以列出包含字符串 containerregistry 的主帐号:

gcloud projects get-iam-policy PROJECT-ID \
    --flatten="bindings[].members"
    --filter="containerregistry"

PROJECT-ID 替换为您的 Google Cloud 项目 ID。

验证当前权限

如需验证 Container Registry 服务帐号的当前权限,请运行以下命令:

gcloud projects get-iam-policy PROJECT-ID  \
    --flatten="bindings[].members" \
    --format='table(bindings.role)' \
    --filter="bindings.members:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com"

其中

  • PROJECT-ID 是 Google Cloud 项目 ID。
  • PROJECT-NUMBER 是 Google Cloud 项目编号。

您可以在 Google Cloud Console 中或使用以下命令获取项目 ID 和项目编号:

PROJECT=$(gcloud config get-value project)
echo $PROJECT && gcloud projects list --filter="$PROJECT" --format="value(PROJECT_NUMBER)"

更改权限

如需授予 Container Registry Service Agent 角色并撤消 Editor 角色,请执行以下操作:

  1. 使用以下命令授予 Container Registry Service Agent 角色:

    gcloud projects add-iam-policy-binding PROJECT-ID \
    --member=serviceAccount:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com --role=roles/containerregistry.ServiceAgent
    
  2. 使用以下命令撤消 Editor 角色:

    gcloud projects remove-iam-policy-binding PROJECT-ID \
    --member=serviceAccount:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com --role=roles/editor