こんにちは。
アシミネです。
最近はCDKを練習してます。
CDKにてECSタスクにEFSボリュームをアタッチする際にエラーではまりまして、、、
そのエラーを解消するにあたりベストプラクティスを紹介するドキュメントを参考にしたのですが、初知りの情報が多く理解に時間がかかったので、ここにまとめることで頭のなかを整理したいと思います。
早速いきましょうか。
ECSタスクにEFSボリュームをマウントする際のベストプラクティス -セキュリティ編-
セキュリティを確保するために必要なことは ”データの暗号化” と “アクセス制御” 。
ここでは設定方法も紹介します。設定方法が簡単である、ということが分かっていただければと。
🔐データの暗号化
EFSが保存しているデータ、および転送中のデータを暗号化することでセキュリティを確保します。
簡単な操作だけでデータ暗号化を有効化できます。
データ暗号化に関する操作、簡単ですね。
🛂アクセス制御
EFSボリュームへのアクセスを制限する方法が3つ紹介されています。
- セキュリティグループによるアクセス制御
- IAM認証によるアクセス制御
- EFSアクセスポイントによるアクセス制御
一つずつ見ていきましょう。
1. セキュリティグループによるアクセス制御
EFSマウントターゲットにはセキュリティグループをアタッチできます。
EFSマウントターゲットのセキュリティグループには、アクセス元であるECSタスクのセキュリティグループからのNFSトラフィックのみを許可しましょう。
基本的な手法で、理解しやすい内容ですね。
2. IAM認証によるアクセス制御
その名の通りIAMロールを利用しEFSへのアクセス権を制御します。
EFSのファイルシステムポリシーにてアクセス許可するIAMロールを設定します。
さらに、タスク定義のボリューム設定にてIAM認証の有効化が必要です。
ファイルシステムポリシーの設定方法
①EFSのマネコン画面にて、「ファイルシステム」タブを開き、編集を開く
②JSON形式で下記ポリシーを記載し保存
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AWSアカウントID>:role/ecs-task-role" // アクセス許可したいIAMロール
},
"Action": [
"elasticfilesystem:ClientMount",
"elasticfilesystem:ClientRootAccess",
"elasticfilesystem:ClientWrite"
],
"Resource": "arn:aws:elasticfilesystem:<リージョン>:<アカウントID>:file-system/<ファイルシステムID>"
}
]
}
EFSとタスク定義の両方で設定なのがキモ。
3. EFSアクセスポイントによるアクセス制御
アクセスポイントを用いることでPOSIXユーザー権限を強制し、指定したユーザーIDやグループIDでファイルシステム内のアクセス制御を行います。
これにより複数のアプリケーションが同一EFSを安全に共有でき、ルートディレクトリのアクセス範囲制限や実行ユーザーの統一が可能になるわけですね。
Linux / UNIXを触る方なら簡単に理解できるのかと思いますが、私にはここが難しかったです、、、
私と同じくこれだけではよくわからない!という方は、とりあえず「ECSからの通信をアクセスポイントを経由させることでアクセス制御できる」と捉えてください。
まとめ
というわけで、今回はECSタスクにEFSボリュームをマウントするうえでのベストプラクティスとして下記を紹介しました。
- データ暗号化
- セキュリティグループによるアクセス制御
- IAM認証によるアクセス制御
- EFSアクセスポイントによるアクセス制御
設定操作もとても簡単でしたね。
今回はセキュリティに関するところだけをドキュメントから抜粋しましたが、他にもスループットやEFSパフォーマンスモード等にも説明がありました。
今回参考にしたドキュメントはこちら。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide//efs-best-practices.html
気になる方はぜひご参照ください。
ではまた 🙋♂️







