CodePipeline 用に Amazon S3 に保存したアーティファクトのサーバー側の暗号化を設定する - AWS CodePipeline

CodePipeline 用に Amazon S3 に保存したアーティファクトのサーバー側の暗号化を設定する

Amazon S3 アーティファクトのサーバー側の暗号化を設定するには、次の 2 つの方法があります。

  • CodePipeline は、Create Pipeline ウィザードを使用してパイプラインを作成すると、S3 アーティファクトバケットとデフォルトの AWS マネージドキー が作成されます。AWS マネージドキー はオブジェクトデータとともに暗号化され、AWS によって管理されます。

  • 独自の カスタマーマネージドキー を作成して管理できます。

重要

CodePipeline は、対称 KMS キーのみを対応しています。非対称 KMS キーを使用して S3 bucket のデータを暗号化しないでください。

デフォルトの S3 キーを使用している場合、この を変更または削除することはできませんAWS マネージドキー カスタマーマネージドキーを使用して AWS KMS で S3 バケット内のアーティファクトを暗号化または復号する場合は、必要に応じてカスタマーマネージドキーを変更または更新できます。

Amazon S3 は、バケットに格納されているすべてのオブジェクトに対してサーバー側の暗号化が必要な場合に使用できるバケットポリシーをサポートしています。例えば、SSE-KMS を使用したサーバー側の暗号化を要求する s3:PutObject ヘッダーがリクエストに含まれていない場合、次のバケットポリシーはすべてのユーザーに対し、オブジェクト (x-amz-server-side-encryption) をアップロードするアクセス許可を拒否します。

JSON
{ "Version":"2012-10-17", "Id": "SSEAndSSLPolicy", "Statement": [ { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-us-west-2-89050EXAMPLE/*", "Condition": { "Bool": { "aws:SecureTransport": "false" } } } ] }

サーバー側の暗号化および AWS KMS の詳細に関しては、「サーバー側の暗号化を使用したデータの保護」および「AWS Key Management Service (SSE-KMS) に保存されているサーバー側の暗号化を使用してデータを保護する」を参照してください。

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

AWS マネージドキー の表示

[パイプラインの作成] ウィザードを使用して最初のパイプラインを作成すると、パイプラインを作成したのと同じリージョンに S3 バケットが作成されます。バケットは、パイプラインアーティファクトを格納するために使用されます。パイプラインを実行すると、アーティファクトが、S3 バケットに入れられるか、そこから取得されます。CodePipeline は、デフォルトでは、サーバー側の暗号化を使用します。AWS マネージドキー を使用して AWS KMS を Amazon S3 (aws/s3 キー) に使用します。この AWS マネージドキー は、AWS アカウントに作成され、保存されます。アーティファクトが S3 バケットから取得されると、CodePipeline は同じ SSE-KMS プロセスを使用してアーティファクトを復号化します。

自分の に関する情報の表示AWS マネージドキー
  1. AWS マネジメントコンソール にサインインして、AWS KMS コンソールを開きます。

  2. ウェルカムページが表示される場合は、[今すぐ始める] を選択します。

  3. サービスのナビゲーションペインで、[AWS managed keys] を選択します。

  4. パイプラインのリージョンを選択します。例えば、パイプラインが us-east-2 に作成されている場合は、フィルタが 米国西部 (オハイオ州) に設定されていることを確認します。

    CodePipeline で使用できるリージョンとエンドポイントの詳細については、「AWS CodePipeline エンドポイントとクォータ」を参照してください。

  5. リスト内のパイプラインに使用されるエイリアスがあるキー (デフォルトは aws/s3) を選択します。キーの基本情報が表示されます。

CloudFormation または AWS CLI を使用して S3 バケットのサーバー側の暗号化を設定する

CloudFormation または AWS CLI を使用してパイプラインを作成する際は、サーバー側の暗号化を手動で設定する必要があります。上記のサンプルバケットポリシーを使用して、独自のカスタマーマネージドキーを作成します。デフォルトの キーの代わりに独自のキーを使用することもできますAWS マネージドキー 独自のキーを選択する理由には、次のようなものがあります。

暗号化のベストプラクティスでは、暗号化キーの広範な再利用を推奨していません。ベストプラクティスとして、キーを定期的にローテーションします。AWS KMS キーの新しい暗号化マテリアルを作成するために、カスタマーマネージドキーを作成し、アプリケーションまたはエイリアスを変更して新しいカスタマーマネージドキーを使用できます。または、既存の カスタマー管理キー の自動キーローテーションを有効にすることができます。

カスタマーマネージドキーをローテーションするには、「キーローテーション」を参照してください。

重要

CodePipeline は、対称 KMS キーのみを対応しています。非対称 KMS キーを使用して S3 bucket のデータを暗号化しないでください。