如果系统预设的镜像仓库策略,不能满足您对于权限管控需求,您可使用自定义策略。
登录 访问控制 IAM 控制台。
在左侧导航栏,单击 策略管理。
在 策略管理 页面,单击 新建自定义策略 。
在 新建自定义策略 对话框创建策略,示例如下。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetUser", "cr:SetUser", "cr:ListRegistries" ], "Resource": [ "*" ] } ] }
说明
编辑策略内容时需要遵循 IAM 的策略语法。详细信息,请参见 策略语法。
单击 提交,完成创建。
在创建成功页面,单击 添加授权。
cr-demo
。
8. 单击 确定 完成添加。
以下为一些镜像仓库的自定义策略的案例。
授予 IAM 用户某个标准版实例下命名空间(例如:标准版实例 instance-a,命名空间 library)的推送镜像的权限。IAM 用户登录镜像仓库后可以推送该命名空间下所有镜像实例,可以通过 OpenAPI 查到该命名空间的信息以及该命名空间下所有镜像实例的相关信息。
{ "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/*" ] } ] }
授予 IAM 用户某个标准版实例下命名空间(例如:标准版实例 instance-a,命名空间 library)的读权限。IAM 用户登录镜像仓库后可以拉取该命名空间下所有镜像实例,可以通过 OpenAPI 查到该命名空间的信息以及该命名空间下所有镜像实例的相关信息。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:List*", "cr:Get*", "cr:Pull*" ], "Resource": [ "trn:cr:*:*:instance/instance-a", "trn:cr:*:*:repository/instance-a/library", "trn:cr:*:*:repository/instance-a/library/*" ] } ] }
授予 IAM 用户某个标准版实例下命名空间(例如:标准版实例 instance-a,命名空间 library)的所有使用权限 。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:*" ], "Resource": [ "trn:cr:*:*:instance/instance-a", "trn:cr:*:*:repository/instance-a/library", "trn:cr:*:*:repository/instance-a/library/*" ] } ] }
授权 IAM 用户某个 OCI 制品仓库(例如:标准版实例 instance-a,命名空间 library,OCI 制品仓库 nginx)的所有使用权限。
{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:List*", "cr:Get*" ], "Resource": [ "trn:cr:*:*:instance/instance-a", "trn:cr:*:*:repository/instance-a/library" ] }, { "Effect": "Allow", "Action": [ "cr:*" ], "Resource": [ "trn:cr:*:*:instance/instance-a", "trn:cr:*:*:repository/instance-a/library/nginx" ] } ] }