こんにちは。クラウドインテグレーション部の宮本です。
AWS re:Invent 2020 のセッション Securing your Amazon ECS applications: Best practices を視聴しましたので簡単ですが概要をご紹介します。
ECS アプリケーションをどの様にセキュアに構築・運用するか、について解説したセッションです。
目次
Agenda
アジェンダです。始めに ECS の概要、それから ECS タスクをセキュアに構築する方法、運用する方法が紹介、最後にまとめといった流れになっています。 ECS の概要はセッションをご覧いただくとして、2点目、3点目について概要をご紹介します。詳細はぜひ冒頭のリンクからセッションをご覧ください。(re:Invent への登録が必要です。)
Securing your Amazon ECS tasks
Meet your Amazon ECS app
セッションの題材となる ECS アプリケーションです。ALB でリクエストを受付けて、紐づけられた ECS サービス(タスク)から Aurora や S3 にアクセスが行われます。また、非同期のタスク用を SQS 経由で Lambda により実行する様なアーキテクチャとなっています。
Step 1: Security groups
ベストプラクティスの1つ目、セキュリティグループについてです。 上記のスライドの黄色でハイライトされた部分に注目してください、ECS タスクにアタッチされたセキュリティグループはVPC内(10.0.0.0/16)からの HTTP: 80 の通信を許可しています。Aurora にアタッチされたセキュリティグループについても許可するソースについては同様です。
許可するソースの範囲が広すぎる気がしますね?
さて、どの様な設定であればよりセキュアな設計になるでしょうか、考えてみてください。 答えは実際のセッションでご確認ください!
Step 2: Secrets
2つ目は、認証情報の保存場所についてです。 右側のタスク定義には Aurora MySQL にアクセスするための認証情報が環境変数としてハードコーディングされています。
これではセキュアでは無いですし、パスワードのローテーションを行いたい場合も手動で変更を行う必要があります。さて、どうすればセキュアかつ、ローテーションの自動化を行うことが出来るでしょうか。 答えは実際のセッションで!
Step 3: ECS task-level IAM roles
3つ目は、IAM ロールについてです。 右側のタスク定義にはタスクロールが設定されていません。この場合、タスクが使用するロールはどうなるのでしょうか。
タスクが実行される EC2 インスタンスにアタッチされているロールが使用されます。図の様に、複数種類のタスクがあった場合にも同じロールが使用されます。2種類のタスクは、S3 と SQS どちらにもアクセスする必要があるのでしょうか。不要なアクセス権限が付与されている気がしますね。
さて、どの様に設定するとそれぞれのタスクに最小限のアクセス許可を行うことが出来るでしょうか。 答えは実際のセッションで!
記事でのご紹介はここまで...
実際のセッションでは、以下の様に Step8 までベストプラクティスが紹介されていますが、本記事でのご紹介はここまでとします。 ぜひ実際のセッションで答え合わせ、Step4 以降の確認をしてみて下さい。それでは!
- Securing your Amazon ECS tasks
- Step 4: Logs from apps
- Step 5: Enabling ECR features
- Operating your Amazon ECS tasks securely
- Step 6: Access control
- Step 7: Audit Amazon ECS API calls
- Step 8: Validate your resources