AWS Fargateで考えるコンテナセキュリティ!コンテナ管理の高度な思考🤔

AWS Fargateで考えるコンテナセキュリティ!コンテナ管理の高度な思考🤔

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!

コンテナのセキュリティ対策を考えているこの頃、やはりマネージドサービスを利用すれば対策する箇所が減って楽だなと思っております。

今回は AWS のコンテナサービス、Fargate のセキュリティについてお話しします!

想定する読者

  • コンテナのセキュリティについて知りたいヒト
  • Fargate のセキュリティについて知りたいヒト

はじめに

AWS が提供する ECS というコンテナサービスには、EC2 ホスト型と Fargate があります。前者は ECS + EC2 の管理が必要ですが、後者はマネージドサービスのためサーバ管理が不要となります。

本記事ではマネージドサービスである Fargate を利用する上でのセキュリティ対策について解説していきます!前回のコンテナセキュリティに関する記事と合わせて読むと、Fargate の良さがわかるので、ぜひ両記事とも読んでみてください!

スタートアップCTOが教える、AWSのコンテナセキュリティ!コンテナを安全に運用するベストプラクティスを解説😎

コンテナセキュリティにおける保護すべき5つの項目

一般的にコンテナセキュリティで保護する5つの項目は以下になります。

  • イメージ
  • レジストリ
  • オーケストレータ
  • コンテナ
  • ホストOS

ではこれらに対して Fargate を利用する場合、どんな対策が必要なのかを説明していきます。

ホストOSのセキュリティ対策

AWS には共有範囲モデルという、どこまでが AWS の責任でどこまでがユーザーの責任かを明確にするモデルがあります。それを参考に Fargate の責任範囲を見てみましょう。

引用元:https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/bestpracticesguide/security-shared.html

オレンジ色が AWS、水色の部分がユーザーの責任範囲となります。この図を見ると、ホストOS の管理は AWS の責任で、IAM やコンテナなどの管理はユーザーの責任ということがわかります。

つまり「ホストOS」は Fargate を利用する場合、AWS の管理下となるためセキュリティ対策は不要ということになります。

AWS は管理しているすべてのサーバに対して、定期的なセキュリティチェックを行っていたり、外部からのセキュリティ対策を行なっていたりするのでホストOSの管理に対しては安心できます。

これによりホストOS 以外の項目のみを意識すればよいことになります。

イメージとレジストリのセキュリティ対策

引用元:https://aws.amazon.com/jp/ecr/

イメージとレジストリのセキュリティは、ECS ではなく ECR で行います。

ECR はデフォルトで push 時にイメージの脆弱性をスキャンしてくれます。しかし定期的なスキャンは手動で行わなければならないので、Lambda などを利用して定期的にスキャンを実行するロジックを構築しましょう。これでイメージに対するセキュリティ対策は完了です。

ECR に対するアクセシビリティを CloudTrail のコンソールで確認できます

次にレジストリですが、ECR に対するアクセス管理を IAM で適切に設定したり、ECR に対するアクセシビリティを CloudTrail で監視したりすることで、セキュリティ対策を実施することができます。

オーケストレータのセキュリティ対策

引用元:https://aws.amazon.com/jp/ecs/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&ecs-blogs.sort-by=item.additionalFields.createdDate&ecs-blogs.sort-order=desc

次にオーケストレータ、Fargate の場合は ELB のセキュリティ対策が必要です。

このセキュリティ対策は Fargate 特有なものはないので、ELB のセキュリティ対策として一般的なアプローチで実施します。以下の設定を行ってください。

  • セキュリティグループによるアクセス制限
  • AWS WAF の適用(一般的な攻撃パターンをブロック)
  • AWS Shield の適用(DDoS攻撃対策)

これによりオーケストレータのセキュリティ対策を実施できます!

コンテナのセキュリティ対策

引用元:https://aws.amazon.com/jp/fargate/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc&fargate-blogs.sort-by=item.additionalFields.createdDate&fargate-blogs.sort-order=desc

最後にコンテナのセキュリティ対策を行います。実施するものとしては以下になります。

  • 一時ストレージの暗号化(AWS KMSを利用)
  • サードパーティを使って疑わしいアクティビティを検知
  • readonlyRootFilesystem を有効にする(この場合、コンテナに対するセキュリティソフトは必要ない)

データの保護(ストレージの暗号化)に関してはどの方にも共通して必要になりますが、サードパーティに関しては特定の場合だと必要ありません。

ECSにある readonlyRootFilesystem を有効にした場合、文字通りルートファイルシステムへのアクセスは読み取り専用となるので、マルウェアなどが動けなくなるからです。

タスク定義にて有効にします

これはサービスの要件よって可否が決まりますが、確実にセキュアになるのでぜひ活用していただきたいポイントになります。ご参考になれば幸いです。

関連記事

まとめ

Fargate を利用するとインフラ管理をしなくていいのがやはりメリットですね。ただしコンテナ関連の管理は依然として必要になりますので、安心せずに日々監視していきたいものです。

このブログでは、AWS の記事をどんどん公開しておりますので、ご興味のある方は他の記事もご覧いただければと思います。

AWS に関する開発は、お気軽にお問い合わせください。