更新时间:2024-11-18 GMT+08:00

创建云服务自定义策略

功能介绍

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

该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见:地区和终端节点

调试

您可以在API Explorer中调试该接口。

URI

POST /v3.0/OS-ROLE/roles

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

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

X-Auth-Token

String

访问令牌,承载用户的身份、权限等信息。

token所需权限请参见授权项

表2 请求Body参数

参数

是否必选

参数类型

描述

role

Object

自定义策略信息。

表3 role

参数

是否必选

参数类型

描述

display_name

String

自定义策略展示名。

type

String

自定义策略的作用范围。

  • 全局服务:AX
  • 区域级项目:XA

自定义策略的显示模式只能为AX或者XA,不能同时在全局服务和区域级项目生效(AA),或者在全局服务和区域级项目都不生效(XX)。

说明:
  • 如果您需要给用户组授予包含OBS操作的自定义策略,请分别创建作用范围为全局服务、区域级项目,其他参数相同的2个自定义策略,并将2个策略同时授予用户组。
  • 为保障最小授权范围,建议OBS自定义策略中不要包含其他云服务授权项。

description

String

自定义策略的描述信息。

description_cn

String

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

policy

Object

自定义策略的具体内容。

表4 role.policy

参数

是否必选

参数类型

描述

Version

String

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

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

Statement

Array of objects

授权语句,描述自定义策略的具体内容。

表5 role.policy.Statement

参数

是否必选

参数类型

描述

Action

Array of strings

授权项,指对资源的具体操作权限。支持的授权项请参考各云服务《API参考》中“权限和授权项”章节。

说明:
  • 格式为:服务名:资源类型:操作,例:vpc:ports:create。
  • 服务名为产品名称,例如ecs、evs和vpc等,服务名仅支持小写。 资源类型和操作没有大小写,要求支持通配符号*,无需罗列全部授权项。
  • 一个自定义策略role.policy.Statement不能同时包含项目级服务和全局服务的action。查看服务权限作用范围请参考:系统权限

Effect

String

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

取值范围:

  • Allow
  • Deny

Condition

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

限制条件。了解更多相关参数,请参考:配置自定义策略

说明:

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

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

Resource

Array of strings

资源。规则如下:

说明:
  • 可填 * 的五段式:::::,例:"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

自定义策略的中文描述信息,仅在请求中传入了description_cn参数,响应体中才会返回此字段。

domain_id

String

自定义策略所属账号ID。

type

String

自定义策略的显示模式。

说明:
  • AX:全局服务。
  • XA:区域级项目。
  • 自定义策略的显示模式只能为AX或者XA,不能同时在全局服务和区域级项目生效(AA),或者在全局服务和区域级项目都不生效(XX)。

id

String

自定义策略ID。

name

String

自定义策略名。

updated_time

String

自定义策略更新时间。

说明:

UNIX时间戳格式,单位是毫秒,时间戳格式如:1687913793000。

created_time

String

自定义策略创建时间。

说明:

UNIX时间戳格式,单位是毫秒,时间戳格式如:1687913793000。

表9 role.policy

参数

参数类型

描述

Version

String

权限版本号。

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

Statement

Array of objects

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

表10 role.policy.Statement

参数

参数类型

描述

Action

Array of strings

授权项,指对资源的具体操作权限。

Effect

String

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

取值范围:

  • Allow
  • Deny

Condition

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

限制条件,如果请求中未传入此字段,则返回结果中也无此字段。

Resource

Array of strings

资源,如果请求中未传入此字段,则返回结果中也无此字段。规则如下:

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

请求示例

创建一个名为“IAMCloudServicePolicy”的自定义策略。策略表示仅允许以项目名称为“ap-southeast-1”开头的请求获取所有桶ACL的相关信息。

POST https://iam.myhuaweicloud.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": [
                                "ap-southeast-1"
                            ]
                        }
                    },
                    "Resource": [
                        "obs:*:*:bucket:*"
                    ]
                }
            ]
        }
    }
}

响应示例

状态码为 201 时:

创建成功。

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

返回值

返回值

描述

201

创建成功。

400

参数无效。

401

认证失败。

403

没有操作权限。

500

内部服务错误。

错误码