Kinesis Firehose KMS 加密

Kinesis Firehose KMS encryption

我正在设置到 S3 的 Kinesis Firehose 传输流,我注意到您可以设置自定义 KMS 密钥以用于加密 S3 上的文件。

但是,如果 S3 存储桶已经启用了 KMS 加密,文件仍然会被加密。当然,不同之处在于将使用默认的 AWS 管理器 S3 KMS 密钥,而不是提供给 Firehose 的客户管理的自定义 KMS 密钥。

通常使用自定义 KMS 密钥加密 S3 上的 Firehose 数据而不是依赖默认 S3 KMS 密钥的原因是什么?如果您也是 S3 存储桶的所有者并控制其设置,或者在您无法控制目标设置时也是启用加密的主要用途,那么这样做有什么意义吗桶?

或者 Firehose 关联的 KMS 密钥是否也用于加密传输中的数据,而不是 S3 提供的用于加密静态数据的 KMS 密钥?

Kinesis Firehose 将在登陆 S3 时使用您指定的 KMS 密钥来加密 objects。您可能无法控制 S3 存储桶的加密设置,并且出于任何原因您可能希望使用与 S3 默认 KMS 加密密钥不同的 KMS 密钥(具有不同的权限)。在不同层次结构的 S3 存储桶中可以有许多不同的 objects,需要或不需要不同的 KMS 加密。

S3 不应该 "double encrypt" 你的数据。来自 Kinesis Firehose 的 KMS 加密将在 S3 put header 中指定,因此 S3 在进行实际写入时将知道要使用哪些加密设置。如果 S3 存储桶上有默认的 KMS 设置,并且在 put header 中没有找到加密设置(无论是 SSE 还是 KMS),那么 S3 应该应用存储桶设置中指定的默认加密。