下面以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地址范围内 |