0

我们已经应用了这篇文章中提到的护栏,AWS 预防性 S3 护栏。1 . 不幸的是,我们没有得到预期的结果。我们对 Amazon S3 存储桶2的加密配置应用了不允许更改。

SCP 对 s3:PutEncryptionConfiguration 有一个拒绝,条件是 arn:aws:iam::*:role/AWSControlTowerExecution 角色除外。

问题是任何人都可以创建 S3 存储桶,这是可以接受的。但是,当在控制台或通过 CloudFormation 创建存储桶并尝试指定加密 SSE 或 KMS 时,会生成错误并且创建的存储桶没有加密。

理想情况下,我们需要让任何人都能够创建 S3 存储桶并启用加密。我们希望这个 SCP 能做的是防止在应用到存储桶后删除加密。

我们预计文章中提到的其他护栏会出现类似问题:

禁止更改所有 Amazon S3 存储桶的加密配置 [以前:为日志存档启用静态加密] 禁止更改所有 Amazon S3 存储桶的日志配置 [以前:为日志存档启用访问日志] 禁止更改所有 Amazon S3 的存储桶策略存储桶 [以前:禁止对日志存档进行策略更改] 禁止更改所有 Amazon S3 存储桶的生命周期配置 [以前:为日志存档设置保留策略]

有没有人遇到过这个问题?实现允许使用所需的加密、日志记录、存储桶策略和生命周期创建存储桶并在创建存储桶后禁止删除或更改的最佳实施方式是什么?

4

1 回答 1

0

恐怕 scp 不能提供您需要的灵活性,仅仅是因为您需要的条件键不存在于 api 调用中。没有策略说“在启用加密的条件下允许 createbucket”。

我曾在各种平台团队中为企业实施这些类型的控制,并多次遇到这些限制。基本上有以下三种策略:

  1. 侦探合规
  2. 纠正合规性
  3. 预防性合规

首先确保您了解内容的配置方式。您可以为此使用 aws config 规则。肯定有一些规则可以检查 s3 存储桶的加密设置。确保使用您的安全帐户中的 aws config 聚合器集中这些规则的结果。检测后,您可以手动跟进检测到的错误配置(或在大规模运行时自动执行此操作)。

如果您还想纠正错误,可以使用 aws config 自动修复操作。还可以使用各种开源工具来帮助您解决此问题。一个经常使用的是带有 c7n-org 插件的云托管。也存在许多商业报价,但非常昂贵。

使用 scp 或 iam 策略,您可以防止某人做一些事情,这比在错误配置发生后纠正错误配置的风险要低一些。但是,它也很不灵活,策略可以很快变得复杂,而且它也没有告诉用户为什么他不能做某事。通常,scp 仅用于非常简单的任务(例如,不能创建 iam 用户)或阻止外部或某些区域的操作。

我会选择确保你先正确检测到东西,然后看看你是否可以纠正或阻止它。

编辑:如果您有只使用 ci/cd 和 infra 作为代码的成熟团队,您还可以确保在管道构建阶段使用 cfn-guard 等工具实施安全控制。如果他们的模板不符合标准,只需失败构建。

Edit2:回到您的问题:对于某些操作,如果有单独的 api 用于禁用诸如“DisableEncryption”操作之类的东西,则可以阻止使用 scp。然而,对于大多数操作,它是一个类似于 PutEncryptionSetting 的操作,您无法真正判断它是启用还是禁用。

于 2021-09-01T20:01:20.397 回答