
# 创建IAM身份中心自定义策略
如果系统预置的IAM身份中心权限，不满足您的授权要求，可以创建自定义策略。
目前华为云支持以下两种方式创建自定义策略：
- 可视化视图创建自定义策略：无需了解策略语法，按可视化视图导航栏选择云服务、操作、资源、条件等策略内容，可自动生成策略。
- JSON视图创建自定义策略：可以在选择策略模板后，根据具体需求编辑策略内容；也可以直接在编辑框内编写JSON格式的策略内容。
具体创建步骤请参见：[创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。本章为您介绍常用的IAM身份中心自定义策略样例。
#### IAM身份中心自定义策略样例
- 示例1：授权用户创建权限集
  ```
  {
      "Version": "1.1",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "IdentityCenter:permissionSet:create"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "organizations:delegatedAdministrators:list"
              ]
          }
      ]
  }
  ```
  
- 示例2：拒绝用户删除权限集 拒绝策略需要同时配合其他策略使用，否则没有实际作用。用户被授予的策略中，一个授权项的作用如果同时存在Allow和Deny，则遵循**Deny优先原则**。
  如果您给用户授予IdentityCenter FullAccess的系统策略，但不希望用户拥有IdentityCenter FullAccess中定义的删除权限集权限，您可以创建一条拒绝删除权限集的自定义策略，然后同时将IdentityCenter FullAccess和拒绝策略授予用户，根据Deny优先原则，则用户可以对IAM身份中心执行除了删除权限集外的所有操作。拒绝策略示例如下：
  ```
  {
      "Version": "1.1",
      "Statement": [
          {
              "Effect": "Deny",
              "Action": [
                  "IdentityCenter:permissionSet:delete"
              ]
          }
      ]
  }
  ```
  
- 示例3：多个授权项策略 一个自定义策略中可以包含多个授权项，且除了可以包含本服务的授权项外，还可以包含其他服务的授权项，可以包含的其他服务必须跟本服务同属性，即都是项目级服务或都是全局级服务。多个授权语句策略描述如下：
  ```
  {
      "Version": "1.1",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "IdentityCenter:permissionSet:delete",
                  "IdentityCenter:user:create",
                  "IdentityCenter:permissionSet:create"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "organizations:delegatedAdministrators:list"
              ]
          }
      ]
  }
  ```
  
 
#### IAM身份中心自定义身份策略样例
如果系统预置的IAM身份中心系统身份策略，不满足您的授权要求，可以创建自定义身份策略。自定义身份策略中可以添加的授权项（Action）请参考《IAM身份中心API参考》的"身份策略授权参考"章节。
目前华为云支持以下两种方式创建自定义身份策略：
- 可视化视图创建自定义身份策略：无需了解策略语法，按可视化视图导航栏选择云服务、操作、资源、条件等策略内容，可自动生成策略。
- JSON视图创建自定义身份策略：可以在选择策略模板后，根据具体需求编辑策略内容；也可以直接在编辑框内编写JSON格式的策略内容。
具体创建步骤请参见：[创建自定义身份策略并附加至主体](https://support.huaweicloud.com/usermanual-iam5/iam_01_0917.html)。
您可以在创建自定义身份策略时，可以通过资源类型（Resource）元素来选择特定资源，以及条件键（Condition）元素来控制策略何时生效。支持的资源类型和条件键请参考《IAM身份中心API参考》的"身份策略授权参考"章节。
- 自定义身份策略结构： 如选择"特定资源"可以单击"通过资源路径指定"来指定需要授权的资源。
  身份策略结构包括Version（身份策略版本号）和Statement（身份策略权限语句）两部分，其中Statement可以有多个，表示不同的授权项。
  图1策略结构   
  ![](https://support.huaweicloud.com/usermanual-identitycenter/zh-cn_image_0000002480783208.png "点击放大")
  身份策略参数包含Version和Statement两部分，下面介绍身份策略参数详细说明。了解身份策略参数后，您可以根据场景自定义身份策略，如[表1]。身份策略是由JSON元素组成，例如Version、Statement、Sid、Effect、Action、Condition、Resource元素等，如需了解这些元素的更多信息，请参见[JSON元素参考](https://support.huaweicloud.com/usermanual-iam5/iam_01_1289.html)。
   表1身份策略参数说明 
  | 参数                                                                     || 含义                                                                                                                                                                       | 值                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  |:---|---|:---|:---|
  | Version                                                                || 身份策略的版本。                                                                                                                                                                 | 固定为5.0，不支持修改：代表身份策略JSON语法的版本号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
  | Statement： 身份策略的授权语句 | Sid：语句ID             | Sid（Statement ID）表示语句的可选标识符。                                                                                                                                             | 为一个由零个或多个字符组成的字符串。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
  | Statement： 身份策略的授权语句 | Effect：作用            | 定义Action中的操作权限是否允许执行。                                                                                                                                                    | - Allow：允许执行。  - Deny：不允许执行。   说明： 当同一个Action的Effect既有Allow又有Deny时，遵循Deny优先的原则。                                                                                                                                                                                                                                                                                                                |
  | Statement： 身份策略的授权语句 | Action/NotAction：授权项 | 操作权限。                                                                                                                                                                    | 格式为"服务名:资源类型:操作"。授权项支持\*和?，\*表示任意个字符，?表示恰好一个字符。Action/NotAction不区分大小写。Action表示匹配列表中的所有授权项，NotAction表示匹配列表之外的所有授权项。 示例： "obs:bucket:listAllMyBuckets"：表示查看OBS桶列表权限，其中obs为服务名，bucket为资源类型，listAllMybuckets为操作。 您可以打开[身份策略授权参考](https://support.huaweicloud.com/usermanual-permissions/iam_01_0003.html)，导航至云服务的的"操作"小节，查看该服务所有授权项。                                                                                                                                                           |
  | Statement： 身份策略的授权语句 | Resource: 资源类型       | 身份策略所作用的资源。                                                                                                                                                              | 资源类型用资源URN表示，格式为"\<service-name\>:\<region\>:\<account-id\>:\<type-name\>:\<resource-path\>", 资源URN支持\*和?，\*表示任意个字符，?表示恰好一个字符。Resource不区分大小写。资源URN详情可参见[使用URN标识华为云资源](https://support.huaweicloud.com/usermanual-iam5/iam_01_1275.html)。 示例： - "obs:\*:\*:bucket:\*": 表示所有的OBS桶。  - "obs:\*:\*:object:my-bucket/my-object/\*": 表示my-bucket桶my-object目录下的所有对象。   |
  | Statement： 身份策略的授权语句 | Condition：条件         | 使身份策略生效的特定条件，包括[条件键](https://support.huaweicloud.com/usermanual-iam5/iam_01_1287.html)和[运算符](https://support.huaweicloud.com/usermanual-iam5/iam_01_1289.html#section8)。 | 格式为"运算符:{条件键：\[条件值1,条件值2\]}"。其中，条件键不区分大小写。 如果您设置多个条件，同时满足所有条件时，该身份策略才生效。 示例: "StringEndWithIfExists":{"g:UserName":\["specialCharacter"\]}：表示当用户输入的用户名以"specialCharacter"结尾时该条statement生效。                                                                                                                                                                                                                                                                                                 |
     
  
下面为您介绍常用的IAM身份中心自定义身份策略样例。
- 示例1：授权用户创建权限集
  ```
  {
      "Version": "5.0",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "IdentityCenter:permissionSet:create"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "organizations:delegatedAdministrators:list"
              ]
          }
      ]
  }
  ```
  

- 示例2：多个授权项策略 一个自定义身份策略中可以包含多个授权项，且除了可以包含本服务的授权项外，还可以包含其他服务的授权项。多个授权语句策略描述如下：
  ```
  {
      "Version": "5.0",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "IdentityCenter:permissionSet:create",
                  "IdentityCenter:permissionSet:delete",
                  "IdentityCenter:user:create",
                  "IdentityCenter:user:delete"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "organizations:delegatedAdministrators:list"
              ]
          }
      ]
  }
  ```
  
 
#### IAM身份中心资源
资源是服务中存在的对象。在IAM身份中心中，资源包括：account，instance和permissionSet，您可以在创建自定义策略时，通过指定资源路径来选择特定资源。
表2IAM身份中心的指定资源与对应路径 
| 指定资源          | 资源名称   | 资源路径                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| account       | 账号URN  | 【格式】 IdentityCenter::\<manage-account-id\>:account:\<account-id\> 【说明】 \<manage-account-id\>：组织服务管理员账号ID。 \<account-id\>：组织中的账号ID 资源示例： IdentityCenter::06e32776ef59452bbc9cfef8a1eec4e9:account:06e32776ef59452bbc9cfef8a1eec412                                                                                                                |
| instance      | 实例URN  | 【格式】 IdentityCenter::\<manage-account-id\>:instance:\<instance-id\> 【说明】 \<manage-account-id\>：组织服务管理员账号ID。 \<instance-id\>：开通的IAM身份中心实例ID 资源示例： IdentityCenter::06e32776ef59452bbc9cfef8a1eec4e9:instance:ins-ddef0bf9de2fc696                                                                                                               |
| permissionSet | 权限集URN | 【格式】 IdentityCenter::\<manage-account-id\>:permissionSet:\<instance-id\>/\<permission-set-id\> 【说明】 \<manage-account-id\>：组织服务管理员账号ID。 \<instance-id\>：开通的IAM身份中心实例ID \<permission-set-id\>：IAM身份中心中的权限集ID 资源示例： IdentityCenter::06e32776ef59452bbc9cfef8a1eec4e9:permissionSet:ins-ddef0bf9de2fc696/ps-44c2fe52a90b7230 |
   
