DX推進で活躍するコンテナテクノロジー、4つのセキュリティ課題と対策とは?

 Webアプリケーションの構成技術として、「マイクロサービス」「コンテナテクノロジー」というワードをよく耳にするようになりました。特に、DX(デジタルトランスフォーメーション)を推進する企業がクラウドネイティブなテクノロジーの導入を意識する場面において、これらの技術を活用したアプリケーションデザインを検討する機会が増加しています。また、アプリケーション開発の「Development」、アプリケーション運用の「Operations」を一連のライフサイクルとして融合させる「DevOps」の実現要素としても、これらの技術のユースケースが増加しています。国内において、新規にWebアプリケーションを構成する場合や既存のWebアプリケーションを刷新する場合に、コンテナテクノロジーを活用したマイクロサービスを構成するパターンや、Kubernetesに代表されるコンテナオーケストレーターを活用して、コンテナを管理・運用するパターンが選択肢としてあがることが多くなりました。

 container_lifecycle.png

 しかし、コンテナテクノロジー自体や運用の特性が従来のコンピューティング手法とは大きく異なっており、セキュリティに関しても、コンテナテクノロジーに特化した知見やツールを必要とする4つの課題が存在します。

1、コンテナイメージの脆弱性対策
2、ランタイム保護
3、コンプライアンス準拠
4、ライフサイクルへのセキュリティ適用

そして、コンテナの活用が増えるとともに、コンテナ環境を狙った攻撃も増加しており、ビジネスクリティカルなセキュリティインシデントに繋がった事例も数多く確認されています。コンテナの実行環境に対して適切なセキュリティ対策を施していない状態でアプリケーションを運用することは、大きなリスクを伴います。

security_kadai.png

1、コンテナイメージの脆弱性対策

コンテナイメージの脆弱性

 コンテナのライフサイクルはコンテナイメージの準備からスタートしますが、いかにしてコンテナイメージの健全性を確保するかが、コンテナのライフサイクルの中での最も重要なセキュリティ課題です。脆弱性を含んでいたり、不適切な設定や悪意のあるコードが埋め込まれているコンテナイメージを使用することは、ライフサイクル全体に悪影響が及び、ビジネスに大きな損害を与えることに繋がります。

 コンテナイメージは多くの場合、パブリックに公開されているコンテナレジストリ上のレポジトリからpull(ダウンロード)したベースイメージに対して、必要なライブラリ、アプリケーション、設定を追加したものを独自のコンテナイメージとして再生成し使用します。パブリックに公開されているコンテナレジストリ上には誰でも容易にレポジトリを作成することができ、自身が生成したコンテナイメージを不特定多数のユーザーと共有することが可能です。この特徴は、コンテナの利点の一つであるポータビリティと密接に関係しており、コンテナの利活用を大きく促進する要因にもなっていますが、コンテナイメージの中に脆弱性が含まれている場合には、重大なセキュリティインシデントにも繋がる可能性があることを認識しておく必要があります。特に、健全性の確認できないレポジトリのコンテナイメージを使用することは大きなリスクを伴うことから、レジストリでオフィシャルに認定されているレポジトリに格納されているコンテナイメージの利用を基本ポリシーとすることを推奨します。

 下記はDockerHubでオフィシャルに認定されている代表的なレポジトリのLatest(最新)バージョンのイメージに対して、弊社が独自に脆弱性スキャンを実行した結果です。オフィシャルに認定されている、且つ、最新バージョンのイメージであっても、必ずしも脆弱性がゼロになるわけではないことがわかります。実際の運用シーンでは、このようなセキュリティツールによって検知できる個々の脆弱性が運用に与える影響を総合的に判断し、コンテナのデプロイメントの可否を決定する必要があります。(一部2020/10/9時点での情報を含む)

ofiicial_image_valunerability.jpg

2、ランタイム保護

ランタイムに対する脅威

 コンテナのライフサイクルの中で、稼働中のコンテナのランタイムに対するセキュリティ対策を考える必要があります。稼働中のコンテナが設計上想定されていない挙動を示したり、コンテナイメージに組み込まれていた悪意のあるスクリプトが実行される等のインシデントが実際に発生しており、マイニングスクリプトの実行や機密データの外部への持ち出し事例が相次いでいます。具体的には、コンテナイメージに悪意をもってスクリプトやコードが組み込まれているパターンが多く、これらの脅威はイメージの脆弱性スキャンでは検知することができず、コンテナがデプロイされ、起動したタイミング以降に初めて異常に気付くことになります。従来のコンピューティング手法の中でのサーバー運用では、管理者がOSにログインし、パッチ適用に代表される日常的なオペレーションがサーバーの異常動作に気付く機会の一部となっていましたが、コンテナの運用スタイルではパッチ適用のようなメンテナンスはコンテナ自体ではなく、コンテナの生成元であるコンテナイメージに対して実行されるため、コンテナにログインする機会は遥かに少なくなっており、異常動作に気付くタイミングも遅れる傾向にあります。

 下記に示す事例は、弊社がパブリックなコンテナイメージレジストリに生成されていたオフィシャルではないレポジトリから発見した、Kubernetesを使用したコンテナ環境の偵察スクリプトが組み込まれたコンテナイメージの実行結果です。このレポジトリは現在消滅していますが、Webアプリケーションのテスト用として公開されており、誰でも利用できる状態のものでした。ユーザーの利用目的であるWebアプリケーションは正常に動作し、問題の無いコンテナイメージであるかのように思えますが、Kubernetesの機能を巧みに利用した偵察スクリプトが内部に実装されていました。

 K8s_incident.png

