Amazon ECS タスクにアタッチされた Amazon EBS ボリュームに保存されているデータの暗号化 - Amazon Elastic Container Service

Amazon ECS タスクにアタッチされた Amazon EBS ボリュームに保存されているデータの暗号化

AWS Key Management Service (AWS KMS) を使用して、データを保護する暗号化キーを作成および管理できます。Amazon EBS ボリュームは、保管時には AWS KMS keys を使用して暗号化されます。以下の種類のデータが暗号化されます。

  • ボリュームに保管されているデータ

  • ディスク I/O

  • ボリュームから作成されるスナップショット

  • 暗号化されたスナップショットから作成された新しいボリューム

タスクにアタッチされている Amazon EBS ボリュームは、エイリアス alias/aws/ebs の付いたデフォルトのAWS マネージドキー か、もしくはボリューム設定に指定されているカスタマーマネージド対称キーを使用して暗号化できます。デフォルトの AWS マネージドキー はそれぞれの AWS リージョン ごとの AWS アカウント に対して固有で、自動的に作成されます。カスタマーマネージド型対称キーを作成するには、「AWS KMS デベロッパーガイド」の「対称暗号化 KMS キーの作成」のステップに従います。

Amazon EBS 暗号化をデフォルトで設定できます。これにより、特定の AWS リージョン 内のタスクにアタッチされた新しいボリュームはすべて、アカウントに設定した KMS キーを使用して暗号化されます。Amazon EBS の暗号化およびデフォルトの暗号化の詳細については、「Amazon EBS ユーザーガイド」の「Amazon EBS の暗号化」を参照してください。

クラスターを作成または更新する時に、Amazon ECS マネージドストレージの Amazon ECS クラスターレベルの暗号化を設定することもできます。クラスターレベルの暗号化を使用することで、クラスターレベルで指定された KMS キーを使用して、特定のクラスターで実行されているタスクにアタッチされたすべての Amazon EBS ボリュームを暗号化できます。クラスターレベルでの暗号化設定の詳細については、「Amazon ECS API リファレンス」の「マネージドストレージ設定」を参照してください。

これらのキーは任意の組み合わせで設定できます。KMS キーの優先順位は次のとおりです。

  1. ボリューム設定で指定された KMS キー。ボリューム設定で KMS キーを指定すると、Amazon EBS のデフォルトとクラスターレベルで指定した KMS キーがオーバーライドされます。

  2. クラスターレベルで指定された KMS キー。Amazon ECS マネージドストレージのクラスターレベルの暗号化に KMS キーを指定すると、Amazon EBS のデフォルトの暗号化はオーバーライドされますが、ボリューム設定に指定した KMS キーはオーバーライドされません。

  3. Amazon EBS のデフォルトの暗号化。デフォルトの暗号化は、クラスターレベルの KMS キーまたはボリューム設定でキーを指定しない場合に適用されます。Amazon EBS 暗号化をデフォルトで有効にすると、デフォルトの暗号化用に指定した KMS キーがデフォルトになります。それ以外の場合、デフォルトはエイリアス alias/aws/ebs の AWS マネージドキー になります。

    注記

    encrypted を ボリューム設定 の false に設定し、クラスターレベルの KMS キーを指定せずにデフォトで Amazon EBS 暗号化を有効にすると、そのボリュームはデフォルトで Amazon EBS 暗号化に指定されたキーで暗号化されます。

カスタマーマネージド型 KMS キーのポリシー

カスタマーマネージド型キーを使用してタスクにアタッチされている EBS ボリュームを暗号化するには、KMS キーポリシーを設定して、ボリューム設定に使用する IAM ロールにキーの使用に必要な権限を付与する必要があります。キーポリシーには、kms:CreateGrantkms:GenerateDataKey* 両方のアクセス許可を含める必要があります。スナップショットを使用して作成されたボリュームを暗号化するには、kms:ReEncryptTo および kms:ReEncryptFrom のアクセス許可が必要です。アタッチする新しい空のボリュームのみを設定して暗号化する場合は、kms:ReEncryptTo および kms:ReEncryptFrom のアクセス許可は除外できます。

以下の JSON スニペットは、KMS キーポリシーにアタッチするキーポリシーステートメントを示します。これらのステートメントにより、Amazon ECS がキーを使用して EBS ボリュームを暗号化できるようになります。ここに挙げたポリシーステートメントを実行するには、user input placeholders をユーザー自身の情報に置き換えます。他の場合と同様に、必要な権限のみを設定してください。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": "kms:DescribeKey", "Resource":"*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": [ "kms:GenerateDataKey*", "kms:ReEncryptTo", "kms:ReEncryptFrom" ], "Resource":"*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "ec2.region.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:ebs:id" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" }, "Action": "kms:CreateGrant", "Resource":"*", "Condition": { "StringEquals": { "kms:CallerAccount": "aws_account_id", "kms:ViaService": "ec2.region.amazonaws.com" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:ebs:id" }, "Bool": { "kms:GrantIsForAWSResource": true } } }

キーポリシーとアクセス許可について詳しくは、「AWS KMS 開発者ガイド」の「AWS KMS のキーポリシー」と「AWS KMS アクセス許可」を参照してください。キーのアクセス許可に関連する EBS ボリュームアタッチメントのトラブルシューティングについては、「Amazon ECS タスクへの Amazon EBS ボリュームのアタッチに関するトラブルシューティング 」を参照してください。