我正在隐式生成数据加密密钥,如下所示(使用的密钥 ID 只是代表性的):
from aws_encryption_sdk import encrypt
# Key provider with only 2 region master keys to begin with
kms_key_provider = KMSMasterKeyProvider(key_ids=[“west-1”, “west-2”])
# encrypt something random only to get the encrypted data keys in the header from those 2 regions
my_ciphertext, encryptor_header = encrypt(source=“somerandomplaintextofnorelevance”, key_provider= kms_key_provider, algorithm=AWSKeyProvider.DEFAULT_ALGORITHM, encryption_context={“somekey”: “some value”})
my_data_keys = []
for dek in encryptor_header.encrypted_data_keys:
my_data_keys.append(dek.encrypted_data_key)
我在 my_data_keys(例如 DEK_enc_west_1 和 DEK_enc_west_2)中获得了两个加密的数据加密密钥 (DEK) 字符串,它们都将解密为单个纯数据加密密钥,例如 DEK_Plain。现在我可以在任一区域中为 DEK_Plain 加密/解密以实现冗余。
然后,我继续在east-1 和east-2 区域激活另外两个主密钥。现在我希望在这两个新区域(east-1 和east-2)主密钥下也对相同的 DEK_Plain 进行加密,以获得两个新的加密数据密钥(例如,DEK_enc_east_1 和 DEK_enc_east_2)。
因此,使用新的完全形成的密钥提供程序,例如:
kms_key_provider = KMSMasterKeyProvider(key_ids=[“west-1”, “west-2”, “east-1”, “east-2”])
我可以使用以下 4 个区域中的任何一个获取我的 DEK_Plain:
my_plain_data_key = kms_key_provider.decrypt_data_key_from_list(…..)
基本上,如何添加其他区域主密钥以用于先前使用以前存在的其他区域主密钥生成和加密的相同数据加密密钥?