更新时间:2025-09-25 GMT+08:00
分享

身份策略语法

下面以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"
          ]
        }
      }
    }
  ]
}

当您使用IAM控制台创建或编辑身份策略时,IAM会自动检查它们,以确保它们符合身份策略语法。如果IAM确定身份策略不符合语法,则会提示您进行修复。

IAM访问分析器(IAM Access Analyzer,IAA)还提供额外的身份策略检查和建议,以帮助您进一步优化身份策略。要了解有关IAM访问分析器的策略检查和可执行建议的更多信息,请参考IAM Access Analyzer策略验证

身份策略结构

身份策略结构包括Version(身份策略版本号)和Statement(身份策略权限语句)两部分,其中Statement可以有多个,表示不同的授权项。

图1 策略结构

身份策略参数

身份策略参数包含Version和Statement两部分,下面介绍身份策略参数详细说明。了解身份策略参数后,您可以根据场景自定义身份策略,如表1。身份策略是由JSON元素组成,例如Version、Statement、Sid、Effect、Action、Condition、Resource元素等,如需了解这些元素的更多信息,请参见JSON元素参考

表1 身份策略参数说明

参数

含义

Version

身份策略的版本。

固定为5.0,不支持修改:代表身份策略JSON语法的版本号。

Statement:

身份策略的授权语句

Sid:语句ID

Sid(Statement ID)表示语句的可选标识符。

为一个由零个或多个字符组成的字符串。

Effect:作用

定义Action中的操作权限是否允许执行。

  • Allow:允许执行。
  • Deny:不允许执行。
说明:

当同一个Action的Effect既有Allow又有Deny时,遵循Deny优先的原则。

Action/NotAction:授权项

操作权限。

格式为“服务名:资源类型:操作”。授权项支持*和?,*表示任意个字符,?表示恰好一个字符。Action/NotAction不区分大小写。Action表示匹配列表中的所有授权项,NotAction表示匹配列表之外的所有授权项。

示例:

"obs:bucket:listAllMyBuckets":表示查看OBS桶列表权限,其中obs为服务名,bucket为资源类型,listAllMybuckets为操作。

您可以打开身份策略授权参考,导航至云服务的的“操作”小节,查看该服务所有授权项。

Resource: 资源类型

身份策略所作用的资源。

资源类型用资源URN表示,格式为“<service-name>:<region>:<account-id>:<type-name>:<resource-path>”, 资源URN支持*和?,*表示任意个字符,?表示恰好一个字符。Resource不区分大小写。资源URN详情可参见使用URN标识华为云资源

示例:

  • "obs:*:*:bucket:*": 表示所有的OBS桶。
  • "obs:*:*:object:my-bucket/my-object/*": 表示my-bucket桶my-object目录下的所有对象。

Condition:条件

使身份策略生效的特定条件,包括条件键运算符

格式为“运算符:{条件键:[条件值1,条件值2]}”。其中,条件键不区分大小写。

如果您设置多个条件,同时满足所有条件时,该身份策略才生效。

示例:

"StringEndWithIfExists":{"g:UserName":["specialCharacter"]}:表示当用户输入的用户名以"specialCharacter"结尾时该条statement生效。

相关文档