AWS Key Management Service と AWS CodeCommit リポジトリの暗号化 - AWS CodeCommit

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 マネージドキー」を参照してください。カスタマーマネージドキーを指定しない場合、リポジトリ内のデータのAWS マネージドキー暗号化と復号に CodeCommit が使用されます。この AWS マネージドキーは AWS アカウントで自動的に作成されます。AWS リージョン Amazon Web Services アカウントの新しい に CodeCommit リポジトリを初めて作成するときに、カスタマーマネージドキーを指定しない場合、 は AWS マネージドキー () の同じ AWS リージョンに AWS Key Management Service ( aws/codecommitキー) CodeCommit を作成しますAWS KMS。この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 は、対称キーの使用のみをサポートします。

  • キーの使用タイプは [暗号化と復号化] に設定する必要があります。

カスタマーマネージドキーの作成の詳細については、「概念」および「キーの作成」を参照してください。

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

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

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

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

  4. 暗号化キーのリストで、エイリアス 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 リポジトリ ID CodeCommit を使用します。get-repository コマンドまたは CodeCommit コンソールを使用してリポジトリ ID を検索できます。AWS CloudTrail ログで CodeCommit リポジトリ ID を検索して、 CodeCommit リポジトリ内のデータを暗号化または復号AWS KMSするために でどのキーに対してどの暗号化オペレーションが行われたかを把握します。

AWS KMS の詳細については、「AWS Key Management Service デベロッパーガイド」を参照してください。