轮换您的活动分支密钥 - AWS 数据库加密 SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

轮换您的活动分支密钥

每个分支密钥一次仅能有一个活动版本。通常,各活动分支密钥版本满足多个请求。但是您可以控制活动分支密钥的重复使用程度,并确定活动分支密钥的轮换频率。

分支密钥不用于加密明文数据密钥。它们用于派生对明文数据密钥进行加密的唯一包装密钥。包装密钥派生过程生成唯一的 32 字节包装密钥,其随机掩码为 28 字节。这意味着,在发生加密损耗之前,分支密钥可以派生出超过 79 万亿或 296 个唯一的包装密钥。尽管耗尽风险非常低,但由于业务或合同规则或政府法规,您可能需要轮换活动分支密钥。

在您轮换之前,分支密钥的活动版本会一直处于活动状态。活动分支密钥的先前版本既不会用于执行加密操作,也不能用于派生新的包装密钥。

警告

在测试环境中删除分支密钥是不可逆的。您无法恢复已删除的分支密钥。在测试环境中删除并重新创建具有相同 ID 的分支密钥时,可能会出现以下问题:

  • 先前测试运行的材料可能仍保留在缓存中

  • 某些测试主机或线程可能会使用已删除的分支密钥来加密数据

  • 无法解密使用已删除分支密钥

要防止集成测试中出现加密失败,请执行以下操作:

  • 在创建新的分支密钥之前重置分层密钥环引用或

  • IDs 为每个测试使用唯一的分支密钥

所需的权限

要轮换分支密钥,您需要密钥存储操作中指定的 KMS 密钥的 kms: GenerateDataKeyWithoutPlaintext 和 kms: ReEncrypt 权限。

轮换您的活动分支密钥

使用VersionKey操作轮换您的活动分支密钥。轮换活动分支密钥时,系统会创建新的分支密钥代替先前版本。当您轮换活动分支密钥时,branch-key-id 不会改变。在调用 VersionKey 时,必须指定用于标识当前活动分支密钥的 branch-key-id

Java
keystore.VersionKey( VersionKeyInput.builder() .branchKeyIdentifier("branch-key-id") .build() );
C# / .NET
keystore.VersionKey(new VersionKeyInput{BranchKeyIdentifier = branchKeyId});
Rust
keystore.version_key() .branch_key_identifier(branch_key_id) .send() .await?;