Amazon web services 如何进行AWS S3 SSE KMS键旋转?

Amazon web services 如何进行AWS S3 SSE KMS键旋转?,amazon-web-services,amazon-s3,aws-kms,Amazon Web Services,Amazon S3,Aws Kms,场景- 我创建了- 1.一个S3桶 2.两个KMS键 3.在S3存储桶上启用了默认加密,使用KMS密钥#1 4.在bucket中上载了一个文件 5.检查对象详细信息,它显示了服务器端加密:AWS-KMS和KMS密钥ID:ARN of KMS密钥#1 6.更改了AWS S3默认加密,现在选择了KMS密钥#2 7.旧对象仍显示KMS密钥ID:ARN of KMS密钥#1 问题- 1.KMS钥匙能否在1年前轮换? 2.我所做的是旋转AWS KMS键的正确方法吗?如果不是,正确的方法是什么? 3.删除密

场景-
我创建了-
1.一个S3桶
2.两个KMS键
3.在S3存储桶上启用了
默认加密
,使用KMS密钥#1
4.在bucket中上载了一个文件
5.检查对象详细信息,它显示了
服务器端加密:AWS-KMS
KMS密钥ID:ARN of KMS密钥#1

6.更改了AWS S3默认加密,现在选择了
KMS密钥#2

7.旧对象仍显示
KMS密钥ID:ARN of KMS密钥#1

问题-
1.KMS钥匙能否在1年前轮换?
2.我所做的是旋转AWS KMS键的正确方法吗?如果不是,正确的方法是什么?

3.删除密钥的旧对象会发生什么情况?

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

KMS加密对象时,生成的密文包含明文形式的HSM备份密钥标识符。这就是KMS检索密钥以解密加密消息的方式。 因此,只要不删除密文中存储的备用密钥,KMS就可以解密消息。只有删除CMK时,才会删除备份密钥

回到你的问题上来:

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

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

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

  • 能否在1年前完成KMS钥匙旋转

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

    我所做的是旋转AWS KMS键的正确方法吗?如果不是,那是什么 正确的方法

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

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

    还请注意,这与重新加密无关。所有以前加密的数据都使用相同的密钥进行加密,只是新数据使用新的备份密钥进行加密。如果您需要重新加密数据,您需要自己进行加密

    删除密钥的旧对象时会发生什么情况

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


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

    是的,KMS钥匙可以在1年前通过手动旋转而不是自动旋转进行旋转,您可以从这里获得参考。在没有AWS CLI的情况下是否可以执行此操作?是的,可以执行此操作,但我不确定,您可以从这里获得参考