You need to enable JavaScript to run this app.
导航

添加自定义策略

最近更新时间2024.03.06 10:23:27

首次发布时间2022.03.31 23:31:56

如果系统预设的镜像仓库策略,不能满足您对于权限管控需求,您可使用自定义策略。

操作步骤

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

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

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

  4. 新建自定义策略 对话框创建策略,示例如下。
    alt

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

    说明

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

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

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

alt

  1. 选择目标账号。本示例为 cr-demo

alt
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/*"
      ]
    }
  ]
}

场景四:OCI 制品仓库维度全量权限

授权 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"
      ]
    }
  ]
}