Amazon ECS 向け Fargate エフェメラルストレージの暗号化キーを作成する
Fargate エフェメラルストレージに保存されているデータを暗号化するためのカスタマーマネージドキーを作成します。
注記
カスタマーマネージドキーによる Fargate エフェメラルストレージの暗号化は、Windows タスククラスターでは利用できません。
カスタマーマネージドキーによる Fargate エフェメラルストレージの暗号化は、1.4.0
より前のバージョンの platformVersions
では利用できません。
Fargate は、Fargate のみが使用するエフェメラルストレージのスペースを予約します。そのスペースに対して料金は発生しません。割り当ては、カスタマー管理以外のキータスクとは異なる場合がありますが、スペースの合計は変わりません。この変更については、df
などのツールで確認できます。
マルチリージョンキーは、Fargate エフェメラルストレージではサポートされていません。
KMS キーエイリアスは、Fargate エフェメラルストレージではサポートされていません。
AWS KMS で Fargate のエフェメラルストレージを暗号化するカスタマーマネージドキー (CMK) を作成するには、次のステップに従ってください。
-
手順については、「AWS Key Management Service デベロッパーガイド」の「Creating Keys」を参照してください。
-
AWS KMS キーを作成するときは、キーポリシーで Fargate サービスに関連する AWS KMS オペレーションのアクセス許可を必ず付与してください。Amazon ECS クラスターリソースでカスタマー管理キーを使用するには、ポリシーで次の API オペレーションを許可する必要があります。
-
kms:GenerateDataKeyWithoutPlainText
‐GenerateDataKeyWithoutPlainText
を呼び出し、提供された AWS KMS キーから暗号化されたデータキーを生成します。 -
kms:CreateGrant
- カスタマーマネージドキーに許可を追加します。指定された AWS KMS キーへのアクセス制御を付与します。これは、Amazon ECS Fargate が必要なグラントオペレーションへのアクセスを許可するものです。詳細については、「AWS Key Management Service デベロッパーガイド」の「Using Grants」を参照してください。これにより、Amazon ECS Fargate で以下を行うことができます。-
Decrypt
から AWS KMS を呼び出し、エフェメラルストレージのデータを復号するための暗号化キーを取得します。 -
RetireGrant
にサービスが許可するための、廃止するプリンシパルを設定します。
-
-
kms:DescribeKey
— カスタマーマネージドキーの詳細を提供し、キーが対称、かつ有効である場合に、Amazon ECS がキーを検証できるようにします。
次の例は、暗号化するターゲットキーに適用する AWS KMS キーポリシーを示しています。ポリシーステートメントの例を使用する際は、
ユーザー入力用プレースホルダー
を独自の情報に置き換えます。通常どおり、必要なアクセス許可のみを設定しますが、エラーを回避するために、少なくとも 1 人のユーザーにアクセス許可付きの AWS KMS を提供する必要があります。{ "Sid": "Allow generate data key access for Fargate tasks.", "Effect": "Allow", "Principal": { "Service":"fargate.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:ecs:clusterAccount": [ "
customerAccountId
" ], "kms:EncryptionContext:aws:ecs:clusterName": [ "clusterName
" ] } }, "Resource": "*" }, { "Sid": "Allow grant creation permission for Fargate tasks.", "Effect": "Allow", "Principal": { "Service":"fargate.amazonaws.com" }, "Action": [ "kms:CreateGrant" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:ecs:clusterAccount": [ "customerAccountId
" ], "kms:EncryptionContext:aws:ecs:clusterName": [ "clusterName
" ] }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt" ] } }, "Resource": "*" }, { "Sid": "Allow describe key permission for cluster operator - CreateCluster and UpdateCluster.", "Effect": "Allow", "Principal": { "AWS":"arn:aws:iam::customerAccountId
:role/customer-chosen-role
" }, "Action": [ "kms:DescribeKey" ], "Resource": "*" }Fargate タスクでは、キーを使用する暗号化オペレーションに
aws:ecs:clusterAccount
およびaws:ecs:clusterName
暗号化コンテキストキーを使用します。特定のアカウントやクラスターへのアクセスを制限するには、これらのアクセス許可を追加する必要があります。クラスターを指定するときは、ARN ではなくクラスター名を使用してください。詳しくは、AWS KMS デベロッパーガイドの Encryption context を参照してください。
クラスターを作成または更新する場合、条件キー
fargateEphemeralStorageKmsKeyId
を使用するオプションを利用できます。この条件キーにより、お客様は IAM ポリシーをよりきめ細かく制御できます。fargateEphemeralStorageKmsKeyId
設定の更新は、新しいサービスのデプロイでのみ有効になります。以下は、お客様が特定の承認された AWS KMS キーのセットにのみアクセス許可を付与できるようにする例です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:UpdateCluster" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:fargate-ephemeral-storage-kms-key": "arn:aws:kms:
us-west-2
:111122223333
:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
" } } } ] }次に、クラスターに既に関連付けられている AWS KMS キーの削除を拒否する例を示します。
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "ecs:CreateCluster", "ecs:UpdateCluster" ], "Resource": "*", "Condition": { "Null": { "ecs:fargate-ephemeral-storage-kms-key": "true" } } } }
お客様は、AWS CLI、
describe-tasks
、describe-cluster
またはdescribe-services
コマンドを使用して、管理されていないタスクまたはサービスタスクが、キーを使用して暗号化されているかどうかを確認できます。詳細については、「AWS KMS デベロッパーガイド」の「Condition keys for AWS KMS」を参照してください。
-