如何进行AWS S3 SSE KMS密钥旋转?

时间:2019-11-27 09:01:47

标签: amazon-web-services amazon-s3 aws-kms

场景-
我创建了-
 1.一个S3桶
 2.两个KMS键
 3.使用KMS密钥#1在S3存储桶上启用Default encryption
 4.将文件上传到存储桶中
 5.检查对象详细信息,它显示Server-side encryption: AWS-KMSKMS key ID: ARN of KMS key #1
 6.更改了AWS S3 Default encryption,现在选择了KMS key #2
 7.旧对象仍然显示KMS key ID: ARN of KMS key #1

问题-
1.可以在1年之前完成KMS密钥轮换吗?
2.我做了正确的方法来旋转AWS KMS密钥吗?如果不是正确的方法?
3.删除密钥的旧对象会发生什么?

2 个答案:

答案 0 :(得分:2)

自动旋转密钥不会创建新的CMK,它只是旋转HSM备用密钥。旧密钥仅用于解密,而新后备密钥用于加密和解密新对象。 另一方面,手动旋转密钥要求您创建一个新的CMK并更新密钥别名以指向新的CMK。这意味着您必须维护多个CMK,只要您的对象已被旧的CMK加密即可。

当KMS加密对象时,生成的密文包含明文形式的HSM支持密钥标识符。这就是KMS检索密钥以解密加密消息的方式。 结果,只要不删除密文中存储的后备密钥,KMS便可以解密消息。仅当您删除CMK时,后退密钥才会被删除。

回到您的问题:

  1. 是的,但是您必须如上所述创建一个新的CMK。

  2. 您可以只更新密钥别名以指向新的CMK。旋转CMK变得容易得多,尤其是当它用于加密多个存储桶时。

  3. 如果删除用于生成数据密钥的CMK,则无法解密对象。您应该使用新的CMK重新加密所有对象,或者保留旧密钥。

答案 1 :(得分:1)

  

可以在1年之前完成KMS密钥轮换吗?

是,但是您将需要执行手动旋转。自动轮换每年进行一次(如果启用了此功能),并且您无法更改间隔的长度。

  

我做了正确的方法来旋转AWS KMS密钥吗?如果不是,那是什么   正确的方法?

虽然这是可能的,但这并不是旋转密钥的最佳方法(但这确实是有争议的,并且取决于您的安全策略)。

CMK并不是真正的关键。它更像是用于备份密钥的逻辑容器,该逻辑容器随后用于加密用于加密数据的数据密钥。您可能要做的不是更改容器(CMK)本身,而是更改存储在CMK内部的后备密钥。这导致您仍然可以使用相同的CMK(不需要更新任何代码或脚本),但实际的加密密钥(在这种情况下为后备密钥)将有所不同。 AWS将存储旧的后备密钥,并且它将允许您无缝解密数据,因为它存储了用于哪些后备密钥的指针(用于数据)。但这假设所有后备密钥都属于同一个CMK。

还请注意,这与重新加密无关。所有先前加密的数据都将使用相同的密钥进行加密,就像使用新的后备密钥对新数据进行加密一样。如果您需要重新加密数据,则需要自己完成。

  

删除密钥的旧对象会发生什么?

按照上述方式进行操作时,旧的后备密钥不会被删除,因此您不必担心无法解密数据。仍与KMS一起存储,它们仅用于解密旧的(对应的)数据。

如果您有两个单独的CMK并删除了其中一个,则所有仍使用此CMK加密的数据将永远丢失(或至少永远都是相同的加密)。请注意,在这种情况下,甚至AWS都无法提供帮助。这也是在计划要删除的密钥与实际删除密钥之间存在强制延迟的原因。