新規のお客様への AWS CodeCommit の提供は終了しました。AWS CodeCommit の既存のお客様は、通常どおりサービスを引き続き使用できます。詳細はこちら
AWS Key Management Service と AWS CodeCommit リポジトリの暗号化
CodeCommit リポジトリ内のデータは、転送中と不使用時のいずれも暗号化されます。データが CodeCommit リポジトリにプッシュされると (git push を呼び出すことによってプッシュされる場合など)、リポジトリに格納されると同時に、CodeCommit は受信データを暗号化します。データが CodeCommit リポジトリからプルされると (例: git pull を呼び出す)、CodeCommit は、データを復号し、発信者にその復号データを送信します。このやり取りは、プッシュリクエストまたはプルリクエストと関連付けられた IAM ユーザーが によって認証済みであることを前提としていますAWS 送信データまたは受信データは、HTTPS または SSH で暗号化されたネットワークプロトコルを使用して送信されます。
AWS マネージドキーまたはカスタマーマネージドキーを使用して、リポジトリ内のデータを暗号化または復号できます。カスタマーマネージドキーと AWS マネージドキーの違いの詳細については、「カスタマーキーと AWS マネージドキー」を参照してください。カスタマーマネージドキーを指定しない場合、CodeCommit はリポジトリ内のデータの暗号化と復号に AWS マネージドキーを使用します。この AWS マネージドキーは AWS アカウントで自動的に作成されます。Amazon Web Services アカウントの新しい AWS リージョンに CodeCommit リポジトリを初めて作成する際に、カスタマーマネージドキーを指定しないと、CodeCommit は AWS Key Management Service (AWS KMS) の同じ AWS リージョンに AWS マネージドキー (aws/codecommit キー) を作成します。この aws/codecommit キーは CodeCommit によってのみ使用されます。これは、アマゾン ウェブ サービスアカウントに保存されます。指定した内容に応じて、CodeCommit はカスタマーマネージドキーまたは AWS マネージドキーを使用してリポジトリ内のデータを暗号化および復号します。
重要
CodeCommit は、リポジトリ内のデータの暗号化と復号に使用される AWS KMS キーに対して次の AWS KMS アクションを実行します。AWS マネージドキーを使用している場合、これらのアクションを行うための明示的なアクセス許可は不要ですが、aws/codecommit キーに対するこれらのアクションを拒否するポリシーをアタッチすることはできません。AWS アカウント ID がそのキーのポリシープリンシパルとして設定されたカスタマーマネージドキーを使用している場合は、これらのアクセス許可を明示的に allow に設定する必要があります。具体的には、初めてリポジトリを作成したり、リポジトリのキーを更新したりする場合、AWS マネージドキー を使用している場合は以下のアクセス許可をいずれも deny に設定してはならず、ポリシープリンシパルと共にカスタマーマネージドキーを使用する場合は allow に設定する必要があります。
-
"kms:Encrypt" -
"kms:Decrypt" -
"kms:ReEncrypt"(コンテキストによっては、これにはkms:ReEncryptFrom、kms:ReEncryptTo、またはkms:ReEncrypt*が拒否に設定されていないことが必要になる場合があります。) -
"kms:GenerateDataKey" -
"kms:GenerateDataKeyWithoutPlaintext" -
"kms:DescribeKey"
独自のカスタマーマネージドキーを使用する場合、キーはリポジトリが存在する AWS リージョンで利用できる必要があります。CodeCommit は、単一リージョンとマルチリージョンの両方のカスタマーマネージドキーの使用をサポートします。キーマテリアルのオリジンタイプはすべてサポートされていますが、デフォルトの [KMS] オプションを使用することをお勧めします。[外部キーストア] オプションを使用する場合、ストアプロバイダによる遅延が発生する可能性があります。加えて: CodeCommit では、カスタマーマネージドキーを使用する場合、次の要件があります。
-
CodeCommit は対称キーの使用のみをサポートします。
-
キーの使用タイプは [暗号化と復号化] に設定する必要があります。
カスタマーマネージドキーの作成の詳細については、「概念」および「キーの作成」を参照してください。
CodeCommit によって生成された AWS マネージドキーに関する情報を表示するには、次の操作を行います。
-
AWS マネジメントコンソール にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms
) を開きます。 -
AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。
-
サービスナビゲーションペインで、[AWS マネージドキー] を選択します。キーを確認する AWS リージョンにサインインしていることを確認します。
-
暗号化キーのリストで、エイリアス aws/codecommit を使用して、AWS マネージドキーを選択します。AWS 所有のキーの基本情報が表示されます。
この AWS マネージドキーを変更または削除することはできません。
暗号化アルゴリズムを使用してリポジトリデータを暗号化する方法
CodeCommit では、2 つの異なる方法でデータを暗号化します。6 MB 未満の個々の Git オブジェクトは、データ整合性の検証を提供する AES-GCM-256 を使用して暗号化されます。1 つの blob の 6 MB から最大 2 GB のオブジェクトは、AES-CBC-256 を使用して暗号化されます。CodeCommit は常に暗号化コンテキストを検証します。
暗号化コンテキスト
AWS KMS と統合されている各サービスでは、暗号化オペレーションや復号オペレーションの両方に関する暗号化コンテキストが指定されています。暗号化コンテキストは、データの整合性を調べるために AWS KMS で使用される追加の認証情報です。暗号化オペレーションに対して暗号化コンテキストを指定するときは、復号オペレーションに対しても指定する必要があります。そうしないと、復号は失敗します。CodeCommit は、暗号化コンテキストに CodeCommit リポジトリ ID を使用します。get-repository コマンドまたは CodeCommit コンソールを使用してリポジトリ ID を見つけることができます。AWS CloudTrail ログで CodeCommit リポジトリ ID を検索し、CodeCommit リポジトリ内のデータを暗号化または復号するために AWS KMS のどのキーに対してどの暗号化オペレーションが行われたのかを把握します。
AWS KMS の詳細については、AWS Key Management Service 開発者ガイドを参照してください。