云服务器内容精选

  • 运算符 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效。运算符可以增加后缀“IfExists”,表示对应请求值为空或满足条件的请求值均使策略生效,如“StringEqualsIfExists”表示请求值为空或请求值等于条件值均使策略生效。运算符为字符串型运算符,表格中如未增加说明,不区分大小写。 String类型 表3 String类型运算符 类型 运算符 说明 String StringEquals 请求值与任意一个条件值相同(区分大小写)。 StringNotEquals 请求值与所有条件值都不同(区分大小写)。 StringEqualsIgnoreCase 请求值与任意一个条件值相同。 StringNotEqualsIgnoreCase 请求值与所有条件值都不同。 StringMatch 请求值符合任意一个条件值的正则表达式(区分大小写,正则表达式仅支持*和?)。 StringNotMatch 请求值不符合所有条件值的正则表达式(区分大小写,正则表达式仅支持*和?)。 示例:禁止用户名为ZhangSan的请求者删除和修改资源共享实例。 { "Version": "5.0", "Statement": [ { "Effect": "Deny", "Action": [ "ram:resourceShares:delete", "ram:resourceShares:update" ], "Condition": { "StringEquals": { "g:DomainName": [ "ZhangSan" ] } } } ] } Number类型 表4 Number类型运算符 类型 运算符 说明 Number NumberEquals 请求值等于任意一个条件值。 NumberNotEquals 请求值不等于所有条件值。 NumberLessThan 请求值小于任意一个条件值。 NumberLessThanEquals 请求值小于或等于任意一个条件值。 NumberGreaterThan 请求值大于任意一个条件值。 NumberGreaterThanEquals 请求值大于或等于任意一个条件值。 Date类型 表5 Date类型运算符 类型 运算符 说明 Date DateLessThan 请求值早于任意一个条件值。 DateLessThanEquals 请求值早于或等于任意一个条件值。 DateGreaterThan 请求值晚于任意一个条件值。 DateGreaterThanEquals 请求值晚于或等于任意一个条件值。 示例:请求者禁止在2022年8月1日前访问 RAM 服务。 { "Version": "5.0", "Statement": [ { "Effect": "Deny", "Action": [ "ram:*:*" ], "Condition": { "DateLessThan": { "g:CurrentTime": [ "2022-08-01T00:00:00Z" ] } } } ] } Bool类型 表6 Bool类型运算符 类型 运算符 说明 Bool Bool 条件值可选值:true、false。请求值等于条件值。 Null类型 表7 Null类型运算符 类型 运算符 说明 Null Null 条件值可选值:true、false。条件值为true,要求请求值不存在或者值为null;条件值为false,要求请求值必须存在且值不为null。 IP类型 表8 IP类型运算符 类型 运算符 说明 IP IpAddress 指定IP地址或者IP范围。 NotIpAddress 指定IP地址或者IP范围之外的所有IP地址。 示例:拒绝IP地址在10.27.128.0到10.27.128.255范围内的请求修改指定的永久访问密钥。 { "Version": "5.0", "Statement": [ { "Effect": "Deny", "Action": [ "iam:credentials:updateCredentialV5" ], "Condition": { "IpAddress": { "g:SourceIp": [ "10.27.128.0/24" ] } } } ] } “IfExists”运算符后缀 除Null运算符以外,您可以在任何条件运算符名称的末尾添加IfExists,例如:StringEqualsIfExists。如果请求的内容中存在条件键,则依照策略所述来进行匹配。如果该键不存在,则该条件元素的匹配结果将为true。
  • 策略参数 策略参数包含Version和Statement两部分,下面介绍策略参数详细说明。 表1 策略参数说明 参数 是否必选 含义 值 Version 必选 策略的版本。 5.0(不可自定义) Statement: 策略的授权语句 Statement Sid 可选 策略语句标识符。您可为语句数组中的每个策略语句指定Sid值。 用户自定义字符串。 Effect:作用 必选 定义Action中的操作权限是否允许执行。 Allow:允许执行。 Deny:不允许执行。 说明: 当同一个Action的Effect既有Allow又有Deny时,遵循Deny优先的原则。 当Effect为Allow时,不能有Condition元素。 Action:授权项 Allow时必选。 Deny时与NotAction二选一。 操作权限。 格式为“服务名:资源类型:操作”。授权项支持通配符号*,通配符号*表示所有。 参数中的通配符*和?只能单独使用或放在字符串结尾处。它不能出现在字符串的开头或中间部分。 例如“vpc:subnets:list”:表示查看VPC子网列表权限,其中vpc为服务名,subnets为资源类型,list为操作。 NotAction Allow时不可选。 Deny时与Action二选一。 Deny时,NotAction列出的操作或服务不受当前策略影响,即除了NotAction列表中的操作之外,其他操作deny。 格式同Action。 Condition:条件 Allow时不可选。 使策略生效的特定条件,包括条件键和运算符。 格式为“条件运算符:{条件键:[条件值1,条件值2]}”。 如果您设置多个条件,同时满足所有条件时,该策略才生效。 示例: "StringEndWithIfExists":{"g:UserName":["specialCharactor"]}:表示当用户输入的用户名以"specialCharactor"结尾时该条statement生效。 Resource:资源类型 可选 未指定时,Resource默认为“*”,策略应用到所有资源。 策略所作用的资源。 Allow时,只能为“*”。 Deny时,可选择“*”或具体资源,格式为“服务名:region:domainId:资源类型:资源路径”, 资源类型支持通配符号*,通配符号*表示所有。 示例:"ecs:*:*:instance:*":表示所有的E CS 实例。 SCP中不支持以下元素: Principal NotPrincipal NotResource