AWS Key Management Service和加密AWS CodeCommit存储库 - AWS CodeCommit

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

AWS Key Management Service和加密AWS CodeCommit存储库

CodeCommit 存储库中的数据在传输和静态状态下是加密的。当将数据推送到 CodeCommit 存储库时(例如,通过调用)git push) 中,CodeCommit 会在收到的数据存储到存储库中时对其进行加密。当从 CodeCommit 存储库中提取数据(例如,通过调用)git pull),CodeCommit 会解密数据,然后将其发送给调用方。上述过程假定与推送或提取请求关联的 IAM 用户已经过的身份验证。AWS. 发送或接收的数据使用 HTTPS 或 SSH 加密网络协议进行传输。

第一次在新版本中创建 CodeCommit 存储库 AWS 区域 在您的 Amazon Web Services 账户中,CodeCommit 创建 AWS 拥有的密钥 (aws/codecommitkey) 在同样 AWS 区域 在AWS Key Management Service(AWS KMS)。CodeCommit 只能使用该密钥(aws/codecommit键)。它存储在您的 Amazon Web Services 账户中。CodeCommit 使用这个 AWS 拥有的密钥 加密和解密您的 Amazon Web Services 账户中该区域内此存储库及所有其他 CodeCommit 存储库中的数据。

重要

CodeCommit 执行以下操作AWS KMS针对默认设置的操作aws/codecommit键。IAM 用户无需获得下述操作的显式权限,但也不得向该用户附加拒绝对aws/codecommit键。具体来说,当您创建第一个存储库时,您的 IAM 用户不得将以下任何权限设为deny

  • "kms:Encrypt"

  • "kms:Decrypt"

  • "kms:ReEncrypt"

  • "kms:GenerateDataKey"

  • "kms:GenerateDataKeyWithoutPlaintext"

  • "kms:DescribeKey"

要查看有关 AWS 拥有的密钥 由 CodeCommit 生成,请执行以下操作:

  1. 登录到 AWS Management Console,然后通过以下网址打开 AWS Key Management Service (AWS KMS) 控制台:https://console.aws.amazon.com/kms

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

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

  4. 在加密密钥列表中,选择 AWS 拥有的密钥 使用别名aws/codecommit. 有关的基本信息 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 存储库 IDAWS CloudTrail日志来了解对哪个密钥执行了加密操作AWS KMS以加密或解密 CodeCommit 存储库中的数据。

有关 AWS KMS 的更多信息,请参阅 AWS Key Management Service 开发人员指南