-
条件(Condition) 条件键(Condition)是SCP生效的特定条件,包括条件键和运算符。 条件键表示SCP语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见:全局条件键。 服务级条件键(前缀通常为服务缩写,如ecs:)仅适用于对应服务的操作,详情请参见表4。 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个
VPC终端节点 发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,SCP才能生效。支持的运算符请参见:运算符。 E
CS 定义了以下可以在SCP的Condition元素中使用的条件键,您可以使用这些条件键进一步细化SCP语句应用的条件。 表4 ECS支持的服务级条件键 服务级条件键 类型 单值/多值 说明 ecs:imageID string 多值 根据请求参数中指定的镜像ID过滤访问。 ecs:FlavorId string 多值 根据请求参数中指定的规格ID过滤访问。 ecs:VpcId string 多值 根据请求参数中指定的网络ID过滤访问。 ecs:SubnetId string 多值 根据请求参数中指定的子网ID过滤访问。 ecs:KmsKeyId string 多值 根据请求参数中指定的加密密钥ID过滤访问。 ecs:ServerId string 单值 根据云服务器ID过滤访问。 ecs:SSHKeyPairName string 单值 根据请求参数中指定的SSH密钥对的名称过滤访问。 ecs:AvailabilityZone string 单值 根据请求参数中指定的可用区名称过滤访问。 ecs:PortId string 多值 根据请求参数中指定的portId过滤访问。 ecs:SupportAgentType string 多值 根据请求中指定的agent类型过滤访问。 ecs:ImageSupportAgentType string 多值 根据请求中指定的镜像支持的agent类型过滤访问。 ecs:VolumeId string 单值 根据请求中指定的卷ID过滤访问。 ecs:ImageType string 单值 根据请求中指定镜像的类型过滤访问(如:公共镜像、私有镜像、共享镜像、市场镜像)。 ecs:OsType string 单值 根据请求中指定镜像的操作系统类型过滤访问(如:Linux、Windows)。 ecs:OsVersion string 单值 根据请求中指定镜像的操作系统版本过滤访问(如:CentOS 7.3 64bit)。 ecs:ImagePlatform string 单值 根据请求中指定镜像的平台过滤访问(如:Windows、Ubuntu、Red Hat、SUSE、CentOS)。
-
操作步骤 以组织管理员或管理账号的身份登录管理控制台,进入Organizations控制台。 进入策略管理页,单击“服务控制策略”,进入SCP管理页。 图1 进入SCP管理页 单击“创建”,进入SCP创建页面。 图2 创建SCP 输入策略名称。新创建的策略名称不能与已有策略名称重复。 (可选)输入策略描述。 在策略内容左侧可以直接编写JSON格式的策略内容。 关于如何编写JSON格式的策略语句可参考SCP语法介绍和SCP配置示例。 自定义策略版本号(Version)固定为5.0,不可修改。 当作用(Effect)为Allow时,不能有Condition元素,即无法添加条件键。 将光标置于策略内容左侧的statement语句中,即可在策略内容右侧使用策略编辑器进行编辑自定义策略的操作、资源和条件。 添加操作:单击号,选择或搜索要添加的服务及相应操作项,添加成功的操作项会自动显示在策略内容左侧的Action元素下。如图3所示。 图3 添加操作 添加资源:仅支持资源级授权的服务可添加。单击号,选择操作对应的服务,在选择资源类型,根据实际情况填写URN。如图4所示。 图4 添加资源 添加条件(可选):单击号,添加条件键和运算符,规定策略生效的条件。如图5所示。 图5 添加条件 (可选)单击“添加新语句”,可添加Statement元素的对象。 Statement元素的值可以是多个对象组成的数组,表示不同的权限约束。 图6 添加新语句 (可选)为策略添加标签。在标签栏目下,输入标签键和标签值,单击“添加”。 图7 为SCP添加标签 单击右下角“保存”后,系统会自动校验语法,如跳转到策略列表,则SCP创建成功;如系统提示策略内容有误,则请按照语法规范进行修改。
-
禁止组织内账号给组织外的账号进行聚合授权 使用以下SCP禁止本组织内账号给组织外的账号进行聚合授权。此SCP建议绑定至组织的根OU,使组织外账号无法获取组织内账号下的资源清单信息。您也可以将此SCP绑定给接受授权的账号(源账号),禁止该账号接受来自聚合器账号的授权请求。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"rms:aggregationAuthorizations:create"
],
"Resource": [
"*"
],
"Condition": {
"StringNotMatch": {
"rms:AuthorizedAccountOrgPath": [
"organization_id/root_id/ou_id"【备注:此处需填写组织的路径ID】
]
}
}
}
]
}
-
禁止根用户使用除
IAM 之外的云服务 使用以下SCP禁止根用户使用除IAM之外的云服务。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"NotAction": [
"iam:*:*"
],
"Resource": [
"*"
],
"Condition": {
"Bool": {
"g:PrincipalIsRootUser": [
"true"
]
}
}
}
]
}
-
阻止IAM用户和委托进行某些修改 使用此SCP阻止IAM用户和委托对组织内所有账号创建的资源共享进行修改。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ram:resourceShares:update",
"ram:resourceShares:delete",
"ram:resourceShares:associate",
"ram:resourceShares:disassociate",
"ram:resourceShares:associatePermission",
"ram:resourceShares:disassociatePermission"
],
"Resource": [
"ram::*:resourceShare:resource-id"
]
}
]
}
-
阻止IAM用户和委托进行某些修改,但指定的账号除外 使用此SCP阻止IAM用户和委托对组织内所有账号创建的资源共享进行修改,但指定的账号除外。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ram:resourceShares:update",
"ram:resourceShares:delete",
"ram:resourceShares:associate",
"ram:resourceShares:disassociate",
"ram:resourceShares:associatePermission",
"ram:resourceShares:disassociatePermission"
],
"Resource": [
"ram::*:resourceShare:resource-id"
],
"Condition": {
"StringNotEquals": {
"g:DomainId": [
"account-id"【备注:此处需填写排除账号的ID】
]
}
}
}
]
}
-
阻止成员账号退出组织 使用以下SCP阻止成员账号主动退出组织。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"organizations:organizations:leave"
],
"Resource": [
"*"
]
}
]
}
-
禁止创建带有指定标签的资源 如下SCP表示禁止用户创建带有 {"team": "engineering"} 标签的资源共享实例。您可以根据需要修改SCP语句中的操作(Action)、资源类型(Resource)和条件(Condition)。 {
"Version":"5.0",
"Statement":[
{
"Effect":"Deny",
"Action":["ram:resourceShares:create"],
"Resource":["*"],
"Condition":{
"StringEquals":{
"g:RequestTag/team":"engineering"
}
}
}
]
}
-
阻止根用户的服务访问 使用以下SCP禁止成员账号使用根用户执行指定的操作。您可以根据需要修改SCP语句中的操作(Action)和资源类型(Resource)。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ecs:*:*"
],
"Resource": [
"*"
],
"Condition": {
"BoolIfExists": {
"g:PrincipalIsRootUser": "true"
}
}
}
]
}
-
禁止访问指定区域的资源 如下SCP表示禁止用户访问“regionid1”区域的ECS服务的全部资源。您可以根据需要修改SCP语句中的操作(Action)、资源类型(Resource)和条件(Condition)。 此SCP仅适用于区域级服务,SCP中的“regionid1”仅为区域示例,使用时请填入具体区域ID。 {
"Version":"5.0",
"Statement":[
{
"Effect":"Deny",
"Action":["ecs:*:*"],
"Resource":["*"],
"Condition":{
"StringEquals":{
"g:RequestedRegion":"regionid1"
}
}
}
]
}
-
禁止共享到组织外 使用以下SCP禁止本组织内的账号给组织外账号共享资源。此SCP建议绑定至组织的根OU,使其对整个组织生效。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ram:resourceShares:create",
"ram:resourceShares:associate"
],
"Resource": [
"*"
],
"Condition": {
"ForAnyValue:StringNotLike": {
"ram:TargetOrgPaths": [
"organization_id/root_id/ou_id"【备注:此处需填写组织的路径ID】
]
}
}
}
]
}
-
禁止共享指定类型的资源 使用以下SCP禁止用户共享VPC子网资源。您可以根据需要修改SCP语句条件键(Condition)元素中的资源类型。 {
"Version": "5.0",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ram:resourceShares:create"
],
"Resource": [
"*"
],
"Condition": {
"ForAnyValue:StringEquals": {
"ram:RequestedResourceType": [
"vpc:subnet"【备注:可根据需要修改此处的资源类型】
]
}
}
}
]
}
-
不受SCP限制的任务 您无法使用SCP来限制以下任务: 组织管理账号及其IAM用户执行的任何操作。 使用服务关联委托执行的任何操作。 由不支持SCP的云服务对支持SCP的云服务发起的API调用请求,将不受SCP限制。当前支持SCP的云服务和区域请参见:支持SCP的云服务和支持SCP的区域。 通过API方式
获取Token 后,使用该Token访问支持SCP的云服务的API,在大多数场景下将不受SCP限制。 华为云移动端APP版本低于v3.30.0,将不受SCP限制。
-
测试SCP的影响 针对SCP对账号的影响,强烈建议您在生产环境应用SCP前,使用测试账号、测试环境、测试用例开展充分且彻底的系统设计和系统测试,避免对生产环境中服务资源的使用产生不必要的影响。在测试环境充分验证之后,且需要在生产环境应用时,您可以先创建一个OU,并每次移入一个账号或少量账号,以确保不会意外中断服务资源的使用。 对于系统预置的SCP系统策略“FullAccess”,解绑操作需谨慎处理,除非您将其替换为具有允许操作的自定义策略,否则不应解绑该策略。当您确定需要解绑“FullAccess”并且配置具有允许操作的自定义策略时,除配置业务需要的授权项外,必须额外配置iamToken::*和signin::*。 如果解绑Root的“FullAccess”策略,则整个组织内所有账号的可操作性权限都将失效。此操作风险极高,需谨慎操作。 如果解绑OU的“FullAccess”策略,则该OU(包含下级OU)内账号的可操作权限都将失效。 如果解绑成员账号的“FullAccess”策略,则该账号的可操作权限将失效。
-
什么是服务控制策略 服务控制策略 (Service Control Policy,SCP) 是一种基于组织的访问控制策略。组织管理账号可以使用SCP指定组织中成员账号的权限边界,限制账号内用户的操作。SCP可以关联到组织、OU和成员账号。当SCP关联到组织或OU时,该组织或OU下所有账号均受该策略影响。 本节将从以下几方面为您介绍SCP: SCP原理介绍:介绍SCP的分类,作用原理,继承规则,与IAM策略的关系。 SCP语法介绍:介绍SCP的组成结构与策略参数。