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 で暗号化されたネットワークプロトコルを使用して送信されます。

AWS アカウントの新しい AWS リージョンで初めて CodeCommit リポジトリ を作成するときは、CodeCommit が AWS Key Management Service (AWS KMS) で同じ AWS リージョンに AWS マネージド CMK (aws/codecommit キー) を作成します。このキーは CodeCommit (aws/codecommit キー) によってのみ使用され、AWS アカウントに保存されます。CodeCommit は、この AWS マネージド CMK を使用して、この CodeCommit リポジトリと、AWS アカウントの該当リージョンにあるその他すべてのリポジトリ内のデータを暗号化し、復号化します。

重要

また、CodeCommit は、デフォルトの aws/codecommit キーに対して、AWS KMS アクションを実行します。IAM ユーザーに、これらのアクションを行うための明示的なアクセス許可は不要ですが、aws/codecommit キーに対するこれらのアクションを拒否するポリシーをアタッチすることはできません。具体的には、最初のリポジトリを作成する場合、IAM ユーザーは以下のアクセス許可のいずれも deny に設定しないようにする必要があります。

  • "kms:Encrypt"

  • "kms:Decrypt"

  • "kms:ReEncrypt"

  • "kms:GenerateDataKey"

  • "kms:GenerateDataKeyWithoutPlaintext"

  • "kms:DescribeKey"

CodeCommit によって生成された AWS マネージドキーに関する情報を表示するには、次の操作を行います。

  1. AWS マネジメントコンソール にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

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

  3. サービスのナビゲーションペインで、[AWS managed keys] を選択します。キーを確認する AWS リージョンにサインインしていることを確認します。

  4. 暗号化キーのリストで、エイリアスが aws/codecommit の AWS マネージド CMK を選択します。AWS マネージド CMK の基本情報が表示されます。

この AWS マネージド CMK を変更または削除することはできません。CodeCommit リポジトリ内のデータの暗号化または復号化に AWS KMS のカスタマーマネージドキーを使用することはできません。

暗号化アルゴリズムを使用してリポジトリデータを暗号化する方法

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 を検索し、AWS KMS で行う暗号化オペレーションと、そのオペレーションで使用するキーを確認し、CodeCommit リポジトリ のデータを暗号化または復号します。

AWS KMS の詳細については、AWS Key Management Service 開発者ガイドを参照してください。