SCP 评估
注意
本节中的信息不适用于管理策略类型,包括备份策略、标签策略、聊天机器人策略或 AI 服务选择退出策略。有关更多信息,请参阅 了解管理策略继承。
由于您可以在 AWS Organizations 中的不同级别附加多个服务控制策略 (SCP),因此了解 SCP 的评估方式可以帮助您编写产生正确结果的 SCP。
SCP 如何与“允许”配合使用
要允许特定账户获得权限,在从根到账户直接路径中的每个 OU(包括目标账户本身),每个级别都必须有显式Allow
语句。这就是为什么在您启用 SCP 时,AWS Organizations 会附加一个名为 FullAWSAccess
例如,我们来看一下图 1 和图 2 所示的场景。要允许账户 B 获得权限或服务,应将允许该权限或服务的 SCP 附加到根、生产 OU 和账户 B 本身。
SCP 评估遵循“默认拒绝”模式,这意味着 SCP 中未明确允许的任何权限都将被拒绝。如果在任何级别(例如根、生产 OU 或账户 B)的 SCP 中不存在允许语句,则访问将被拒绝。
注意
-
SCP 中的
Allow
语句允许Resource
元素仅包含一个"*"
条目。 -
SCP 中的
Allow
语句完全不能有Condition
元素。
图 1:在根、生产 OU 和账户 B 处附加 Allow
语句的组织结构示例
图 2:生产 OU 中缺少 Allow
语句的组织结构示例及其对账户 B 的影响
SCP 如何使用“拒绝”
要拒绝特定账户获得权限,在从根到账户直接路径中的每个 OU(包括目标账户本身),任何 SCP 都可以拒绝该权限。
例如,假设有一个 SCP 附加到生产 OU,它为给定服务指定了显式 Deny
语句。碰巧还有另一个 SCP 附加到根和账户 B,它显式允许访问相同的服务,如图 3 所示。因此,账户 A 和账户 B 都将被拒绝访问该服务,因为附加到组织中任何级别的拒绝策略都会针对其下的所有 OU 和成员账户进行评估。
图 3:生产 OU 中附加了 Deny
语句的组织结构示例及其对账户 B 的影响
使用 SCP 的策略
在编写 SCP 时,您可以结合使用 Allow
和 Deny
语句来允许在组织中执行预期操作和服务。Deny
语句是实施限制的一种强大方式,应该适用于组织或 OU 更广泛的部分,因为当它们应用于根级或 OU 级别时,会影响其下的所有账户。
例如,您可以在根级别为 阻止成员账户退出组织 实施使用 Deny
语句的策略,该策略将对组织中的所有账户有效。拒绝语句还支持条件元素,这有助于创建例外情况。
提示
您可以使用 IAM 中的服务上次访问数据来更新您的 SCP,从而仅允许访问您需要的 AWS 服务。有关更多信息,请参阅《IAM 用户指南》中的查看 Organizations 的 Organizations 服务上次访问的数据。
在创建每个根、OU 和账户时,AWS Organizations 会将名为 FullAWSAccessAllow
语句来仅允许特定服务。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "cloudwatch:*", "organizations:*" ], "Resource": "*" } ] }
将两个语句组合在一起的策略可能与以下示例类似,它阻止成员账户离开组织并允许使用所需的 AWS 服务。组织管理员可以分离 FullAWSAccess 策略并改为附加此策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "cloudwatch:*", "organizations:*" ], "Resource": "*" }, { "Effect": "Deny", "Action":"organizations:LeaveOrganization", "Resource": "*" } ] }
现在,考虑以下示例组织结构,以了解如何在组织的不同级别应用多个 SCP。
下表显示了沙盒 OU 中的有效策略。
场景 | 根处的 SCP | 沙盒 OU 处的 SCP | 账户 A 处的 SCP | 账户 A 处生成的策略 | 账户 B 和账户 C 处生成的策略 |
---|---|---|---|---|---|
1 | 完全 AWS 访问 | 完全 AWS 访问 + 拒绝 S3 访问 | 完全 AWS 访问 + 拒绝 EC2 访问 | 没有 S3,没有 EC2 访问 | 没有 S3 访问 |
2 | 完全 AWS 访问 | 允许 EC2 访问 | 允许 EC2 访问 | 允许 EC2 访问 | 允许 EC2 访问 |
3 | 拒绝 S3 访问 | 允许 S3 访问 | 完全 AWS 访问 | 无服务访问 | 无服务访问 |
下表显示了工作负载 OU 中的有效策略。
场景 | 根处的 SCP | 工作负载 OU 处的 SCP | 测试 OU 处的 SCP | 账户 D 处生成的策略 | 生产 OU、账户 E 和账户 F 处生成的策略 |
---|---|---|---|---|---|
1 | 完全 AWS 访问 | 完全 AWS 访问 | 完全 AWS 访问 + 拒绝 EC2 访问 | 没有 EC2 访问 | 完全 AWS 访问 |
2 | 完全 AWS 访问 | 完全 AWS 访问 | 允许 EC2 访问 | 允许 EC2 访问 | 完全 AWS 访问 |
3 | 拒绝 S3 访问 | 完全 AWS 访问 | 允许 S3 访问 | 无服务访问 | 无服务访问 |