

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS Key Management Service 和 AWS CodeCommit 儲存庫的加密
<a name="encryption"></a>

CodeCommit 儲存庫中的資料會在傳輸中和靜態時加密。當資料推送到 CodeCommit 儲存庫時 （例如，透過呼叫 **git push**)，CodeCommit 會在接收到的資料存放在儲存庫時加密。從 CodeCommit 儲存庫提取資料時 （例如，透過呼叫 **git pull**)，CodeCommit 會解密資料，然後將資料傳送給發起人。這會假設與推送或提取請求相關聯的 IAM 使用者已通過身分驗證 AWS。傳送或接收的資料是利用 HTTPS 或 SSH 加密網路通訊協定來傳輸。

您可以使用 AWS 受管金鑰 或客戶受管金鑰來加密和解密儲存庫中的資料。如需客戶受管金鑰和 之間差異的詳細資訊 AWS 受管金鑰，請參閱[客戶受管金鑰和 AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)。如果您未指定客戶受管金鑰，CodeCommit 將使用 AWS 受管金鑰 來加密和解密儲存庫中的資料。這是自動為您在 中 AWS 受管金鑰 建立的 AWS 帳戶。第一次在 Amazon Web Services 帳戶中的新 AWS 區域 中建立 CodeCommit 儲存庫時，如果您未指定客戶受管金鑰，CodeCommit 會在相同的 AWS 區域 in AWS 受管金鑰 () 中建立 AWS Key Management Service (`aws/codecommit`金鑰）AWS KMS。此`aws/codecommit`金鑰僅供 CodeCommit 使用。它存放在您的 Amazon Web Services 帳戶中。根據您指定的內容，CodeCommit 會使用客戶受管金鑰或 AWS 受管金鑰 來加密和解密儲存庫中的資料。

**重要**  
 CodeCommit 會對用於加密和解密儲存庫中資料的 AWS KMS 金鑰執行下列 AWS KMS 動作。如果您使用的是 AWS 受管金鑰，則使用者不需要這些動作的明確許可，但使用者不得有任何連接政策拒絕`aws/codecommit`金鑰的這些動作。如果您使用的是 AWS 帳戶 ID 設定為該金鑰政策主體的客戶受管金鑰，這些許可必須明確設定為 `allow`。具體而言，當您建立第一個儲存庫時，如果您更新儲存庫的金鑰，`deny`如果您使用 ，則不得將下列任何許可設定為 AWS 受管金鑰，`allow`如果您使用具有政策主體的客戶受管金鑰，則必須將 設定為 ：  
`"kms:Encrypt"`
`"kms:Decrypt"`
`"kms:ReEncrypt"` （視內容而定，這可能需要 `kms:ReEncryptFrom`、  
`kms:ReEncryptTo`，或未`kms:ReEncrypt*`設定為拒絕）
`"kms:GenerateDataKey"`
`"kms:GenerateDataKeyWithoutPlaintext"`
`"kms:DescribeKey"`

如果您想要使用自己的客戶受管金鑰，金鑰必須在儲存 AWS 區域 庫所在的 中可用。CodeCommit 支援使用單一和多區域客戶受管金鑰。雖然支援所有金鑰材料來源類型，但建議使用預設 **KMS** 選項。使用**外部金鑰存放**區選項的客戶可能會遇到來自其存放區提供者的延遲。此外。CodeCommit 對客戶受管金鑰有下列需求：
+ CodeCommit 僅支援使用對稱金鑰。
+ 金鑰用量類型必須設定為**加密和解密**。

如需建立客戶受管金鑰的詳細資訊，請參閱[概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-mgmt)和[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

若要查看 CodeCommit AWS 受管金鑰 產生之 的相關資訊，請執行下列動作：

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 的 AWS Key Management Service (AWS KMS) 主控台。

1. 若要變更 AWS 區域，請使用頁面右上角的區域選擇器。

1. 在服務導覽窗格中，選擇 **AWS 受管金鑰**。請確定您已登入要檢閱金鑰 AWS 區域 的 。

1. 在加密金鑰清單中，選擇 AWS 受管金鑰 具有別名 **aws/codecommit** 的 。 AWS 擁有的金鑰 隨即顯示 的基本資訊。

您無法變更或刪除此項目 AWS 受管金鑰。

## 如何使用加密演算法來加密儲存庫資料
<a name="encryption-algorithms"></a>

CodeCommit 使用兩種不同的方法來加密資料。小於 6 MB 的個別 Git 物件是使用 AES-GCM-256 進行加密，此方法會提供資料完整性驗證。介於 6 MB 和單一 Blob 最大 2 GB 之間的物件會使用 AES-CBC-256 加密。CodeCommit 一律驗證加密內容。

## 加密內容
<a name="encryption-context"></a>

與 整合的每個服務都會 AWS KMS 指定加密和解密操作的加密內容。加密環境是 AWS KMS 用來檢查資料完整性的額外驗證資訊。如果為加密操作指定，則在解密操作中也必須指定。否則，解密會失敗。CodeCommit 會將 CodeCommit 儲存庫 ID 用於加密內容。您可以使用 **get-repository**命令或 CodeCommit 主控台來尋找儲存庫 ID。在 AWS CloudTrail 日誌中搜尋 CodeCommit 儲存庫 ID，以了解在 CodeCommit 儲存庫中 AWS KMS 要加密或解密資料的 金鑰所採取的加密操作。

如需 的詳細資訊 AWS KMS，請參閱 [AWS Key Management Service 開發人員指南](https://docs.aws.amazon.com/kms/latest/developerguide/)。