AWS CodeCommit
用户指南 (API 版本 2015-04-13)

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

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

当您首次在 AWS 账户的新 AWS 区域中创建 CodeCommit 存储库时,CodeCommit 会在 AWS Key Management Service (AWS KMS) 中的同一 AWS 区域中创建 AWS 托管密钥(aws/codecommit 密钥)。此密钥仅由 CodeCommit 使用(aws/codecommit密钥)。该密钥存储在您的 AWS 账户中。CodeCommit 使用该 AWS 托管密钥加密和解密您的 AWS 账户中该区域内此存储库及所有其他 CodeCommit 存储库中的数据。

重要

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

  • "kms:Encrypt"

  • "kms:Decrypt"

  • "kms:ReEncrypt"

  • "kms:GenerateDataKey"

  • "kms:GenerateDataKeyWithoutPlaintext"

  • "kms:DescribeKey"

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

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.aws.amazon.com/iam/

  2. 在服务导航窗格中,选择 Encryption Keys。(如果出现欢迎页面,请选择 Get Started Now (立即开始使用)。)

  3. Filter (筛选条件) 中,选择您的存储库的 AWS 区域。例如,如果存储库创建在us-east-2中,请确保将筛选条件设为 美国东部(俄亥俄州)。

  4. 在加密密钥列表中,选择别名为 aws/codecommit 的 AWS 托管密钥。这将显示有关该 AWS 托管密钥的基本信息。

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

加密上下文

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

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

本页内容: