实际业务场景中,通常需要对指定项目中的子账号添加权限限制,以确保权限的最少可用。例如,仅支持推送指定镜像仓库命名空间中的镜像。本文介绍如何为项目中子账号,添加指定命名空间中镜像的推送权限。
为子账号 cr-demo
添加标准版实例 instance-a
、命名空间 library
中镜像的 推送 权限和项目 cr-demo-project
的权限。
授权完成后,子账号支持拉取该命名空间下所有镜像实例,并且支持通过 OpenAPI 查询该命名空间的信息以及该命名空间下所有镜像实例的相关信息。
本示例中的自定义策略包含两部分:
访问镜像仓库必须添加的策略 custom-cr
:角色和实例相关策略 SetUser
、GetUser
、ListRegistries
。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetUser", "cr:SetUser", "cr:ListRegistries" ], "Resource": [ "*" ] } ] }
本场景中项目策略 custom-cr-for-project
:标准版实例下命名空间(例如:标准版实例 instance-a
,命名空间 library
)的推送镜像的策略。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:List*", "cr:Get*", "cr:Pull*", "cr:Push*" ], "Resource": [ "trn:cr:*:*:instance/instance-a", "trn:cr:*:*:repository/instance-a/library", "trn:cr:*:*:repository/instance-a/library/*" ] } ] }
已基于业务场景创建项目,操作说明参见 项目管理。本文中示例项目名称为 cr-demo-project
。
登录 访问控制 IAM 控制台。
在左侧导航栏,单击 策略管理。
在 策略管理 页面,单击 新建自定义策略 。
在 新建自定义策略 对话框,根据下文的示例代码创建策略 custom-cr
。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetUser", "cr:SetUser", "cr:ListRegistries" ], "Resource": [ "*" ] } ] }
说明
编辑策略内容时需要遵循 IAM 的策略语法。详细信息,请参见 策略语法。
单击 提交,完成创建。
在创建成功页面,单击 添加授权。
cr-demo
。
8. 单击 确定 完成添加
在目标项目维度(cr-demo-project)为用户授予镜像仓库读写权限,即在项目维度添加 custom-cr-for-project
策略。
登录 访问控制 IAM 控制台。
在左侧导航栏,单击 策略管理。
在 策略管理 页面,单击 新建自定义策略 。
在 新建自定义策略 对话框,根据下文的示例代码创建策略 custom-cr-for-project
。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:List*", "cr:Get*", "cr:Pull*", "cr:Push*" ], "Resource": [ "trn:cr:*:*:instance/instance-a", "trn:cr:*:*:repository/instance-a/library", "trn:cr:*:*:repository/instance-a/library/*" ] } ] }
单击 提交,完成创建。
在创建成功页面,单击 添加授权。
选择 custom-cr-for-project
策略和 cr-demo-project
项目。
单击 确定,完成授权。