KMS CMK で暗号化した EFS を ECS で利用する際に必要な権限を教えてください
困っていた内容
ECS で EFS をストレージとして使用することを検討しており、EFS は KMS CMK で暗号化されています。
組織のセキュリティ要件として、ECS のタスクロールやタスク実行ロールには最小権限を付与する必要があるため、CMK で暗号化された EFS にアクセスするための権限を調査しています。
KMS CMK で暗号化した EFS を ECS で利用する際に必要な権限を教えてください。
どう対応すればいいの?
タスクロールやタスク実行ロールに KMS に関する権限は不要です。
EFS ファイルシステムでは暗号化や復号化を透過的に実行するため、クライアント側での権限設定は不要です。
保管中のデータの暗号化 - Amazon Elastic File System
暗号化されたファイルシステムでは、データとメタデータはストレージに書き込まれる前にデフォルトで暗号化され、読み取り時に自動的に復号されます。このプロセスは Amazon EFS で透過的に処理されるため、アプリケーションを変更する必要はありません。
やってみた
Fargate で実行されている Amazon ECS コンテナまたはタスクに Amazon EFS ファイルシステムをマウントする | AWS re:Post
弊社ブログでは 2023 年版の手順が執筆されていますが、今回は上記ナレッジセンターの手順を参考に検証してみます。
まずは KMS コンソールで CMK をデフォルト設定で作成します。





続いて、CMK で暗号化した EFS ファイルシステムを作成しました。
CMK の設定以外はデフォルト値です。

EFS ファイルシステムの作成完了後、ECS コンソールでクラスターをデフォルト設定で作成します。

クラスターの作成完了後、タスク定義を作成します。

タスクロールは設定せず、タスク実行ロールにデフォルトの ecsTaskExecutionRole を設定します。
ecsTaskExecutionRole にはマネージドポリシーである AmazonECSTaskExecutionRolePolicy のみがアタッチされており、AmazonECSTaskExecutionRolePolicy の権限は以下の通りです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
上記権限には KMS に関する権限が含まれていないことがわかります。
コンテナイメージには nginx を指定しました。

EFS ファイルシステムのマウント確認用に Docker 設定にコマンドを追加します。
- エントリポイント:
sh,-c - コマンド:
ls -la /mnt/efs && echo 'EFS mount OK' && sleep 3600

ボリュームセクションで EFS ファイルシステムをボリュームとして追加します。

その他の設定はデフォルト値でタスク定義を作成します。
タスク定義の作成完了後、タスクを実行します。


ネットワークについてですが、今回は EFS ファイルシステムと ECS タスクで VPC のデフォルトセキュリティグループを使用しており、同セキュリティグループからのすべてのトラフィックを許可しています。
そのため、EFS ファイルシステムおよび ECS タスクそれぞれでのセキュリティグループ設定はスキップしていますが、リソースごとにセキュリティグループが分かれている場合にはナレッジセンターを参考に 2049 ポートを許可する設定を行ってください。

その他の設定はデフォルト設定でタスクを作成します。
タスクの実行後、CloudWatch Logs のログに以下のような内容が出力されていればマウントできています。
drwxr-xr-x. 2 root root 6144 May 5 01:53 .
drwxr-xr-x. 1 root root 4096 May 5 02:17 ..
EFS mount OK
以上より、KMS CMK で暗号化した EFS を ECS で利用する際にタスクロールやタスク実行ロールに KMS に関する権限は不要なことを確認できました。









