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 マネージドキー (aws/codecommit キー) を作成します。このキーは CodeCommit (aws/codecommit キー) によってのみ使用されます。このキーは、AWS アカウントに保存されます。CodeCommit は、この AWS マネージドキーを使用して、この CodeCommit リポジトリ内、および AWS アカウントの該当リージョン内にあるその他すべてのリポジトリの暗号化および復号を行います。

重要

また、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 マネジメントコンソール にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms) を開きます。

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

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

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

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

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

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 開発者ガイドを参照してください。