本連載では、エンタープライズシステムでコンテナ/Kubernetesを活用した業務システムを開発/運用するエンジニアに向けて、知っておくべきKubernetesセキュリティの基礎知識、Microsoftが提供するパブリッククラウド「Azure」を使ったクラウドでのKubernetesセキュリティ対策のポイント、気を付けておきたい注意点などの実践的なノウハウを紹介します。
今回は、安全にKubernetesを利用するためのRBAC( Role-based access contro:ロールベースアクセス制御)を紹介します。
ゼロトラストセキュリティとは
従来のセキュリティモデルは、社内外でネットワークに境界を設ける境界防御モデルが主流でした。境界防御モデルでは、境界外からの脅威に対しては境界上で防御、情報資産の管理・利用は信頼できる境界内でのみ行うことでセキュリティを担保しようというモデルです。
しかし、昨今のクラウドサービスの普及・テレワークの採用といったワークスタイルの変化や、それに伴う情報漏洩やマルウェア感染等のリスクの増加に対して、ネットワーク境界を根拠にセキュリティを担保することが困難になってきています。
例えば、セキュリティを考慮する上でネットワークの境界防御のみに依存している場合、攻撃者に一度内部ネットワークに侵入されると、広範な情報資産へのアクセスが可能となり結果的に環境内で水平移動 (ラテラルムーブメント) が行われ、侵害範囲の拡大につながってしまうといった問題があります。
ゼロトラストセキュリティとは、「決して信頼せず、常に検証する (Never Trust, Always Verify)」という考え方を前提としたセキュリティモデルです。
ゼロトラストセキュリティでは、社内外のネットワーク境界よる防御ではなく、守るべき情報資産は境界の内外にかかわらず、すべてのアクセスは信頼できないという前提の下、常にアクセスの安全性を検証します。
米国国立標準技術研究所(NIST)から発行された 「NIST SP800-207 Zero Trust Architechture」 では、ゼロトラストが満たすべき7つの原則を以下のように定めており、ゼロトラストアーキテクチャを検討する上で参考になります。
- すべてのデータソースとコンピューティングサービスをリソースとみなす
- ネットワークの場所に関係なく、すべての通信は保護される
- 個々のリソースへのアクセスはセッション単位で許可される
- リソースへのアクセスは動的なポリシーによって決定される
- すべての資産の整合性とセキュリティを監視する
- すべてのリソースの認証・認可はアクセスが許可される前に動的かつ厳密に実施される
- 資産・ネットワークインフラ・通信の状態について可能な限り多くの情報を収集し、セキュリティの改善に利用する
なお、これら原則を実現する技術は指定されておりません。アーキテクチャの実装においては、さまざまな技術やソリューションを活用できます。
ゼロトラストの構成例としては、以下のようなアーキテクチャが考えられます(Microsoftより公開されている「Evolving Zero Trust」を参考に作成)。
各リソースにアクセスする際は、ユーザーやデバイス等の情報をもとにポリシーによってアクセス要求を検証し、最小権限のアクセスが付与されるように制御を行います。また、リソースやネットワーク通信の状態等の情報は包括的に収集・監視がなされ、脅威からの保護に活用されます。
ゼロトラストセキュリティを実践することで、セキュリティの強化に加え、クラウドサービスの活用推進や多様なワークスタイルの実現が期待できます。なお、Kubernetesにおけるゼロトラストを実践する手段としては、マイクロサービスにおける通信制御をするためのサービスメッシュやサービス間認証のための仕様であるSPIFFE等の活用があげられます。
今回は、ゼロトラストを実現する上でも重要な要素の一つである認可ついて取り上げます。以降では、Kubernetesの認可の基礎となるRBACについて説明します。