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

基本结构

最近更新时间2024.04.16 11:58:57

首次发布时间2021.02.23 10:42:33

IAM策略分为基于身份的策略和基于资源的策略。

说明

您可参考自定义策略示例了解常用场景的策略语法。

基于身份的策略

与IAM身份(用户、用户组或角色)绑定的策略称为”基于身份的策略“,一般而言,大部分场景仅需使用基于身份的策略。

示例1:以下是一条基于身份的策略,定义了允许对应用型负载均衡进行部分操作:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "alb:CreateListener",
        "alb:DeleteListener",
        "alb:ModifyListener",
        "alb:DescribeListener",
        "alb:DescribeListenerAttributes",
        "alb:DescribeListenerHealth"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

示例2:以下策略定义了允许删除用户组名为example-group的IAM用户组的权限:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:DeleteGroup"
      ],
      "Resource": [
        "trn:iam::2000000001:group/example-group"
      ]
    }
  ]
}

示例3:以下策略基于示例1,进一步增加了Condition元素,限制了可访问的时间(该元素的使用说明具体可参考Condition说明文档):

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "alb:CreateListener",
        "alb:DeleteListener",
        "alb:ModifyListener",
        "alb:DescribeListener",
        "alb:DescribeListenerAttributes",
        "alb:DescribeListenerHealth"
      ],
      "Resource": [
        "*"
      ]
      "Condition": {
         "DateGreaterThanEquals": {
           "volc:CurrentTime":"2023-08-30T23:59:59Z"
         }
       }
    }
  ]
}

基于身份的策略包含以下元素:

元素是否必须格式示例说明

Statement

"Statement": [{...}]

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

Effect

"Effect": "Allow"

Effect定义了权限效果是允许(Allow)还是拒绝(Deny)。详细说明可参考Effect说明文档

Action

"Action": [
    "alb:CreateListener",
    "alb:DeleteListener",
    "alb:ModifyListener",
    "alb:DescribeListener",
    "alb:DescribeListenerAttributes",
    "alb:DescribeListenerHealth"
]

Action定义了权限的操作范围,不同云服务支持的Action可从云服务的API文档中查询。详细说明可参考Action说明文档

Resource

"Resource": ["*"]

Resource定义了权限的资源范围,当无需控制资源级别权限时,可使用通配符*来表示全部资源。如需定义具体的资源级权限,可参考Resource说明文档

Condition

"Condition": {
    "DateGreaterThanEquals": {
        "volc:CurrentTime":"2023-08-30T23:59:59Z"
    }
}

Condition定义了权限的生效条件,当无需控制具体的生效条件时,策略中可不包含Condition部分。如需定义具体的权限生效条件,可参考Condition说明文档

基于资源的策略

在某些场景,策略可与资源进行绑定(而非与身份绑定),这类策略称为”基于资源的策略“。在基于资源的策略中,因为缺少与身份的绑定关系,因此策略内容中必须包含Principal元素,同时因为基于资源的策略天然拥有与资源的绑定关系,因此策略中Resource元素无需定义。

以下是一条基于资源的策略示例:

{
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Principal": {
                "Service": [
                    "vke"
                ]
            }
        }
    ]
}

基于资源的策略包含以下元素:

元素是否必须格式示例说明

Statement

"Statement": [{...}]

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

Effect

"Effect": "Allow"

Effect定义了权限效果是允许(Allow)还是拒绝(Deny)。详细说明可参考Effect说明文档

Action

"Action": [
    "sts:AssumeRole"
]

Action定义了权限的操作范围,不同云服务支持的Action可从云服务的API文档中查询。详细说明可参考Action说明文档

Principal

"Principal": {
    "Service": [
        "vke"
    ]
}

Principal定义了权限的信任对象,详细说明可参考Principal说明文档。示例中信任对象为vke服务,代表授予服务进行角色扮演(AssumeRole)。

Condition

"Condition": {
    "DateGreaterThanEquals": {
        "volc:CurrentTime":"2023-08-30T23:59:59Z"
    }
}

Condition定义了权限的生效条件,当无需控制具体的生效条件时,策略中可不包含Condition部分。如需定义具体的权限生效条件,可参考Condition说明文档

目前火山引擎支持以下两种资源使用基于资源的策略:

  • 访问控制角色: 角色上基于资源的策略也称为信任策略(Trust policy)。

  • 对象存储桶: 存储桶上基于资源的策略也称为桶策略