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

添加自定义策略

最近更新时间2023.04.26 10:37:31

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

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

操作步骤

  1. 登录 访问控制 IAM 控制台
  2. 在左侧导航栏,单击 策略管理
  3. 策略 页面,单击 用户自定义策略 页签,然后单击 新建策略
  4. 新建策略 对话框,根据系统提示填写策略名称、备注,并编辑策略内容。
    alt

    说明

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

  5. 单击 创建策略

    说明

    自定义策略创建成功后会显示在 用户自定义策略 页签下。

  6. 单击已创建的自定义策略名,进入 策略详情 页面。
  7. 策略详情 页面,选择 授权 > 全局授权 页签,单击 添加授权
  8. 授予全局权限。在 全局权限 页签,选中目标用户名前的复选框,单击 确定,将该自定义策略授权给目标用户。
    alt

场景案例

以下为一些镜像仓库的自定义策略的案例。

场景一:推送镜像

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