云服务器内容精选

  • 测试SCP的影响 针对SCP对账号的影响,强烈建议您在生产环境应用SCP前,使用测试账号、测试环境、测试用例开展充分且彻底的系统设计和系统测试,避免对生产环境中服务资源的使用产生不必要的影响。在测试环境充分验证之后,且需要在生产环境应用时,您可以先创建一个OU,并每次移入一个账号或少量账号,以确保不会意外中断服务资源的使用。 对于系统预置的SCP系统策略“FullAccess”,解绑操作需谨慎处理,除非您将其替换为具有允许操作的自定义策略,否则不应解绑该策略。当您确定需要解绑“FullAccess”并且配置具有允许操作的自定义策略时,除配置业务需要的授权项外,必须额外配置iamToken::*和signin::*。 如果解绑Root的“FullAccess”策略,则整个组织内所有账号的可操作性权限都将失效。此操作风险极高,需谨慎操作。 如果解绑OU的“FullAccess”策略,则该OU(包含下级OU)内账号的可操作权限都将失效。 如果解绑成员账号的“FullAccess”策略,则该账号的可操作权限将失效。
  • 不受SCP限制的任务 您无法使用SCP来限制以下任务: 组织管理账号及其 IAM 用户执行的任何操作。 使用服务关联委托执行的任何操作。 由不支持SCP的云服务对支持SCP的云服务发起的API调用请求,将不受SCP限制。当前支持SCP的云服务和区域请参见:支持SCP的云服务和支持SCP的区域。 通过API方式 获取Token 后,使用该Token访问支持SCP的云服务的API,在大多数场景下将不受SCP限制。 华为云移动端APP版本低于v3.30.0,将不受SCP限制。
  • 概述 服务控制策略 (Service Control Policy,SCP) 是一种基于组织的访问控制策略。组织管理账号可以使用SCP指定组织中成员账号的权限边界,限制账号内用户的操作。SCP可以关联到组织、OU和成员账号。当SCP关联到组织或OU时,该组织或OU下所有账号均受该策略影响。 本节将从以下几方面为您介绍SCP: SCP原理介绍:介绍SCP的分类,作用原理,继承规则,与IAM策略的关系。 SCP语法介绍:介绍SCP的组成结构与策略参数。
  • 运算符 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,策略才能生效。运算符可以增加后缀“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