资源控制策略示例 - AWS Organizations

资源控制策略示例

本主题中显示的示例资源控制策略(RCP)仅供参考。有关数据边界的示例,请参阅 GitHub 中的 Data Perimeter Policy Examples

在使用这些示例之前

在组织中使用这些示例 RCP 之前,请执行以下操作:

  • 仔细检查并根据您的独特需求定制 RCP。

  • 通过您使用的 AWS 服务全面测试您环境中的 RCP。

本节中的示例策略演示了 RCP 的实施和使用。这些示例策略并是要完全按照所示实施的官方AWS建议或最佳实践。您有责任仔细测试任何策略,以确定其是否适合解决环境的业务需求。基于拒绝的资源控制策略可能会无意中限制或阻止您使用 AWS 服务,除非您在策略中添加了必要的例外情况。

一般示例

RCPFullAWSAccess

以下策略是 AWS 托管式策略,启用资源控制策略(RCP)后,会自动附加到组织根、每个 OU 和组织中的每个账户。您无法分离此策略。此默认 RCP 允许所有主体和操作访问您的资源,这意味着在您开始创建和附加 RCP 之前,所有现有的 IAM 权限仍会继续像以前一样运行。您无需测试此策略的影响,因为它允许您的资源继续使用现有的授权行为。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*" } ] }

跨服务混淆代理保护

某些 AWS 服务(调用服务)使用其 AWS 服务 主体从其他 AWS 服务(被调用服务)访问 AWS 资源。当一个原本不应拥有 AWS 资源访问权限的角色试图利用 AWS 服务 主体的信任来与他们原本不应拥有访问权限的资源进行交互时,就称为跨服务混淆代理问题。有关更多信息,请参阅《IAM 用户指南》中的混淆代理问题

以下策略要求,访问您资源的 AWS 服务 主体只能代表您组织中的请求进行访问。此策略仅对存在 aws:SourceAccount 的请求应用控制措施,因此,不需要使用 aws:SourceAccount 的服务集成不会受到影响。如果 aws:SourceAccount 存在于请求上下文中,则 Null 条件将评估为 true,从而强制执行 aws:SourceOrgID 键。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceConfusedDeputyProtection", "Effect": "Deny", "Principal": "*", "Action": [ "s3:*", "sqs:*", "kms:*", "secretsmanager:*", "sts:*" ], "Resource": "*", "Condition": { "StringNotEqualsIfExists": { "aws:SourceOrgID": "my-org-id", "aws:SourceAccount": [ "third-party-account-a", "third-party-account-b" ] }, "Bool": { "aws:PrincipalIsAWSService": "true" }, "Null": { "aws:SourceArn": "false" } } } ] }

仅限通过 HTTPS 连接访问您的资源

以下策略要求仅通过 HTTPS(TLS)加密连接访问您的资源。这可以帮助您防止潜在攻击者操纵网络流量。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceSecureTransport", "Effect": "Deny", "Principal": "*", "Action": [ "sts:*", "s3:*", "sqs:*", "secretsmanager:*", "kms:*" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:SecureTransport": "false" } } } ] }

一致的 Amazon S3 存储桶策略控制措施

以下 RCP 包含多个语句,用于对组织中的 Amazon S3 存储桶强制执行一致的访问控制。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceS3TlsVersion", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "*", "Condition": { "NumericLessThan": { "s3:TlsVersion": [ "1.2" ] } } }, { "Sid": "EnforceKMSEncryption", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } } ] }
  • 语句 ID EnforceS3TlsVersion:要求访问 S3 存储桶的最低 TLS 版本为 1.2。

  • 语句 ID EnforceKMSEncryption:要求使用 KMS 密钥对对象进行服务器端加密。