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