3、コンプライアンス準拠

コンテナテクノロジーに対応したセキュリティフレームワーク

 ビジネスクリティカルなコンピューティングリソースに対してのセキュリティ指標として、様々なセキュリティフレームワークが定義されています。コンテナテクノロジーの特性に応じた専用のセキュリティフレームワークも存在します。特にコンテナテクノロジーはOSSが主体となっている技術領域であり、多数のコントリビューターによって盛んに開発が行われていることから、頻繁な機能拡張や仕様変更が発生しやすく、適切なセキュリティ設定を維持するために、セキュリティフレームワークへの準拠を強く意識することが推奨されます。特にビジネスユースのコンテナ環境を構成する場合、その構成要素は多岐に渡り、従来からのコンピューティング手法と比較して、より複雑になりやすい傾向にあります。下記にコンテナ環境を構成する場合の代表的な構成要素を示します。これら一つ一つに対して、最低限セキュリティフレームワークに準拠した設定を施すことがコンテナテクノロジーを安全に有効活用するための第一歩となります。

security_point.png

4、ライフサイクルへのセキュリティ適用

コンテナのライフサイクルとセキュリティ

 コンテナのライフサイクルはDocker社がスローガンとして提唱している、"Build-Ship-Run"を基本スタイルとして定着しています。これはDevOpsの思想とも親和性が高く、アプリケーションの開発・運用の効率性を追求した結果とも捉えることができます。

buildshiprun.png

 このライフサイクルの中にセキュリティを組み込むポイントについて考える場合、最も重視すべきことは効率性を犠牲にすることなく、セキュリティを実装することです。実際の運用シーンではCI/CDの手法を活用して、ライフサイクルを自動化することにより効率性をより高めているケースが多く見られます。この記事の前半「コンテナイメージの脆弱性」で、"コンテナのライフサイクルはコンテナイメージの準備からスタートする"と説明しましたが、例えばイメージに脆弱性や悪意のあるツールが含まれている場合には、自動化の流れに乗ってライフサイクル全体に一気に影響が出ます。これを未然に防ぐために最も効果的なアプローチは、ライフサイクルの初期の段階である"Build"フェーズで、自動的にコンテナイメージのスキャンを実行することです。自動化されたライフサイクルの中で、コンテナイメージがBuildされた直後にイメージスキャンを実行し、その結果に応じて次のステップに進めるべきか否かを決定します。この手法は、セキュリティの"シフトレフト"と呼ばれ、ライフサイクルの重要な要素であるコンテナイメージの健全性を確実なものにします。また、開発の早い段階からセキュリティ対策を実装するというこの手法は、NISC(内閣サイバーセキュリティセンター)が提唱する、セキュリティ・バイ・デザインとも共通しており、運用コストの低減にも大きく貢献します。

devsecops.png

コンテナテクノロジーに対応したセキュリティソリューション

 コンテナテクノロジーを安全に利活用するためには、専用のセキュリティソリューションの導入が必要です。冒頭に"コンテナテクノロジーに特化した知見やツールを必要とする"と記述したように、コンテナテクノロジーが持つ、これまでのコンピューティングとは大きく異なる特性に対応するために専用のツールを使用する必要があるという点が重要なポイントです。

 マクニカでは、コンテナテクノロジーに対応したセキュリティソリューションを提供しております。

 ・Prisma Cloud by Palo Alto Networks
  資料ダウンロードはこちら3.jpg

 ・McAfee Mvision Cloud
  資料ダウンロードはこちら3.jpg

 ・FireEye
  資料ダウンロードはこちら3.jpg

 ・Adaptive Shield
  お問い合わせはこちら2.JPG

コンテナセキュリティの導入を検討する場合には、セキュリティ運用の組織体制やコンピューティングの特性に応じて最適なセキュリティソリューションを選定する必要があります。ご興味をお持ちの方は、お気軽に上記ページよりお問い合わせください。