0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ECSタスクにEFSボリュームをマウントする際のベストプラクティス -セキュリティ編-

Posted at

こんにちは。

アシミネです。
最近はCDKを練習してます。

CDKにてECSタスクにEFSボリュームをアタッチする際にエラーではまりまして、、、
そのエラーを解消するにあたりベストプラクティスを紹介するドキュメントを参考にしたのですが、初知りの情報が多く理解に時間がかかったので、ここにまとめることで頭のなかを整理したいと思います。

早速いきましょうか。

ECSタスクにEFSボリュームをマウントする際のベストプラクティス -セキュリティ編-

セキュリティを確保するために必要なことは ”データの暗号化” と “アクセス制御” 。

ここでは設定方法も紹介します。設定方法が簡単である、ということが分かっていただければと。

🔐データの暗号化

EFSが保存しているデータ、および転送中のデータを暗号化することでセキュリティを確保します。

簡単な操作だけでデータ暗号化を有効化できます。

データ暗号化 設定方法 ①マネコンのタスク定義画面のボリューム設定個所にて、「ボリュームタイプ→EFS」、「ファイルシステム→作成したEFS」と選択して「詳細設定」を開く

image.png

②詳細設定にて「転送暗号化」に✅

tenso.png

データ暗号化に関する操作、簡単ですね。

🛂アクセス制御

EFSボリュームへのアクセスを制限する方法が3つ紹介されています。

  1. セキュリティグループによるアクセス制御
  2. IAM認証によるアクセス制御
  3. EFSアクセスポイントによるアクセス制御

一つずつ見ていきましょう。

1. セキュリティグループによるアクセス制御

EFSマウントターゲットにはセキュリティグループをアタッチできます。

EFSマウントターゲットのセキュリティグループには、アクセス元であるECSタスクのセキュリティグループからのNFSトラフィックのみを許可しましょう。

基本的な手法で、理解しやすい内容ですね。

2. IAM認証によるアクセス制御

その名の通りIAMロールを利用しEFSへのアクセス権を制御します。

EFSのファイルシステムポリシーにてアクセス許可するIAMロールを設定します。

さらに、タスク定義のボリューム設定にてIAM認証の有効化が必要です。

ファイルシステムポリシーの設定方法

①EFSのマネコン画面にて、「ファイルシステム」タブを開き、編集を開く

efs-filesytem.png

②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>"
        }
      ]
    }
    
IAM認証有効化 方法

①マネコンのタスク定義画面のボリューム設定個所にて、「ボリュームタイプ→EFS」、「ファイルシステム→作成したEFS」と選択して「詳細設定」を開く
filesystem-iamconfigure.png

②詳細設定にて「IAM認証」に✅
tenso.png

EFSとタスク定義の両方で設定なのがキモ。

3. EFSアクセスポイントによるアクセス制御

アクセスポイントを用いることでPOSIXユーザー権限を強制し、指定したユーザーIDやグループIDでファイルシステム内のアクセス制御を行います。

これにより複数のアプリケーションが同一EFSを安全に共有でき、ルートディレクトリのアクセス範囲制限や実行ユーザーの統一が可能になるわけですね。

Linux / UNIXを触る方なら簡単に理解できるのかと思いますが、私にはここが難しかったです、、、

私と同じくこれだけではよくわからない!という方は、とりあえず「ECSからの通信をアクセスポイントを経由させることでアクセス制御できる」と捉えてください。

アクセスポイント作成方法

①EFSのマネコン画面にて、「アクセスポイント」タブを開き、「アクセスポイントを作成」を開く

fileystem-ap.png

②アクセスポイント作成画面にて、設定項目を入力

fileystem-ap-2.png

③すべて設定したら最後には「アクセスポイントを作成」を選択

fileystem-ap-3.png

ECSタスク定義にてアクセスポイントを設定する方法

今度はタスク定義画面のボリューム設定個所にて、「ボリュームタイプ→EFS」、「ファイルシステム→作成したEFS」と選択すると、「アクセスポイント」のプルダウンに先ほど作成したアクセスポイントが表示されるのでこれを選択

taskdifinition.png

まとめ

というわけで、今回はECSタスクにEFSボリュームをマウントするうえでのベストプラクティスとして下記を紹介しました。

  • データ暗号化
  • セキュリティグループによるアクセス制御
  • IAM認証によるアクセス制御
  • EFSアクセスポイントによるアクセス制御

設定操作もとても簡単でしたね。

今回はセキュリティに関するところだけをドキュメントから抜粋しましたが、他にもスループットやEFSパフォーマンスモード等にも説明がありました。

今回参考にしたドキュメントはこちら。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide//efs-best-practices.html

気になる方はぜひご参照ください。

ではまた 🙋‍♂️

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?