- What is Overiew
- コンテナセキュリティとは
-
- Dockerコンテナセキュリティの概要
- Azureコンテナセキュリティの概要
- Kubernetesコンテナセキュリティの概要
- AWSコンテナセキュリティの概要
コンテナのライフサイクルを通じた脆弱性の検索、プライベートレジストリから取得した信頼できるイメージのみの使用、特権とユーザアクセスの制限、すべての活動の継続的な検索・監視を組み合わせたもの。
Microsoft AzureはFortune 500企業の95%で使用されており、開発者がどこからでも自由にアプリケーションを構築、管理、デプロイできるクラウドコンピューティングプラットフォームです。Microsoft Azureでは、仮想マシン、IoT、コンテナをはじめとする多種多様なサービスが提供されています。
Microsoft Azureコンテナは、開発者と組織がクラウドサービスに求める俊敏性とスケーラビリティを提供します。ただし、Azureを用いるとすばやく効率的にコンテナ環境を構築できますが、そのコンテナにふさわしいセキュリティを実装する必要があります。Azureコンテナのセキュリティを確保するのはユーザの責任になります。
以下に、Azureコンテナを保護する際に考慮すべき事項を示します。
イメージ
どのコンテナでも同じように、Azureコンテナ上のイメージを保護することは、セキュリティ確保のために実行できる最も重要なステップの1つです。コンテナはリポジトリに保存されたイメージから構築されます。各イメージには複数のレイヤーがあり、これらのレイヤーは個別に脆弱性を含んでいて、侵害されている可能性があります。承認済みのコンテナイメージのみを開発環境に導入できるようにすると、サイバー攻撃を受けるリスクを低減することができます。未承認のコンテナイメージの使用を監視して防止する、明確なプロセスとツールを整備することが重要です。
環境へのコンテナ導入フローを制御するためのもう1つのオプションは、イメージの署名またはフィンガープリントです。これによってコンテナとコンテナイメージの整合性を検証することができます。コンテナの開発が完了したら、イメージをレジストリにプッシュする前に、最終評価としてコンテナの脆弱性検索を実行することが非常に重要です。
資格情報
最小特権も、Azureコンテナに適用すべき基本的なセキュリティベストプラクティスです。脆弱性が悪用された場合、イメージであろうとカーネルであろうと、攻撃者にアクセス権を与えることになり、さらには複数のクラスタやリージョンに対する特権をも与えてしまう可能性があります。業務の遂行に必要な最小特権とアクセスでコンテナを運用するように徹底すると、リスクにさらされる機会が減ります。
また、従業員の転職または退職時に不要な特権を削除すると、コンテナの攻撃対象領域を削減できます。コンテナランタイムから不要なまたは未利用の特権やプロセスを削除することでも、潜在的な攻撃対象領域を削減できます。
レジストリ
Azureコンテナは、パブリックレジストリまたはプライベートレジストリに保存されたイメージから構築します。パブリックレジストリからイメージを取得した方が簡単に思えますが、これではセキュリティが保証されません。前述のように、コンテナイメージには複数のレイヤーがあり、それぞれのレイヤーに脆弱性が存在する可能性があります。
パブリックレジストリのイメージの場合、不正なソフトウェアが添付されている可能性がプライベートレジストリよりも高くなります。プライベートレジストリのイメージは、適切に検索されていてリスクがより低いと考えられます。プライベートレジストリは管理され、役割ベースのアクセス制御を備えており、より優れたガバナンスとセキュリティを提供します。プライベートコンテナイメージレジストリの例には、Azure Container Registry、Docker Trusted Registry、Cloud Native Computing FoundationによるオープンソースのHarborプロジェクトなどがあります。
カーネル
すべてのコンピュータは複数のハードウェア上に構築されます。カーネルはオペレーティングシステム(OS)内に組み込まれた機能の1つで、ハードウェアとシステムの他の部分が対話できるよう、これらの橋渡し役として機能します。仮想マシンと異なり、コンテナでは、そのサービスと共有カーネル間でオープンなネットワークトラフィックが使用されます。ホストオペレーティングシステムカーネルを共有できるのはコンテナの最大の利点の1つですが、これはセキュリティ上の大きな懸念点にもなり得ます。
実行時にカーネルとコンテナは十分に分離されていません。つまり、共有オペレーティングシステムカーネルに存在する脆弱性を使用して、コンテナを悪用したり、コンテナにアクセスしたりすることができます。攻撃者は、不正なコードを注入しなくてもメモリ内のカーネルデータを変更するだけで、OSの実行動作を操ることができます。
その移植性、スケーラビリティ、信頼性の高さを考えると、ほとんどの企業がアプリケーションの実行にMicrosoft Azureコンテナを利用していることに不思議はありません。コンテナライフサイクルを通して脆弱性の検索を確実に実行し、すべての活動を監視・記録することにより、Azureコンテナが安全であることを確認し、セキュアな環境での運用が実現できます。