Kubernetes Hardening
クラスタを分析するためのツール
Kubescapeは、K8sのオープンソースツールで、リスク分析、セキュリティコンプライアンス、RBACビジュアライザー、およびイメージの脆弱性スキャンを提供するマルチクラウドK8sシングルペインオブグラスです。Kubescapeは、K8sクラスタ、YAMLファイル、HELMチャートをスキャンし、複数のフレームワーク(NSA-CISA、MITRE ATT&CK®など)に従ってミス構成を検出し、ソフトウェアの脆弱性やRBAC(ロールベースアクセス制御)の違反をCI/CDパイプラインの初期段階で計算し、リスクスコアを即座に表示し、時間の経過とともにリスクトレンドを表示します。
ツールkube-benchは、CIS Kubernetes Benchmarkで文書化されたチェックを実行して、Kubernetesがセキュアに展開されているかどうかを確認するツールです。 次の方法で実行できます:
ホストとPIDネームスペースを共有するコンテナ内からkube-benchを実行する
ホストにkube-benchをインストールするコンテナを実行し、その後ホストでkube-benchを直接実行する
リリースページから最新のバイナリをインストールする
ソースからコンパイルする。
ツールkubeauditは、さまざまなセキュリティ上の懸念事項に対してKubernetesクラスタを監査するためのコマンドラインツールおよびGoパッケージです。
Kubeauditは、クラスタ内のコンテナで実行されているかどうかを検出できます。その場合、そのクラスタ内のすべてのKubernetesリソースを監査しようとします。
このツールには、検出された問題を自動的に修正するための引数 autofix
もあります。
ツール kube-hunter は、Kubernetes クラスター内のセキュリティ上の脆弱性を探します。このツールは、Kubernetes 環境におけるセキュリティ問題の認識と可視性を高めるために開発されました。
Kubeiは、ユーザーがkubernetesクラスターの正確で即座のリスク評価を行うことを可能にする脆弱性スキャンおよびCIS Dockerベンチマークツールです。Kubeiは、Kubernetesクラスターで使用されているすべてのイメージをスキャンします。これには、アプリケーションポッドおよびシステムポッドのイメージが含まれます。
KubiScanは、Kubernetesクラスターをスキャンして、Kubernetesのロールベースアクセス制御(RBAC)認可モデルでのリスクのある権限を検出するツールです。
Mkatは、他の種類の高リスクチェックをテストするために構築されたツールです。主に3つの異なるモードがあります:
find-role-relationships
: AWSロールがどのポッドで実行されているかを見つけますfind-secrets
: ポッド、ConfigMaps、SecretsなどのK8sリソース内のシークレットを特定しようとします。test-imds-access
: ポッドを実行し、メタデータv1およびv2にアクセスしようとします。警告:これによりクラスター内でポッドが実行されるため、これを行いたくない場合があるため、非常に注意してください!
IaCコードの監査
Popeyeは、ライブKubernetesクラスターをスキャンし、デプロイされたリソースと構成に関する潜在的な問題を報告するユーティリティです。クラスターをスキャンすることで、ミス構成を検出し、ベストプラクティスが適用されていることを確認し、将来の問題を防ぎます。これにより、野生のKubernetesクラスターを操作する際に直面する認知負荷を軽減することを目指しています。さらに、クラスターがメトリックサーバーを使用している場合、潜在的なリソースの過剰/不足割り当てを報告し、クラスターが容量不足になると警告を試みます。
KICSは、次のインフラストラクチャコードソリューションでセキュリティ脆弱性、コンプライアンスの問題、およびインフラストラクチャのミス構成を検出します:Terraform、Kubernetes、Docker、AWS CloudFormation、Ansible、Helm、Microsoft ARM、およびOpenAPI 3.0の仕様
Checkovは、インフラストラクチャコード用の静的コード解析ツールです。
Terraform、Terraform plan、Cloudformation、AWS SAM、Kubernetes、Dockerfile、Serverless、またはARM Templatesを使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティおよびコンプライアンスのミス構成を検出します。
kube-scoreは、Kubernetesオブジェクト定義の静的コード解析を実行するツールです。
インストール方法:
ディストリビューション | コマンド/リンク |
---|---|
macOS、Linux、Windows用の事前ビルドバイナリ | |
Docker |
|
Homebrew(macOSおよびLinux) |
|
Krew(macOSおよびLinux) |
|
ヒント
Kubernetes PodSecurityContextとSecurityContext
PodSecurityContextでポッドのセキュリティコンテキストを構成し、SecurityContextで実行されるコンテナのセキュリティコンテキストを構成できます。詳細については、次を参照してください:
Kubernetes SecurityContext(s)Kubernetes APIのハードニング
Kubernetes Api Serverへのアクセスを保護することは非常に重要です。十分な権限を持つ悪意のあるアクターがそれを悪用し、環境を多くの方法で損傷させる可能性があるためです。 アクセス(API Serverへのアクセスのホワイトリスト化と他の接続を拒否する)と認証(最小特権の原則に従う)を確保することが重要です。そして、決して 匿名 リクエストを許可しないことが重要です。
一般的なリクエストプロセス: ユーザーまたはK8s ServiceAccount –> 認証 –> 認可 –> アドミッションコントロール。
ヒント:
ポートを閉じる。
匿名アクセスを避ける。
NodeRestriction;特定のノードからAPIへのアクセスを拒否する。
これは、kubeletsがノードオブジェクトをワークロード分離の目的でラベル付けするために予約されたラベル接頭辞であるnode-restriction.kubernetes.io/接頭辞のラベルを追加/削除/更新することを許可しません。
また、kubeletsがこれらのラベルとラベル接頭辞を追加/削除/更新できるようにします。
ラベルを使用してセキュアなワークロード分離を確保します。
特定のポッドがAPIアクセスを拒否します。
ApiServerのインターネットへの露出を避ける。
不正なアクセスRBACを避ける。
ファイアウォールとIPホワイトリストを使用したApiServerポートの保護。
一般的なハードニング
必要に応じてKubernetes環境を以下のように頻繁に更新する必要があります:
依存関係を最新の状態に保つ。
バグとセキュリティパッチを適用する。
リリースサイクル: 3ヶ月ごとに新しいマイナーリリースがあります -- 1.20.3 = 1(メジャー).20(マイナー).3(パッチ)
Kubernetesクラスタをアップデートする最良の方法は(こちら):
このシーケンスに従ってマスターノードコンポーネントをアップグレードする:
etcd(すべてのインスタンス)。
kube-apiserver(すべてのコントロールプレーンホスト)。
kube-controller-manager。
kube-scheduler。
クラウドコントローラーマネージャ(使用している場合)。
kube-proxy、kubeletなどのワーカーノードコンポーネントをアップグレードする。
Last updated