
# 创建委托自定义策略 - CreateAgencyCustomPolicy
#### 功能介绍
该接口可以用于++[管理员](https://support.huaweicloud.com/usermanual-iam/iam_01_0001.html)++ 创建委托自定义策略。
该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见：[地区和终端节点](https://developer.huaweicloud.com/endpoint?IAM)。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IAM/doc?api=CreateAgencyCustomPolicy)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-iam/iam_19_0001.html)。
#### URI
POST /v3.0/OS-ROLE/roles
#### 请求参数
表1请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                             |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 该字段内容填为"application/json;charset=utf8"。                                                                                        |
| X-Auth-Token | 是    | String | 访问令牌，承载用户的身份、权限等信息。 token所需权限请参见[授权项](https://support.huaweicloud.com/api-iam/iam_19_0001.html)。 |
   
表2请求Body参数 
| 参数                                                             | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| [role] | 是    | Object | 自定义策略信息。 |
   
 表3role 
| 参数                                                                     | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| display_name                                                           | 是    | String | 自定义策略展示名，长度1\~128字符之间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| type                                                                   | 是    | String | 自定义策略的显示模式。 说明： - AX：全局服务。  - XA：区域级项目。  - 自定义策略的显示模式只能为AX或者XA，不能同时在全局服务和区域级项目生效（AA），或者在全局服务和区域级项目都不生效（XX）。   |
| description                                                            | 是    | String | 自定义策略的描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| description_cn                                                         | 否    | String | 自定义策略的中文描述信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| [policy] | 是    | Object | 自定义策略的具体内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
 表4role.policy 
| 参数                                                                                        | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| Version                                                                                   | 是    | String           | 权限版本号，创建自定义策略时，该字段值填为"1.1"。 说明： - 1.0：系统预置的角色。以服务为粒度，提供有限的服务相关角色用于授权。  - 1.1：策略。IAM最新提供的一种细粒度授权的能力，可以精确到具体服务的操作、资源以及请求条件等。   |
| [Statement] | 是    | Array of objects | 授权语句，描述自定义策略的具体内容。                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
 表5role.policy.Statement 
| 参数                                                                                               | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| Action                                                                                           | 是    | Array of strings | 授权项，指对资源的具体操作权限。支持的授权项请参考各云服务《API参考》中"权限和授权项"章节。 说明： - 当自定义策略为委托自定义策略时，该字段值为：*"Action": \["iam:tokens:assume"\]*。   取值范围： - iam:tokens:assume   |
| Effect                                                                                           | 是    | String           | 作用。包含两种：允许（Allow）和拒绝（Deny），既有Allow又有Deny的授权语句时，遵循Deny优先的原则。 取值范围： - Allow  - Deny                                                                                                               |
| [Resource] | 否    | Object           | 委托资源。在有其他账号与您创建了多个委托关系，即您是被委托方，需要将委托中的权限授权给不同的用户组，这些用户组中的IAM用户进行角色切换时，仅能切换到被授权的委托中，不能切换其他委托。例： ``` "Resource": {"uri": ["/iam/agencies/agencyTest"]} ```                                                                                                                                                                                                                                                                                                                                                                    |
   
 表6role.policy.Statement.Resource 
| 参数  | 是否必选 | 参数类型             | 描述                                                                                                                                             |
|:---|:---|:---|:---|
| uri | 是    | Array of strings | 委托资源的URI，长度不超过128。格式为：/iam/agencies/委托Name。例： ``` "uri": ["/iam/agencies/agencyTest"] ``` |
   
#### 响应参数
表7响应Body参数 
| 参数                                                              | 参数类型   | 描述       |
|:---|:---|:---|
| [role] | Object | 自定义策略信息。 |
   
 表8role 
| 参数                                                                      | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| 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。                                                                                                                                                                                                                                                                          |
   
 表9role.links 
| 参数   | 参数类型   | 描述      |
|:---|:---|:---|
| self | String | 资源链接地址。 |
   
 表10role.policy 
| 参数                                                                                         | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|
| Version                                                                                    | String           | 权限版本号。 说明： - 1.0：系统预置的角色。以服务为粒度，提供有限的服务相关角色用于授权。  - 1.1：策略。IAM最新提供的一种细粒度授权的能力，可以精确到具体服务的操作、资源以及请求条件等。   |
| [Statement] | Array of objects | 授权语句，描述自定义策略的具体内容。                                                                                                                                                                                                                                                                                                                                                                                                                |
   
 表11role.policy.Statement 
| 参数                                                                                                | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| Action                                                                                            | Array of strings | 授权项，指对资源的具体操作权限。支持的授权项请参考各云服务《API参考》中"权限和授权项"章节。 说明： - 当自定义策略为委托自定义策略时，该字段值为：*"Action": \["iam:tokens:assume"\]*。                                                                                                                                  |
| Effect                                                                                            | String           | 作用。包含两种：允许（Allow）和拒绝（Deny），既有Allow又有Deny的授权语句时，遵循Deny优先的原则。 取值范围： - Allow  - Deny   |
| [Resource] | Object           | 委托资源，仅在创建请求中传递此字段，才会返回此对象。在有其他账号与您创建了多个委托关系，即您是被委托方，需要将委托中的权限授权给不同的用户组，这些用户组中的IAM用户进行角色切换时，仅能切换到被授权的委托中，不能切换其他委托。例： ``` "Resource": {"uri": ["/iam/agencies/agencyTest"]} ```                                                                                                                                                                                                                                       |
   
 表12role.policy.Statement.Resource 
| 参数  | 参数类型             | 描述                                                                                                                                             |
|:---|:---|:---|
| uri | Array of strings | 委托资源的URI，长度不超过128。格式为：/iam/agencies/委托Name。例： ``` "uri": ["/iam/agencies/agencyTest"] ``` |
   
#### 请求示例
创建一个名为"IAMAgencyPolicy"的委托自定义策略。策略表示作用范围为全局服务，委托资源的URI是/iam/agencies/agencyTest。
```
POST https://iam.myhuaweicloud.com/v3.0/OS-ROLE/roles
```
```
{
    "role": {
        "display_name": "IAMAgencyPolicy",
        "type": "AX",
        "description": "IAMDescription",
        "description_cn": "中文描述",
        "policy": {
            "Version": "1.1",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "iam:tokens:assume"
                    ],
                    "Resource": {
                        "uri": [
                            "/iam/agencies/agencyTest"
                        ]
                    }
                }
            ]
        }
    }
}
```
#### 响应示例
**状态码为 201 时:**
创建成功。
```
{
    "role": {
        "catalog": "CUSTOMED",
        "display_name": "IAMAgencyPolicy",
        "description": "IAMDescription",
        "links": {
            "self": "https://iam.myhuaweicloud.com/v3/roles/f67224e84dc849ab954ce29fb4f47f8e"
        },
        "policy": {
            "Version": "1.1",
            "Statement": [
                {
                    "Action": [
                        "iam:tokens:assume"
                    ],
                    "Resource": {
                        "uri": [
                            "/iam/agencies/agencyTest"
                        ]
                    },
                    "Effect": "Allow"
                }
            ]
        },
        "description_cn": "中文描述",
        "domain_id": "d78cbac186b744899480f25bd02...",
        "type": "AX",
        "id": "f67224e84dc849ab954ce29fb4f47f8e",
        "name": "custom_d78cbac186b744899480f25bd022f468_0"
    }
}
```
#### 返回值
| 返回值 | 描述      |
|:---|:---|
| 201 | 创建成功。   |
| 400 | 参数无效。   |
| 401 | 认证失败。   |
| 403 | 没有操作权限。 |
| 500 | 内部服务错误。 |
   
#### 错误码
无
