Artifact Registry 是一项支持软件包和其他格式的通用软件包管理服务。了解如何从 Container 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 服务帐号具有此角色,我们建议您限制权限。

如需验证 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