AWS Key Management Service 和加密 AWS CodeCommit 资料库 - AWS CodeCommit

AWS Key Management Service 和加密 AWS CodeCommit 资料库

数据 CodeCommit 存储库在传输中和静态处加密。当数据被推进到A CodeCommit 存储库 (例如,通过调用 git push), CodeCommit 对已接收的数据加密,因为它存储在存储库中。当数据从A中拉出时 CodeCommit 存储库 (例如,通过调用 git pull), CodeCommit 解密数据,然后将其发送给呼叫者。假设 IAM 与推送或拉动请求相关联的用户已经过通过 AWS. 发送或接收的数据使用 HTTPS 或 SSH 加密网络协议进行传输。

您第一次创建 CodeCommit 存储库 在您的 AWS 账户, CodeCommit 创建AWS管理的密钥 aws/codecommit 密钥) AWS Key Management Service (AWS KMS)。此密钥仅用于 CodeCommit ( aws/codecommit 键)。存储在您的 AWS 账户。 CodeCommit 使用此AWS管理的密钥对数据进行加密和解密 CodeCommit 在您的 AWS 账户。

重要

CodeCommit 执行以下操作 AWS KMS 违约行为 aws/codecommit 键。一个 IAM 用户不需要对这些操作的明确权限,但用户不得拥有拒绝这些操作的任何附加策略 aws/codecommit 键。当您创建第一个存储库时,您的 AWS 账户不得将以下任一权限设置为 :deny:

  • "kms:Encrypt"

  • "kms:Decrypt"

  • "kms:ReEncrypt"

  • "kms:GenerateDataKey"

  • "kms:GenerateDataKeyWithoutPlaintext"

  • "kms:DescribeKey"

要查看 CodeCommit 生成的 AWS 托管密钥的相关信息,请执行以下操作:

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Key Management Service (AWS KMS) 控制台:https://console.aws.amazon.com/kms

  2. 要更改 AWS 区域,请使用页面右上角的区域选择器。

  3. 在服务导航窗格中,选择 AWS 托管密钥. 请确保您已登录到要在其中查看密钥的 AWS 区域。

  4. 在加密密钥列表中,选择带有别名的AWS管理密钥 AWS/CO分解. 这将显示有关该 AWS 托管密钥的基本信息。

您无法更改或删除该 AWS 托管密钥。您不能使用客户管理的密钥 AWS KMS 如何加密或解密数据 CodeCommit 存储库。

加密算法如何用于加密存储库数据

CodeCommit 使用两种不同的方法来加密数据。6 MB 以下的单个 Git 对象使用 AES-GCM-256 进行加密,该方法提供数据完整性验证。单个 Blob 的介于 6 MB 和最大 2 GB 之间的对象使用 AES-CBC-256 进行加密。CodeCommit 始终验证加密上下文。

加密上下文

与 AWS KMS 集成的每项服务都会为加密和解密操作指定加密上下文。加密上下文是 AWS KMS 检查数据完整性时使用的额外的身份验证信息。如果为加密操作指定了加密上下文,则也必须在解密操作中指定它。否则,解密失败。 CodeCommit 使用 CodeCommit 存储库 加密上下文的ID。您可以使用 get-repository 命令或 CodeCommit 控制台以查找存储库ID。搜索 CodeCommit 存储库 ID中的ID AWS CloudTrail 日志以了解哪些密钥对哪些密钥进行了加密 AWS KMS 如何在 CodeCommit 存储库.

有关 AWS KMS,请参阅 AWS Key Management Service 开发人员指南.