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

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

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

こんにちは!

今回は、何かしらのコンテナサービスを利用していれば気になる、コンテナのセキュリティについて話していきたいと思います。

クラウドのコンテナサービスを利用されている方、オンプレミスで運用されている方、ぜひ参考にしてください!

想定する読者

  • コンテナのセキュリティについて知りたいヒト
  • AWSのコンテナサービスを利用しているヒト

はじめに

AWSでは ECS および Fargate・EKS などのサービスがありますね。本記事ではそれらのAWSサービスのセキュリティについては言及しません。コンテナ全般のセキュリティについて説明していきます。

ですが Fargate や App Runner を利用する方にとっても、どんな部分がカバーされているからマネージドなのかを(セキュリティの視点で)理解するために知っておいて損はないものだと思います。

コンテナセキュリティの情報源

コンテナセキュリティについて知る方法は、まず National Institute of Standards and Technology (NIST) が公開している Application Container Security Guide を一読することをお勧めします。

こちらにコンテナセキュリティの問題と対策が網羅的に記載されているので、コンテナセキュリティに対して具体性のある知見が得られます。

多くのコンテナセキュリティについての記事はこのガイドラインに沿って執筆しているものがほとんどで、本記事もこのガイドラインを踏まえた上でコンテナセキュリティについて言及いたします。

コンテナセキュリティの5つのポイント

コンテナセキュリティにおいて保護すべき対象についてまず認識していきましょう。以下をご覧ください。

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

この5つを保護していくことがコンテナのセキュリティを守る行動となります。VM のセキュリティと違ってコンテナでは、より抽象的なレイヤーも保護する対象となっております。

それではひとつずつ問題点を確認していきましょう。

イメージ

引用元:https://www.docker.com/resources/what-container

セキュリティ観点

コンテナイメージをセキュリティの観点で評価するには以下の部分に着目します。

  • 信頼できるコンテナイメージか?
  • 脆弱性はないか?

コンテナイメージは継続的に監視していかなければなりません。なぜなら安全であるという保証がないためです。利用しているコンテナイメージに脆弱性があったり、誰かが悪意を持って作成したコンテナイメージを利用していたりする場合があるかもしれません。

セキュリティ対策

そのため定期的にイメージスキャンを行うことが必然となります。CI/CD パイプラインにイメージスキャンを組み入れるのもひとつのアプローチとなります。

レジストリ

引用元:https://www.docker.com/products/security

セキュリティ観点

コンテナイメージを保存するレジストリに対する接続はセキュアにしなければなりません。なぜなら、中間者攻撃のリスクを考慮しなければならないからです。

セキュリティ対策

そのため認証・認可の条件を十分なものにする必要があります。

アクセスポリシーで接続を制限したり、認証の仕組みを整えることが重要となります。

オーケストレータ

引用元:https://kubernetes.io/docs/concepts/overview/components/

セキュリティ観点

オーケストレータを保護するにはまず、不要な管理者アクセスや不正なアクセスを避けるためのアクセス制御が必須となります。

加えてネットワークをきちんと分離できているか、ノード間の通信は信頼できているのかについて対策を行わなければいけません。

例えば社外に公開しているアプリと社内で利用しているアプリが同じ仮想ネットワーク内にあった場合、社外から侵入されたあとに同じネットワークを辿って社内アプリに不正アクセスできる場合があります。

またノード間の通信についてですが、こちらは例えば同じ認証鍵をすべてのノードで共有している場合や、オーケストレータの設定が脆弱なため通信が暗号化されていない場合などが挙げられます。

セキュリティ対策

こういった事態を防ぐためにも、利用用途によってネットワークを分離しておかなければなりません。

加えてオーケストレータの設定で信頼性の高い状態での通信が行われているかを今一度確認してみましょう。

コンテナ

引用元:https://www.docker.com/products/container-runtime

セキュリティ観点

コンテナのセキュリティはネットワークや、コンテナ内で動作しているアプリケーションに対する外部から保護ができているかを確認してください。

セキュリティ対策

監視や異常検出するための体制を整えることが重要となります。コンテナ向けのセキュリティサービスなどを利用するなどして対策を講じましょう。

ホストOS

引用元:https://www.docker.com/resources/what-container

セキュリティ観点

コンテナを利用しているからと言って、ホストOSのセキュリティ対策を軽視してはいけません。ホストOSに脆弱性がないか、アクセス制御はできているかをチェックしましょう。

セキュリティ対策

こちらは従来通りのアプローチです。脆弱性を定期的にスキャンしたり不適切なアクセスを制御したりしましょう。

コンテナセキュリティ対策に有効なツールの紹介

最後にコンテナセキュリティ対策に有効なツールをご紹介いたします。ぜひ各ツールを活用してみてください!

  • Trivy(コンテナイメージの脆弱性スキャンツール)
  • Clair(コンテナイメージの脆弱性スキャンツール)
  • kube-hunter(Kubernetesの脆弱性診断ツール)
  • Dagda(コンテナの静的分析・異常検出を行うツール)
  • Vuls(ホストOSに対する脆弱性診断ツール)

関連記事

まとめ

今回はコンテナセキュリティの重要な柱となる5つの視点からお話ししました。より具体的な理解を求めている方はぜひ、コンテナセキュリティのガイドラインを読んでみてください!

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

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