跳到主要内容

TKE镜像仓库资源级权限设置

容器镜像服务权限介绍

容器镜像的地址格式是:ccr.cloud.sunhongs.com/${namespace}/${name}:${tag}

镜像仓库的权限围绕以下两个字段进行设置:

  • ${namespace}: 镜像仓库所属命名空间。
  • ${name}: 镜像仓库名称。

说明: 命名空间 ${namespace} 及镜像名字 ${name} 中不能包含斜杠 “/”。${tag} 字段目前只实现了删除操作鉴权,请参考镜像 Tag 权限

通过 ${namespace}${name} 两个字段,管理者可以为协作者制定详细的权限方案,实现灵活的权限管理。

例如:

  • 允许协作者 A 拉取镜像。
  • 禁止协作者 A 删除镜像。
  • 禁止协作者 B 拉取命名空间 ns1 中的镜像。

如果您不需要详细管理镜像仓库权限,可以使用预设策略授权。如果您需要细致地管理协作者权限,请使用自定义策略授权。容器镜像服务权限基于站狐云 CAM 进行管理,您可以详细了解 CAM 的使用方法:

  • 用户管理
  • 策略管理
  • 授权管理

预设策略授权

为了简化容器镜像服务权限管理,容器镜像服务内置了两个预设策略:

镜像仓库(CCR)全读写访问权限

该预设策略配置了容器镜像服务所有权限。如果协作者关联该预设策略后,将与管理者拥有相同的镜像仓库权限。详情请查看权限列表

镜像仓库(CCR)只读访问权限

该预设策略包含了容器镜像服务只读操作的权限。如果协作者在容器镜像服务中仅关联了该预设策略,则以下操作将被禁止:

  • docker push 推送镜像
  • 新建镜像仓库命名空间
  • 删除镜像仓库命名空间
  • 创建镜像仓库
  • 删除镜像仓库
  • 删除镜像 Tag

如果您不了解如何为协作者关联预设策略,请参考 CAM 文档:预设策略介绍预设策略关联用户

自定义策略授权

通过自定义策略,管理者可以为不同的协作者关联不同的权限。当您分配权限时,请考虑这些要素:

  • 资源 (resource):该权限策略关联哪些镜像仓库,例如所有镜像仓库描述为 qcs::ccr:::repo/*,详见 CAM 资源描述方式。
  • 动作 (action):该权限策略对资源 (resource) 进行哪些操作,如删除、新建等,通常使用接口进行描述。
  • 效力 (effect):该权限策略对协作者表现出的效果(允许/拒绝)。

创建自定义策略示例

允许协作者创建镜像仓库

  1. 创建自定义策略。
  2. 使用开发商账号登录控制台。
  3. 进入访问管理自定义策略管理页面,单击【新建自定义策略】,打开【选择创建策略方式】对话框。 img
  4. 选择【按策略语法创建】 > 【空白模板】。 img
  5. 单击【下一步:编辑策略模板】,进入【编辑策略】页面。
  6. 设置策略名称,并将以下内容填入【编辑策略内容】编辑框中。
{
"version": "2.0",
"statement": [{
"action": "ccr:CreateRepository",
"resource": "qcs::ccr:::repo/*",
"effect": "allow"
}]
}

例如,将策略名称设置为 ccr-policy-demoimg

说明:resource 末尾使用 * 表示可以在任意命名空间下创建镜像仓库。

  1. 单击【完成】,结束策略创建过程。 img
  2. 关联自定义策略。步骤 1 中的策略 (ccr-policy-demo) 创建完成后,您可以将其关联到任意协作者,详见访问管理文档。策略关联完成后协作者即拥有在任意命名空间下创建镜像仓库权限。

资源格式说明

qcs::ccr:::repo/* 格式说明:

  • qcs::ccr::: 为固定格式,表示开发商的站狐云 容器镜像仓库服务。
  • repo 为固定前缀,代表资源类型,这里是镜像仓库。
  • 斜杠 (/) 后面的 * 表示匹配所有镜像仓库。

关于 resource 更详细的描述,请参考 CAM 资源描述方式。

按资源进行授权

您可以同时为多个资源进行授权。例如:“允许删除命名空间 foo, bar 中的镜像仓库”,可以创建下面的自定义策略:

{
"version": "2.0",
"statement": [{
"action": [
"ccr:BatchDeleteRepository",
"ccr:DeleteRepository"
],
"resource": [
"qcs::ccr:::repo/foo/*",
"qcs::ccr:::repo/bar/*"
],
"effect": "allow"
}]
}
  • qcs::ccr:::repo/foo/*foo/* 表示镜像仓库命名空间 foo 下的所有镜像。
  • qcs::ccr:::repo/bar/*bar/* 表示镜像仓库命名空间 bar 下的所有镜像。

按动作 (接口) 进行授权

您可以对一个资源配置多个 action,实现资源权限的统一管理。例如:“允许创建、删除、push 命名空间 foo 中的镜像仓库”,可以创建下面的自定义策略:

{
"version": "2.0",
"statement": [{
"action": [
"ccr:CreateRepository",
"ccr:BatchDeleteRepository",
"ccr:DeleteRepository",
"ccr:push"
],
"resource": "qcs::ccr:::repo/foo/*",
"effect": "allow"
}]
}

权限列表

Docker Client 权限

资源说明
qcs::ccr:::repo/${namespace}/${name}镜像仓库资源
操作 (action)
ccr:pull使用 docker 命令行 pull 镜像
ccr:push使用 docker 命令行 push 镜像

命名空间权限

资源说明
qcs::ccr:::repo/${namespace}镜像仓库命名空间
操作 (action)
ccr:CreateCCRNamespace新建镜像仓库命名空间
ccr:DeleteUserNamespace删除镜像仓库命名空间

功能指引:【容器服务】 > 左侧导航栏【镜像仓库】 > 【我的镜像】 > 【命名空间】。 img

镜像仓库权限

资源说明
qcs::ccr:::repo/${namespace}/${name}镜像仓库资源
操作 (action)
ccr:CreateRepository创建镜像仓库
ccr:DeleteRepository删除镜像仓库
ccr:BatchDeleteRepository批量删除镜像仓库
ccr:GetUserRepositoryList查看镜像仓库列表

功能指引:【容器服务】 > 左侧导航栏【镜像仓库】 > 【我的镜像】 > 【我的镜像】.

若要阻止协作者删除某些镜像,请配置多个 action 来实现。

例如,禁止删除任何镜像仓库。

{
"version": "2.0",
"statement": [{
"action": [
"ccr:BatchDeleteRepository",
"ccr:DeleteRepository"
],
"resource": "qcs::ccr:::repo/*",
"effect": "deny"
}]
}

镜像 Tag 权限

资源说明
qcs::ccr:::repo/${namespace}/${name}:${tag}镜像 Tag 资源
操作 (action)
ccr:DeleteTag删除镜像 Tag 权限

功能指引:【容器服务】 > 左侧导航栏【镜像仓库】 > 【我的镜像】 > 【我的镜像】 > 单击某个镜像名称 > 【镜像版本】页面。