更新时间:2022-08-16 GMT+08:00

创建云服务自定义策略

功能介绍

该接口可以用于管理员创建云服务自定义策略。

该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。

URI

POST /v3.0/OS-ROLE/roles

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

该字段内容填为“application/json;charset=utf8”。

X-Auth-Token

String

拥有Security Administrator权限的token。

表2 请求Body参数

参数

是否必选

参数类型

描述

role

Object

自定义策略信息。

表3 role

参数

是否必选

参数类型

描述

display_name

String

自定义策略展示名。

type

String

自定义策略的显示模式。

说明:
  • AX表示在domain层显示。
  • XA表示在project层显示。
  • 自定义策略的显示模式只能为AX或者XA,不能在domain层和project层都显示(AA),或者在domain层和project层都不显示(XX)。

description

String

自定义策略的描述信息。

description_cn

String

自定义策略的中文描述信息。

policy

Object

自定义策略的具体内容。

表4 role.policy

参数

是否必选

参数类型

描述

Version

String

权限版本号,创建自定义策略时,该字段值填为“1.1”。

说明:
  • 1.0:系统预置的角色。以服务为粒度,提供有限的服务相关角色用于授权。
  • 1.1:策略。IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。

Statement

Array of objects

授权语句,描述自定义策略的具体内容,不超过8个。

表5 role.policy.Statement

参数

是否必选

参数类型

描述

Action

Array of strings

授权项,指对资源的具体操作权限,不超过100个。

说明:
  • 格式为:服务名:资源类型:操作,例:vpc:ports:create。
  • 服务名为产品名称,例如ecs、evs和vpc等,服务名仅支持小写。 资源类型和操作没有大小写,要求支持通配符号*,无需罗列全部授权项。

Effect

String

作用。包含两种:允许(Allow)和拒绝(Deny),既有Allow又有Deny的授权语句时,遵循Deny优先的原则。

取值范围:

  • Allow
  • Deny

Condition

Object

限制条件。不超过10个。

说明:

以请求示例中的Condition为例:条件键(obs:prefix)和字符串(public)需相等(StringEquals)。

 "Condition": {
              "StringEquals": {
                "obs:prefix": [
                  "public"
                ]
              }
            }

Resource

Array of strings

资源。数组长度不超过10,每个字符串长度不超过128,规则如下:

说明:
  • 可填 * 的五段式:::::,例:"obs:::bucket:*"。
  • region字段为*或用户可访问的region。service必须存在且resource属于对应service。

响应参数

表6 响应Body参数

参数

参数类型

描述

role

Object

自定义策略信息。

表7 role

参数

参数类型

描述

catalog

String

自定义策略所在目录。

display_name

String

自定义策略展示名。

description

String

自定义策略的描述信息。

links

Object

自定义策略的资源链接信息。

policy

Object

自定义策略的具体内容。

description_cn

String

自定义策略的中文描述信息。

domain_id

String

自定义策略所属账号ID。

type

String

自定义策略的显示模式。

说明:
  • AX表示在domain层显示。
  • XA表示在project层显示。
  • 自定义策略的显示模式只能为AX或者XA,不能在domain层和project层都显示(AA),或者在domain层和project层都不显示(XX)。

id

String

自定义策略ID。

name

String

自定义策略名。

updated_time

String

自定义策略更新时间。

created_time

String

自定义策略创建时间。

references

String

自定义策略的引用次数。

表9 role.policy

参数

参数类型

描述

Version

String

权限版本号。

说明:
  • 1.0:系统预置的角色。以服务为粒度,提供有限的服务相关角色用于授权。
  • 1.1:策略。IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。

Statement

Array of objects

授权语句,描述自定义策略的具体内容,不超过8个。

表10 role.policy.Statement

参数

参数类型

描述

Action

Array of strings

授权项,指对资源的具体操作权限,不超过100个。

说明:
  • 格式为:服务名:资源类型:操作,例:vpc:ports:create。
  • 服务名为产品名称,例如ecs、evs和vpc等,服务名仅支持小写。 资源类型和操作没有大小写,要求支持通配符号*,无需罗列全部授权项。

Effect

String

作用。包含两种:允许(Allow)和拒绝(Deny),既有Allow又有Deny的授权语句时,遵循Deny优先的原则。

取值范围:

  • Allow
  • Deny

Condition

Map<String,Map<String,Array<String>>>

限制条件。不超过10个。

说明:

以请求示例中的Condition为例:条件键(obs:prefix)和字符串(public)需相等(StringEquals)。

 "Condition": {
              "StringEquals": {
                "obs:prefix": [
                  "public"
                ]
              }
            }

Resource

Array of strings

资源。数组长度不超过10,每个字符串长度不超过128,规则如下:

说明:
  • 可填 * 的五段式:::::,例:"obs:::bucket:*"。
  • region字段为*或用户可访问的region。service必须存在且resource属于对应service。

请求示例

POST https://sample.domain.com/v3.0/OS-ROLE/roles
{
    "role": {
        "display_name": "IAMCloudServicePolicy",
        "type": "AX",
        "description": "IAMDescription",
        "description_cn": "中文描述",
        "policy": {
            "Version": "1.1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "obs:bucket:GetBucketAcl"
                    ],
                    "Condition": {
                        "StringStartWith": {
                            "g:ProjectName": [
                                "example-west-1"
                            ]
                        }
                    },
                }
            ]
        }
    }
}

响应示例

状态码为 201 时:

创建成功。

{
    "role": {
        "catalog": "CUSTOMED",
        "display_name": "IAMCloudServicePolicy",
        "description": "IAMDescription",
        "links": {
            "self": "https://sample.domain.com/v3/roles/93879fd90f1046f69e6e0b31c94d2..."
        },
        "policy": {
            "Version": "1.1",
            "Statement": [
                {
                    "Action": [
                        "obs:bucket:GetBucketAcl"
                    ],
                    "Resource": [
                        "obs:*:*:bucket:*"
                    ],
                    "Effect": "Allow",
                    "Condition": {
                        "StringStartWith": {
                            "g:ProjectName": [
                                "example-west-1"
                            ]
                        }
                    }
                }
            ]
        },
        "description_cn": "中文描述",
        "domain_id": "d78cbac186b744899480f25bd...",
        "type": "AX",
        "id": "93879fd90f1046f69e6e0b31c9...",
        "name": "custom_d78cbac186b744899480f25bd022f468_1"
    }
}

返回值

返回值

描述

201

创建成功。

400

参数无效。

401

认证失败。

403

没有操作权限。

500

内部服务错误。

错误码