策略语法
 
                  更新时间 2024-01-22 16:31:31
                 
 
                    最近更新时间: 2024-01-22 16:31:31
                  
 本节为您介绍策略语法。
 下面以CTIAM的自定义策略为例,说明策略的语法。
{
    "Version": "1.1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ctiam:user:query",
                "ctiam:user:get",
                "ctiam:userGroup:get",
                "ctiam:policy:get",
                "ctiam:user:create"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "UserId": [
                        "12345678910"
                    ]
                }
            }
        }
    ]
}
策略结构
策略结构包括Version(策略版本号)和Statement(策略权限语句)两部分,其中Statement可以有多个,表示不同的授权项。
图 策略结构

策略参数
策略参数包含Version和Statement两部分,下面介绍策略参数详细说明。了解策略参数后,您可以根据场景自定义策略。
表 策略参数说明
参数 含义 值 Version 策略的版本。 1.1 :代表目前策略的通用版本 Statement:策略的授权语句 Effect:作用 定义Action中的操作权限是否允许执行。 
Allow:允许执行。
Deny:不允许执行。
说明当同一个Action的Effect既有Allow又有Deny时,遵循Deny优先的原则。
Action:授权项 操作权限。 格式为“服务名:资源类型:操作”。授权项支持通配符号*,通配符号*表示所有。 
支持在任意位置插入*,例如“ctiam:*:list*”代表匹配ctiam任意资源以list开头标识的权限,可以匹配“ctiam:permission:listGroupPolicy”这一权限。Condition:条件 使策略生效的特定条件,包括条件键和运算符。 格式为“条件运算符:{条件键:[条件值1,条件值2]}”。 
如果您设置多个条件,同时满足所有条件时,该策略才生效。
示例:
"StringEquals":{"UserId":["12345678910"]}:表示当用户调用时的用户ID等于"12345678910"时该条statement生效。Resource:资源路径 策略所作用的资源。 格式为“ctrn:服务编码:region:accountId:资源描述”,region、accountId、资源描述都支持通配符号*,通配符号表示匹配所有。 
示例:
•"*":表示所有资源。
•"ctrn:msap:*:123456789:project/testProject":表示对于任意资源池region下,account归属为123456789,该statement中的action只对指定的testProject生效。
- 条件键:条件键表示策略语句的Condition 元素中的键值,目前云服务支持条件键的情况详见下表。
表 云服务支持条件键情况
| 云服务名称 | 是否支持条件键 | 
|---|---|
| 云通信-短信 | 否 | 
| 弹性文件服务 | 否 | 
| 分布式消息服务Kafka | 否 | 
| 账务 | 是 | 
| 分布式消息服务RabbitMQ | 否 | 
| 分布式消息服务RocketMQ | 否 | 
| 云硬盘 | 是 | 
| 天翼云电脑(政企版) | 是 | 
| 内网DNS | 否 | 
| CRM业务中台 | 是 | 
| 分布式缓存服务Redis版 | 否 | 
| 弹性云主机 | 是 | 
| 弹性负载均衡 | 否 | 
| 镜像服务 | 是 | 
| 云监控 | 否 | 
| 弹性伸缩服务 | 否 | 
| 虚拟私有云 | 是 | 
| 物理机 | 否 | 
| 云硬盘备份 | 否 | 
| 云主机备份 | 否 | 
| 服务器安全卫士(原生版) | 否 | 
| 密钥管理 | 否 | 
| 云间高速 | 否 | 
| 统一身份认证 | 是 | 
| 客服工单 | 是 | 
| 容器云服务引擎CCSE | 是 | 
| 微服务应用平台MSAP | 否 | 
| 活动与券 | 是 | 
| 消息管理 | 是 | 
| Web应用防火墙(原生版) | 否 | 
| 云审计 | 否 | 
| 企业组织 | 是 | 
| VPC终端节点 | 否 | 
| NAT网关 | 是 | 
目前支持的条件键详见下表。
表 条件键
| 条件键 | 类型 | 说明 | 
|---|---|---|
| UserId | 字符串 | IAM用户ID | 
| CurrentTime | 时间 | 接收到鉴权请求的时间。以ISO 8601格式表示,例如:2012-11-11T23:59:59Z | 
| SourceIp | IP地址 | 请求的来源IP | 
运算符
运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效,详见下表。
表 运算符
| 运算符 | 类型 | 说明 | 
|---|---|---|
| StringEquals | 字符串 | 请求值等于条件值(区分大小写) | 
| StringNotEquals | 字符串 | 请求值不等于条件值(区分大小写) | 
| StringEqualsIgnoreCase | 字符串 | 请求值等于条件值 | 
| StringNotEqualsIgnoreCase | 字符串 | 请求值不等于条件值 | 
| StringMatch | 字符串 | 请求值包含条件值 | 
| DateLessThan | 时间 | 请求值早于条件值 | 
| DateLessThanEquals | 时间 | 请求值早于或等于条件值 | 
| DateGreaterThan | 时间 | 请求值晚于条件值 | 
| DateGreaterThanEquals | 时间 | 请求值晚于或等于条件值 | 
| IpAddress | IP地址 | 请求值在条件值所设置的IP地址范围内 | 
| NotIpAddress | IP地址 | 请求值不在条件值所设置的IP地址范围内 | 
