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
如需查找服务账号,请查看有权访问您的项目的主账号列表。
控制台
转到 IAM 页面。
如需将 Google 管理的账号添加到主账号列表,请选中包括 Google 提供的角色授权复选框。
如需过滤列表,请在过滤条件字段中输入
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 控制台中或使用以下命令获取项目 ID 和项目编号:
PROJECT=$(gcloud config get-value project)
echo $PROJECT && gcloud projects list --filter="$PROJECT" --format="value(PROJECT_NUMBER)"
更改权限
如需授予 Container Registry Service Agent 角色并撤消 Editor 角色,请执行以下操作:
使用以下命令授予 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
使用以下命令撤消 Editor 角色:
gcloud projects remove-iam-policy-binding PROJECT-ID \ --member=serviceAccount:service-PROJECT-NUMBER@containerregistry.iam.gserviceaccount.com --role=roles/editor