You need to enable JavaScript to run this app.
导航
授权指定命名空间镜像推拉权限
最近更新时间:2024.07.22 11:40:07首次发布时间:2024.03.06 10:23:29

实际业务场景中,通常需要对指定项目中的子账号添加权限限制,以确保权限的最少可用。例如,仅支持推送指定镜像仓库命名空间中的镜像。本文介绍如何为项目中子账号,添加指定命名空间中镜像的推送权限。

场景介绍

为子账号 cr-demo 添加标准版实例 instance-a、命名空间 library 中镜像的 推送 权限和项目 cr-demo-project 的权限。

授权完成后,子账号支持拉取该命名空间下所有镜像实例,并且支持通过 OpenAPI 查询该命名空间的信息以及该命名空间下所有镜像实例的相关信息。

本示例中的自定义策略包含两部分:

  • 访问镜像仓库必须添加的策略 custom-cr:角色和实例相关策略 SetUserGetUserListRegistries

    {
      "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

操作步骤

第一步:创建并添加全局授权

  1. 登录 访问控制 IAM 控制台

  2. 在左侧导航栏,单击 策略管理

  3. 策略管理 页面,单击 新建自定义策略

  4. 新建自定义策略 对话框,根据下文的示例代码创建策略 custom-cr
    alt

    {
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cr:GetUser",
            "cr:SetUser",
            "cr:ListRegistries"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }
    

    说明

    编辑策略内容时需要遵循 IAM 的策略语法。详细信息,请参见 策略语法

  5. 单击 提交,完成创建。

  6. 在创建成功页面,单击 添加授权

alt

  1. 选择目标子账号 cr-demo

alt
8. 单击 确定 完成添加

第二步:创建并添加项目权限

在目标项目维度(cr-demo-project)为用户授予镜像仓库读写权限,即在项目维度添加 custom-cr-for-project 策略。

  1. 登录 访问控制 IAM 控制台

  2. 在左侧导航栏,单击 策略管理

  3. 策略管理 页面,单击 新建自定义策略

  4. 新建自定义策略 对话框,根据下文的示例代码创建策略 custom-cr-for-project
    alt

    {
      "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/*"
          ]
        }
      ]
    }
    
  5. 单击 提交,完成创建。

  6. 在创建成功页面,单击 添加授权

    alt

  7. 选择 custom-cr-for-project策略和 cr-demo-project 项目。
    alt

  8. 单击 确定,完成授权。