Anthos Config Management: Policy Controller による CIS ベンチマークの適用
Google Cloud Japan Team
※この投稿は米国時間 2022 年 1 月 11 日に、Google Cloud blog に投稿されたものの抄訳です。
COVID-19(新型コロナウイルス感染症)による混乱が続く中、多くの企業がこれに適応するために、新しいアプリやサービスを展開してデジタル トランスフォーメーションを加速させることを余儀なくされています。世界中の組織が本番環境でのアプリケーションのコンテナ化に注力する中、Kubernetes はこの課題に対応するうえで重要な役割を果たしています。世界中のセキュリティ意思決定者の 84% が「コンテナの使用に関するセキュリティ ポリシーを策定している」と回答していますが、それらのポリシーをサポートする適切なツールを導入しているのはわずか 45% にすぎません。進歩の兆しがある一方で、私たちができること、すべきことはまだまだあります1。
Anthos Config Management(ACM)は、管理者が組織のクラスタ群に一貫した構成ポリシーとセキュリティ ポリシーを作成して適用できるようにすることで、この問題を解決することを目的としています。
この記事では、一般的なセキュリティおよびコンプライアンス管理用にあらかじめ構築されたポリシーの完全なライブラリを備えた Policy Controller(Open Policy Agent Gatekeeper プロジェクトをベースにした ACM の機能)に焦点を当てます。
Kubernetes の CIS ベンチマーク
お客様がワークロードのセキュリティ体制を強化できるよう、CIS 組織がセキュリティ目標とコミュニティのコンセンサスに基づいて開発したガイドラインが、Kubernetes CIS ベンチマークです。このベンチマークの範囲はかなり広いのですが、この記事では ACM の設定時にサンプル リポジトリで提供される CIS ポリシー バンドルに焦点を当てています。
CIS ポリシー バンドルは、以下のようにポリシーを適用します。
RBAC およびサービス アカウント - system:masters グループを除く、cluster-admin ロールの使用を制限します。さらに、Roles と ClusterRoles におけるワイルドカードの使用を制限します。
Pod のセキュリティ ポリシー - 特権コンテナの使用、ホストプロセス ID / ホスト IPC / ホストのネットワーク Namespace の共有を求めるコンテナの許可、allowPrivilegeEscalation を求めるコンテナ、ルートユーザーとしてのコンテナの実行を制限します。また、コンテナが ICMP を介して生パケットを交換できるようにする NET_RAW ケーパビリティの削除(drop)を強制します。
ネットワーク ポリシーと CNI - すべての Namespace にネットワーク ポリシーの定義を強制します。
シークレット管理 - シークレットを環境変数として使用することを禁止し、代わりにデータ ボリュームでのマウントされたシークレット ファイルの使用を推奨します。
一般ポリシー - デフォルトの Namespace におけるリソースのデプロイを制限します。また、すべての Pod に securityContext の定義を強制し、seccomp プロファイルを docker/default に設定するよう強制します。
ACM UI による CIS バンドルの使用
CIS バンドルのリリースに加え、最小限の構成だけで開始できるようにACM の新しい UI を構築しました。具体的には、ACM の設定で、デフォルトで Policy Controller がインストールされ、Config Sync を重要なベースライン リポジトリから pull するよう設定できるようになりました。
この重要なリポジトリは非構造化モードになっていて、自由に選択してリソースを整理できるようになっています。デフォルトで、すべてのクラスタと Namespace に CIS ベンチマークが適用されます。
クラスタに違反がないかモニタリングする
CIS ポリシー バンドルは、デフォルトで適用アクションが dryrun に設定されています。この構成では、リソースをブロックまたは中止することなくPolicy Controller で違反が表示されます。これにより、クラスタの監査、ワークロード オーナーとの違反の共有、重要なセキュリティ問題を共同で修正することが可能になります。
すべてのポリシー違反は自動的に Cloud Logging に記録され、ログ エクスプローラで以下のフィルタを適用して見つけることができます。
Cloud Monitoring を使用して、ポリシー違反が発生するたびにアラートが出るように設定することも可能です。
すべての違反を確認し、非準拠リソースをブロックしてポリシーの適用を有効にする準備ができたら、各制約の適用アクションを deny に変更します。これは、set-enforcement-action kpt 関数を使用して一括で行うことができます。
まとめ
Kubernetes のような最新の分散型アプリケーション開発プラットフォームの革新に伴い、セキュリティ脅威のモニタリングと無効化の必要性は高まっており、今後も増え続けるでしょう。適切なガバナンスとツールがなければ、この増加はすぐに IT 組織の負荷の増大につながりかねません。これを構造化するために、Git を使用したポリシーとトレーサビリティの一元管理機能を提供する Anthos Config Management を利用することができます。Anthos Config Management のベスト プラクティス、クイックスタート、チュートリアルについては、こちらをご覧ください。また、Anthos Config Management を使って設定する際には、サンプル リポジトリで提供されている CIS ポリシー バンドルも試してみることもおすすめします。
- Anthos ソリューション アーキテクト Awais Malik 氏