全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

权限策略语法和结构

最近更新时间:2025-12-22 16:57:36

本文介绍IAM中权限策略的语法和结构,帮助您正确理解权限策略语法,以完成创建或更新权限策略。

前提条件

运用策略语法前,您应了解策略字符及其使用规则。

1. 权限策略字符如下:

  • 权限策略中所包含的JSON字符:{ } [ ] " , :

  • 描述语法使用的特殊字符:= < > ( ) |

2. 字符使用规则如下:

  • 当一个元素允许多值时,可以使用下述两种方式表达,效果相同。

  • 使用半角逗号(,)和省略号(…)进行表达。例如:[ <action_string>, <action_string>, ...]

  • 使用单值进行表达。例如:"Action": [<action_string>] 和 "Action": <action_string>

  • 元素带有半角问号(?)表示此元素是一个可选元素。例如:<condition_block?>

  • 多值之间用竖线(|)隔开,表示取值只能选取这些值中的某一个。例如:("Allow" | "Deny")

  • 使用双引号("")的元素,表示此元素是文本串。例如:<version_block> = "Version" : ("1")

权限策略元素解析

1. 使用元素及规则

元素名称

是否必须

描述

Version(版本)

形如"Version":"2015-11-01",用于说明策略文档的版本。
目前金山云的策略文档版本只有一个取值,2015-11-01,如果策略中没有Version元素,其默认值为2015-11-01

Statement(授权规则)

形如"Statement":[{...},{...},{...}],策略的主元素,用于说明具体授权规则。
每个Statement元素可以包含多条语句,每条语句用{}括起来说明。

Sid

形如"Sid":"1",Statement的语句标识符,可被省略,在一个策略中需要保持唯一性。

Effect(效力)

形如"Effect":"Allow",Statement的授权规则的组成元素,每条授权规则必须包括该元素
(1)只有两种取值Allow或者Deny,分别表明“显示授权”和“显示拒绝”。
(2)权限策略中既有允许(Allow)又有拒绝(Deny)的授权语句时,遵循Deny优先的原则。

Action(操作)

形如"Action":"iam:CreateUser",Statement的授权规则的组成元素,每条授权规则必须包括该元素。
(1)操作支持多值,取值为:云服务所定义的API操作名称。
(2)格式::,其中service-name是金山云服务名称,而、action-name是相关API操作接口名称。
(3)service-name和action-name的值不区分大小写,操作名称可以包含通配符*

支持格式:

  • 单个操作:["iam:GetUser"]

  • 多个操作:["iam:GetUser", "iam:ListUsers"]

通配符支持:

  • "iam:*" - IAM 的所有操作

  • "*" - 所有服务的所有操作

  • "iam:List*" - IAM 所有 List 开头的操作

示例:

"Action": [
    "iam:GetUser",          // 单个操作
    "iam:List*",            // List 开头的所有操作
    "iam:*",                // IAM 所有操作
    "*"                     // 所有操作
]

Resource(资源)

形如"Resource":"KRN",Resource是被授权的具体资源对象。
(1)每种service的resource各不相同,可以使用*来表示全体资源对象。
(2)同时也遵金山云KRN的统一命名规范,详细格式请查看金山云KRN.

通配符支持:

  • * - 匹配所有资源

  • krn:ksc:iam:::user/* - 匹配所有用户

  • krn:ksc:iam:::user/test-* - 匹配 test- 开头的用户(通配符只能在末尾)

示例:

"Resource": [
    "krn:ksc:iam:::user/fengyikai",      // 特定用户
    "krn:ksc:iam:::user/*",              // 所有用户
    "krn:ksc:iam:::user/test-*",         // test- 开头的用户
    "krn:ksc:iam:::policy/MyPolicy",     // 特定策略
    "*"                                   // 所有资源
]

Condition(条件)

条件运算符用于指定策略生效的附加约束条件。

基本结构:

"Condition": {
    "{运算符}": {
        "{条件键}": [值1, 值2, ...]
    }
}

2. 策略语法说明

  • 每个策略文档可以包含多条策略语句

  • 每个策略组成元素中包含的同名称元素不能重复,只能出现一次,比如不能在一个策略语句中出现两次Effect元素块

  • 策略文档中各元素块的显示顺序无限制

  • 策略文档中的白空格(whiteSpace)被忽略

权限策略结构说明

权限策略结构包括:

  • 版本号。

  • 授权语句列表。每条授权语句包括授权效果(Effect)、操作(Action)、资源(Resource)。

    权限策略 2.png

权限策略文档示例

1. 策略文档的形式语法示例

policy = {
    <version_block?>
    <statment_block>
}
<version_block> = "Version" : "2015-11-01"
<statement_block> = "Statement" : [<statement>, <statement>, ...]
<statement> = {
    <sid_block?>,
    <effect_block>,
    <action_block>,
    <resoure_block>
}
<sid_block> = "Sid" : <sid_string>
<effect_block> = "Effect" : ("Allow" | "Deny")
<action_block> = "Action" : ( "*" | [<action_string>, <action_string>, ...])
<resoure_block> = "Resource" : ( "*" | [<resoure_string>, <resoure_string>, ...])
<action_string> = "service_name : action_name"
<resource_string> = "KRN" 

2. 策略文档示例

如:云主机(KEC)管理员的权限的策略文档示例

{
  "Version" : "2015-11-01",
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : "KEC:*",
      "Resource" : "*"
    }
  ]
}

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