【问题标题】:Can't create a S3 bucket with KMS_MANAGED key and bucketKeyEneabled via CDK无法通过 CDK 创建具有 KMS_MANAGED 密钥和 bucketKeyEneabled 的 S3 存储桶
【发布时间】:2021-06-04 15:45:07
【问题描述】:

我有一个具有此配置的 S3 存储桶:

我正在尝试通过 CDK 创建具有相同配置的存储桶:

Bucket.Builder.create(this, "test1")
  .bucketName("com.myorg.test1")
  .encryption(BucketEncryption.KMS_MANAGED)
  .bucketKeyEnabled(true)
  .build()

但是我收到了这个错误:

错误:指定了bucketKeyEnabled,因此'encryption'必须设置为KMS(值:MANAGED)

这对我来说似乎是一个错误,但我对 CDK 比较陌生,所以我不确定。是我做错了什么,还是这确实是一个错误?

【问题讨论】:

    标签: amazon-s3 aws-cdk amazon-kms


    【解决方案1】:

    bucketKeyEnabled 标志,直接来自文档:

    指定 Amazon S3 是否应使用 S3 Bucket Key 使用 KMS 的服务器端加密 (SSE-KMS)

    BucketEncryption 有 4 个选项。

    NONE - 不加密

    MANAGED - 由 AWS 管理的 Kms 密钥

    S3MANAGED - 由 S3 管理的密钥

    KMS - 由用户管理的密钥,将创建一个新的 KMS 密钥。

    我们根本不需要为任何场景设置 bucketKeyEnabled。在这种情况下,我们只需要 aws/s3 ,所以,

    bucketKeyEnabled:不需要设置。(因为这仅适用于 SSE-KMS)

    加密:应设置为 BucketEncryption.S3_MANAGED

    例子:

    const buck = new s3.Bucket(this, "my-bucket", {
      bucketName: "my-test-bucket-1234",
      encryption: s3.BucketEncryption.KMS_MANAGED,
    });
    

    【讨论】:

    • 感谢您@BaluVyamajala 的回答,但我对使用 SSE-S3 密钥不感兴趣。我希望使用 AWS 托管的 SSE-KMS 密钥 S3 存储桶密钥来降低成本。
    • SSE-S3 是静态 S3 数据加密的最便宜和最基本的选项。 SSE-KMS 意味着拥有一个由 AWS 管理的 KMS 密钥,这将使我们能够更好地控制权限,所有这些都需要支付额外费用。
    • @TimPesce 即使对于 SSE-KMS,我们根本不需要设置 bucketKeyEnabled 标志,我们只需要设置 BucketEncryption 为 KMS_MANAGED
    • 感谢您提供其他答案,但我不确定您是否理解这个问题。我不是在寻找有关如何为我的存储桶配置加密的建议,我有一个特定的配置,我试图通过 CDK 来实现,但它不起作用。
    • 我刚刚添加了一个示例代码,我用它如何创建存储桶的屏幕截图进行了测试,这与有问题的屏幕截图完全相同。我们不需要使用bucketKeyEnabled 就是我想说的。
    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 2020-07-16
    • 2020-05-28
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多