You need to enable JavaScript to run this app.
导航

IAM策略语法

最近更新时间2024.03.25 11:04:11

首次发布时间2024.03.25 11:04:11

本文为您介绍IAM自定义策略的语法结构及其组成元素,帮助您更快了解、快速上手创建所需的自定义策略。

权限策略通用语法

权限策略支持JSON格式,其通用语法句式如下:

{
  "Statement": [
    {
      "Effect": "<Effect>",
      "Action": [
	      "<Action>"
	      ],
      "Resource": [
        "<Resource>"
      ],
      "Condition": {
        "<Condition_operator>": {
          "<Condition_key>": [
            "<Condition_value>"
          ]
        }
      }
    }
  ]
}

策略语法字段说明

权限声明(Statement)

Statement是策略中描述权限基本单元,称为权限声明,每条策略可包含多条权限声明,以数组形式表达。

  • 一条策略至少包含一则权限声明,单则声明用{ }包含,全部声明使用数组符号[ ]包含在Statement元素内,最外层的使用{ }包含,代表一个完整的策略。
  • 不同策略内的不同权限声明以及相同策略内的不同权限声明均有相同优先级的效力。
  • 更多Statement元素的介绍,请参见 权限声明(Statement)

示例:如下是一条包含2则权限声明的策略:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "vpc:TagResources"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:TagResources"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

效果(Effect)

Effect是每则策略声明的必需元素,包含着这条权限声明的作用效果是允许(Allow)还是显式拒绝(Deny)。

  • Deny的优先级高于Allow,当身份对某些操作存在Deny权限时,再次赋予这些操作的Allow权限将无法生效,需要将相应的Deny声明去除或更改为Allow。
  • 更多Effect元素的介绍,请参见效果(Effect)

示例:如下这条策略最终效果仍然是拒绝:

{
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "vpc:TagResources"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "vpc:TagResources"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

操作(Action)

Action是每则策略声明的必需元素,包含着这条权限声明定义的操作范围。

  • 元素基本格式为${ServiceCode}:${Action}
    • ${ServiceCode}为云产品的服务代码,弹性伸缩的ServiceCode为auto_scaling
    • ${Action}通常与云服务API的Action同值,弹性伸缩API信息请参见API列表。可以数组形式表达多个操作,支持*?两种通配符。
      • 通配符*:匹配0个、1个或多个字符。
      • 通配符?:匹配一个字符(不能为0个)。
  • 更多Action元素的介绍,请参见 操作(Action)

示例:如下是一条包含具体云服务Action及使用了通配符的策略。

  • 第一则声明定义了允许VPN连接的全部操作权限。
  • 第二则声明定义了允许访问控制(IAM)查询用户列表和查询用户详情两项操作的权限。
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "vpn:*"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:ListUsers",
        "iam:GetUser"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

资源 (Resource)

弹性伸缩为运维管理类产品,非资源类产品,因此不涉及本元素。更多Resource元素的介绍,请参见资源(Resource)

条件(Condition)

Condition是策略语法中的可选元素,定义了权限声明的生效条件。

  • 元素语法:策略中单条Condition由Operator、Condition Key、Condition Value三个部分组成。
  • 更多Condition元素的介绍,请参见条件(Condition)

示例:如下是一条带有Condition的策略示例。

  • 该策略中Condition的Operator为IpAddress,Condition Key为volc:SourceIp,Condition Value为210.22.XX.XX
  • 该策略表示限制仅能从IP地址210.22.XX.XX中访问应用型负载均衡的全部操作。
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "alb:*"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "IpAddress": {
          "volc:SourceIp":"210.22.XX.XX"
        }
      }
    }
  ]
}