

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 アカウントで自動的に作成されます。 AWS リージョン Amazon Web Services アカウントの新しい に CodeCommit リポジトリを初めて作成するときに、カスタマーマネージドキーを指定しない場合、CodeCommit は AWS マネージドキー () の同じ AWS リージョン に AWS Key Management Service (`aws/codecommit`キー) を作成しますAWS KMS。この `aws/codecommit` キーは CodeCommit によってのみ使用されます。これは、アマゾン ウェブ サービスアカウントに保存されます。指定した内容に応じて、CodeCommit はカスタマーマネージドキーまたは AWS マネージドキー を使用してリポジトリ内のデータを暗号化および復号します。

**重要**  
 CodeCommit は、リポジトリ内のデータの暗号化と復号に使用される AWS KMS キーに対して次の AWS KMS アクションを実行します。を使用している場合 AWS マネージドキー、ユーザーはこれらのアクションに対する明示的なアクセス許可を必要としませんが、`aws/codecommit`キーのこれらのアクションを拒否するポリシーをアタッチすることはできません。 AWS アカウント ID がそのキーのポリシープリンシパルとして設定されたカスタマーマネージドキーを使用している場合は、これらのアクセス許可を明示的に に設定する必要があります`allow`。具体的には、最初のリポジトリを作成し、リポジトリのキーを更新するときに、 を使用している場合`deny`は、次のアクセス許可を に設定しないでください。ポリシープリンシパルでカスタマーマネージドキーを使用している場合`allow`は AWS マネージドキー、 を に設定する必要があります。  
`"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://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) で AWS Key Management Service (AWS KMS) コンソールを開きます。

1. を変更するには AWS リージョン、ページの右上隅にあるリージョンセレクターを使用します。

1. サービスナビゲーションペインで、[**AWS マネージドキー**] を選択します。キー AWS リージョン を確認する にサインインしていることを確認します。

1. 暗号化キーのリストで、エイリアス **aws/codecommit** AWS マネージドキー を持つ を選択します。に関する基本情報 AWS 所有のキー が表示されます。

これを変更または削除することはできません AWS マネージドキー。

## 暗号化アルゴリズムを使用してリポジトリデータを暗号化する方法
<a name="encryption-algorithms"></a>

CodeCommit では、2 つの異なる方法でデータを暗号化します。6 MB 未満の個々の Git オブジェクトは、データ整合性の検証を提供する AES-GCM-256 を使用して暗号化されます。1 つの blob の 6 MB から最大 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/)」を参照してください。