
# 身份策略语法
下面以OBS的自定义身份策略为例，说明身份策略的语法。
```
{
  "Version": "5.0",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "obs:bucket:getBucketLocation",
        "obs:bucket:headBucket",
        "obs:bucket:listAllMyBuckets",
        "obs:bucket:listBucket"
      ],
      "Condition": {
        "StringEndWithIfExists": {
          "g:UserName": [
            "specialCharacter"
          ]
        },
        "Bool": {
          "g:MFAPresent": [
            "true"
          ]
        }
      }
    }
  ]
}
```
![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/note_3.0-zh-cn.png)
当您使用IAM控制台创建或编辑身份策略时，IAM会自动检查它们，以确保它们符合身份策略语法。如果IAM确定身份策略不符合语法，则会提示您进行修复。
IAM访问分析器（IAM Access Analyzer，IAA）还提供额外的身份策略检查和建议，以帮助您进一步优化身份策略。要了解有关IAM访问分析器的策略检查和可执行建议的更多信息，请参考[IAM Access Analyzer策略验证](https://support.huaweicloud.com/usermanual-iam5/iam_07_1015.html)。
#### 身份策略结构
身份策略结构包括Version（身份策略版本号）和Statement（身份策略权限语句）两部分，其中Statement可以有多个，表示不同的授权项。
图1策略结构   
![](https://support.huaweicloud.com/usermanual-iam5/zh-cn_image_0000001689222898.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#iam_01_1289__table598121418194)。 | 格式为"运算符:{条件键：\[条件值1,条件值2\]}"。其中，条件键不区分大小写。 如果您设置多个条件，同时满足所有条件时，该身份策略才生效。 示例: "StringEndWithIfExists":{"g:UserName":\["specialCharacter"\]}：表示当用户输入的用户名以"specialCharacter"结尾时该条statement生效。                                                                                                                                                                                                                                                                                                 |
   
#### 相关文档
- [JSON元素参考](https://support.huaweicloud.com/usermanual-iam5/iam_01_1289.html)
- [策略语法](https://support.huaweicloud.com/usermanual-iam5/iam_01_1291.html)
- [服务授权参考](https://support.huaweicloud.com/service-authorization-iam5/iam_01_0002.html)
 
