Translated ['', 'src/pentesting-cloud/kubernetes-security/kubernetes-har

This commit is contained in:
Translator
2025-11-17 12:19:45 +00:00
parent d8f2a08efa
commit f3410abc5a

View File

@@ -1,12 +1,12 @@
# Kubernetes Hardening
# Kubernetes ハードニング
{{#include ../../../banners/hacktricks-training.md}}
## Tools to analyse a cluster
## クラスター解析ツール
### [**Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance)
### [Steampipe - Kubernetes Compliance](https://github.com/turbot/steampipe-mod-kubernetes-compliance)
Kubernetesクラスターに対して**いくつかのコンプライアンスチェックを行います**。CIS、国家安全保障局NSA、およびサイバーセキュリティおよびインフラストラクチャセキュリティ局CISAKubernetesハードニングに関するサイバーセキュリティ技術報告のサポートが含まれています。
これは **Kubernetes クラスターに対する複数のコンプライアンスチェック** を実行します。CIS、National Security Agency (NSA)、および Cybersecurity and Infrastructure Security Agency (CISA) の Kubernetes ハードニングに関するサイバーセキュリティ技術レポートをサポートしています。
```bash
# Install Steampipe
brew install turbot/tap/powerpipe
@@ -27,44 +27,44 @@ powerpipe server
```
### [**Kubescape**](https://github.com/armosec/kubescape)
[**Kubescape**](https://github.com/armosec/kubescape) は、リスク分析、セキュリティコンプライアンス、RBACビジュアライザ、イメージ脆弱性スキャンを含むマルチクラウドK8sのシングルペインオブグラスを提供するK8sオープンソースツールです。KubescapeK8sクラスター、YAMLファイル、HELMチャートをスキャンし、[NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/) などの複数のフレームワークに基づいて、誤設定、ソフトウェア脆弱性、RBACロールベースアクセス制御違反をCI/CDパイプラインの期段階で検出し、リスクスコアを即座に計算し、時間経過に伴うリスク傾向を表示します。
[**Kubescape**](https://github.com/armosec/kubescape) は、リスク分析、セキュリティコンプライアンス、RBAC ビジュアライザ、イメージ脆弱性スキャンなどを含むマルチクラウド対応の K8s 向けオープンソースツールで、K8s の single pane of glass一元管理画面を提供します。 KubescapeK8s クラスター、YAML ファイル、HELM チャートをスキャンし、複数のフレームワーク(例えば [NSA-CISA](https://www.armosec.io/blog/kubernetes-hardening-guidance-summary-by-armo) [MITRE ATT\&CK®](https://www.microsoft.com/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/))に基づくミスコンフィギュレーション、ソフトウェア脆弱性、および CI/CD パイプラインの期段階での RBAC (role-based-access-control) 違反を検出し、リスクスコアを即座に算出して時間経過によるリスク傾向を表示します。
```bash
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
kubescape scan --verbose
```
### [**Popeye**](https://github.com/derailed/popeye)
[**Popeye**](https://github.com/derailed/popeye) はライブKubernetesクラスタをスキャンし、**デプロイされたリソースと構成に関する潜在的な問題を報告する**ユーティリティです。ディスク上にあるものではなく、デプロイされているものに基づいてクラスタをサニタイズします。クラスタをスキャンすることで、誤った構成を検出し、ベストプラクティスが実施されていることを確認する手助けをし、将来の頭痛を防ぎます。Kubernetesクラスタを運用する際に直面する認知的\_オーバーロードを軽減することを目しています。さらに、クラスターがメトリックサーバーを使用している場合、リソースの過剰/不足割り当てを報告し、クラスタの容量が不足する場合には警告を試みます。
[**Popeye**](https://github.com/derailed/popeye) はライブKubernetes クラスタをスキャンし、 **デプロイされたリソースと設定に関する潜在的な問題を報告** するユーティリティです。これはディスク上にあるものではなく、デプロイされている内容に基づいてクラスタをサニタイズします。クラスタをスキャンすることで設定ミスを検出し、ベストプラクティスが適用されていることを確認する手助けをし、将来的な問題を防ぎます。これは、実際に Kubernetes クラスタを運用する際に直面する認知的\_over_load を軽減することを目的としています。さらに、クラスタが metric-server を使用している場合、リソースの過剰/不足割り当ての可能性を報告し、クラスタの容量が不足しそうな場合には警告を試みます。
### [**Kube-bench**](https://github.com/aquasecurity/kube-bench)
ツール[**kube-bench**](https://github.com/aquasecurity/kube-bench)は、[**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/)に文書化されたチェックを実行することで、Kubernetesが安全にデプロイされているかどうかを確認するツールです。\
次のように選択できます:
ツール [**kube-bench**](https://github.com/aquasecurity/kube-bench) は、[**CIS Kubernetes Benchmark**](https://www.cisecurity.org/benchmark/kubernetes/) に記載されたチェックを実行することで、Kubernetes が安全にデプロイされているかを検証するツールです。\
You can choose to:
- コンテナ内からkube-benchを実行するホストとPID名前空間を共有)
- ホストにkube-benchをインストールするコンテナを実行し、その後ホスト上でkube-benchを直接実行する
- [Releases page](https://github.com/aquasecurity/kube-bench/releases)から最新のバイナリをインストールする
- コンテナ内から kube-bench を実行する(ホストと PID namespace を共有)
- ホストに kube-bench をインストールするコンテナを実行し、その後ホスト上で直接 kube-bench を実行する
- 最新のバイナリを [Releases page](https://github.com/aquasecurity/kube-bench/releases) からインストールする
- ソースからコンパイルする。
### [**Kubeaudit**](https://github.com/Shopify/kubeaudit)
**[非推奨]** ツール[**kubeaudit**](https://github.com/Shopify/kubeaudit)は、さまざまなセキュリティ上の懸念に対して**Kubernetesクラスタを監査する**コマンドラインツールおよびGoパッケージです。
**[DEPRECATED]** ツール [**kubeaudit**](https://github.com/Shopify/kubeaudit) は、さまざまなセキュリティ上の懸念に対して **Kubernetes クラスタを監査する** コマンドラインツールおよび Go パッケージです。
Kubeauditは、クラスタ内のコンテナ内で実行されているかどうかを検出できます。そうであれば、そのクラスタ内のすべてのKubernetesリソースを監査しようとします
Kubeaudit は、クラスタ内のコンテナ内で実行されているかどうかを検出できます。もしそうであれば、そのクラスタ内のすべての Kubernetes リソースを監査しようとします:
```
kubeaudit all
```
このツールには、検出された問題を**自動的に修正する**ための引数`autofix`もあります。
このツールには `autofix` 引数もあり、検出された問題を**自動的に修正します。**
### [**Kube-hunter**](https://github.com/aquasecurity/kube-hunter)
**[非推奨]** ツール[**kube-hunter**](https://github.com/aquasecurity/kube-hunter)は、Kubernetesクラスターのセキュリティの弱点を探します。このツールはKubernetes環境におけるセキュリティ問題への認識と可視性を高めるために開発されました。
**[非推奨]** ツール [**kube-hunter**](https://github.com/aquasecurity/kube-hunter)Kubernetes クラスターのセキュリティの弱点を探します。 このツールは Kubernetes 環境におけるセキュリティ問題への認識と可視性を高めるために開発されました。
```bash
kube-hunter --remote some.node.com
```
### [Trivy](https://github.com/aquasecurity/trivy)
[Trivy](https://github.com/aquasecurity/trivy) はセキュリティ問題を探すスキャナーを持ち、問題を見つけることができるターゲットがあります
[Trivy](https://github.com/aquasecurity/trivy) はセキュリティ問題を検出するスキャナを備えており、以下のターゲットでそれらの問題を検出できます:
- コンテナイメージ
- ファイルシステム
@@ -75,82 +75,127 @@ kube-hunter --remote some.node.com
### [**Kubei**](https://github.com/Erezf-p/kubei)
**[メンテナンスされていないようです]**
**メンテナンスされていないように見える**
[**Kubei**](https://github.com/Erezf-p/kubei) は脆弱性スキャンCIS Dockerベンチマークツールで、ユーザーがKubernetesクラスターの正確即時のリスク評価を得ることを可能にします。Kubeiはアプリケーションポッドとシステムポッドのイメージを含、Kubernetesクラスターで使用されているすべてのイメージをスキャンします。
[**Kubei**](https://github.com/Erezf-p/kubei) は脆弱性スキャンおよびCIS Dockerベンチマークツールで、ユーザーがKubernetesクラスターの正確かつ即時のリスク評価を得られるようにします。KubeiはアプリケーションPodおよびシステムPodのイメージを含、Kubernetesクラスターで使用されているすべてのイメージをスキャンします。
### [**KubiScan**](https://github.com/cyberark/KubiScan)
[**KubiScan**](https://github.com/cyberark/KubiScan) はKubernetesのロールベースアクセス制御(RBAC認可モデルにおけるリスクのある権限をスキャンするためのツールです。
[**KubiScan**](https://github.com/cyberark/KubiScan) はKubernetesのRole-based access control (RBAC) 認可モデルにおける危険な権限をスキャンするためのツールです。
### [Managed Kubernetes Auditing Toolkit](https://github.com/DataDog/managed-kubernetes-auditing-toolkit)
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) は他のツールと比較して高リスクチェックの他のタイプをテストするために構築されたツールです。主に3つの異なるモードがあります
[**Mkat**](https://github.com/DataDog/managed-kubernetes-auditing-toolkit) は他のツールと比較して別種の高リスクチェックをテストするために作られたツールです。主に3つのモードがあります:
- **`find-role-relationships`**: どのAWSロールがどのポッドで実行されているかを見つけます
- **`find-secrets`**: Pods、ConfigMaps、SecretsなどのK8sリソース内のシークレットを特定しようとします
- **`test-imds-access`**: ポッドを実行し、メタデータv1およびv2にアクセスしようとします。警告:これはクラスター内でポッドを実行しますので、注意してください。これを行いたくないかもしれません
- **`find-role-relationships`**: どのAWSロールがどのPodで動作しているかを見つけます
- **`find-secrets`**: Pods、ConfigMaps、SecretsなどのK8sリソース内のシークレットを特定しようとします
- **`test-imds-access`**: Podを実行してmetadata v1およびv2にアクセスしようとします。警告: これによりクラスター内でPodが実行されます。実行したくない可能性があるため、十分注意してください
## **IaCコードの監査**
### [**KICS**](https://github.com/Checkmarx/kics)
[**KICS**](https://github.com/Checkmarx/kics) は以下の**Infrastructure as Codeソリューション**における**セキュリティ脆弱性**、コンプライアンス問題、およびインフラストラクチャの誤設定を見つけます:TerraformKubernetesDockerAWS CloudFormationAnsibleHelmMicrosoft ARM、およびOpenAPI 3.0仕様
[**KICS**](https://github.com/Checkmarx/kics) は以下のInfrastructure as Codeソリューションにおけるセキュリティ脆弱性、コンプライアンス問題、およびインフラ設定ミスを検出します: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM, and OpenAPI 3.0 specifications
### [**Checkov**](https://github.com/bridgecrewio/checkov)
[**Checkov**](https://github.com/bridgecrewio/checkov) は、インフラストラクチャ・アズ・コードのための静的コード析ツールです。
[**Checkov**](https://github.com/bridgecrewio/checkov) はinfrastructure-as-code向けの静的コード析ツールです。
[Terraform](https://terraform.io)、Terraformプラン、[Cloudformation](https://aws.amazon.com/cloudformation/)、[AWS SAM](https://aws.amazon.com/serverless/sam/)、[Kubernetes](https://kubernetes.io)、[Dockerfile](https://www.docker.com)、[Serverless](https://www.serverless.com) または [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) を使用してプロビジョニングされたクラウドインフラストラクチャをスキャンし、グラフベースのスキャンを使用してセキュリティコンプライアンスの設定を検出します。
[Terraform](https://terraform.io)、Terraform plan、[Cloudformation](https://aws.amazon.com/cloudformation/)、[AWS SAM](https://aws.amazon.com/serverless/sam/)、[Kubernetes](https://kubernetes.io)、[Dockerfile](https://www.docker.com)、[Serverless](https://www.serverless.com) または [ARM Templates](https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) を使てプロビジョニングされたクラウドインフラをスキャンし、グラフベースのスキャンセキュリティおよびコンプライアンスの設定ミスを検出します。
### [**Kube-score**](https://github.com/zegl/kube-score)
[**kube-score**](https://github.com/zegl/kube-score) はKubernetesオブジェクト定義の静的コード析を行うツールです。
[**kube-score**](https://github.com/zegl/kube-score) はKubernetesオブジェクト定義の静的コード析を行うツールです。
インストール方法
インストール方法:
| ディストリビューション | コマンド / リンク |
| --------------------------------------------------- | --------------------------------------------------------------------------------------- |
| macOS、Linux、Windows用のプリビルドバイナリ | [GitHubリリース](https://github.com/zegl/kube-score/releases) |
| Docker | `docker pull zegl/kube-score` ([Docker Hub)](https://hub.docker.com/r/zegl/kube-score/) |
| Homebrew (macOSおよびLinux) | `brew install kube-score` |
| [Krew](https://krew.sigs.k8s.io/) (macOSおよびLinux) | `kubectl krew install score` |
| 配布 / ディストリビューション | コマンド / リンク |
| ----------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| macOS、Linux、Windows用の事前ビルドバイナリ | [GitHub releases](https://github.com/zegl/kube-score/releases) |
| Docker | `docker pull zegl/kube-score` ([Docker Hub)](https://hub.docker.com/r/zegl/kube-score/) |
| HomebrewmacOSおよびLinux | `brew install kube-score` |
| [Krew](https://krew.sigs.k8s.io/)macOSおよびLinux | `kubectl krew install score` |
## YAMLファイルとHelmチャートを解析するツール
### [**Kube-linter**](https://github.com/stackrox/kube-linter)
```bash
# Install Kube-linter
brew install kube-linter
# Run Kube-linter
## lint ./path/to/yaml/or/chart
```
### [Checkov](https://github.com/bridgecrewio/checkov)
```bash
# Install Checkov
pip install checkov
# Run Checkov
checkov -d ./path/to/yaml/or/chart
```
### [kubescore](https://github.com/zegl/kube-score)
```bash
# Install kube-score
brew install kube-score
# Run kube-score
kube-score score ./path/to/yaml
# or
helm template chart /path/to/chart | kube-score score -
# or if the chart needs some values
helm template chart /path/to/chart \
--set 'config.urls[0]=https://dummy.backend.internal' \
| kube-score score -
```
### [Kubesec](https://github.com/controlplaneio/kubesec)
```bash
# Install Kubesec
## Download from https://github.com/controlplaneio/kubesec/releases
# Run Kubesec in a yaml
kubesec scan ./path/to/yaml
# or
helm template chart /path/to/chart | kubesec scan -
# or if the chart needs some values
helm template chart /path/to/chart \
--set 'config.urls[0]=https://dummy.backend.internal' \
| kubesec scan -
```
## ヒント
### Kubernetes PodSecurityContextSecurityContext
### Kubernetes PodSecurityContextSecurityContext
**Podのセキュリティコンテキスト**_PodSecurityContext_実行される**コンテナ**のセキュリティコンテキスト_SecurityContext_を構成できます。詳細については、次をお読みください
Pod の **セキュリティコンテキスト**_PodSecurityContext_ で、実行される **コンテナ****SecurityContext**_SecurityContext_ で設定できます。詳しくは以下を参照してください:
{{#ref}}
kubernetes-securitycontext-s.md
{{#endref}}
### Kubernetes APIの強化
### Kubernetes API ハードニング
Kubernetes Api Serverへのアクセスを**保護すること**は非常に重要です。十分な権限を持つ悪意のある行為者がそれを悪用し環境に多くの方法で損害を与える可能性があります。\
**アクセス**APIサーバーにアクセスするためのオリジンを**ホワイトリスト**し、他の接続を拒否する)と[**認証**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/)**最小限の権限**の原則に従う)を確保することが重要です。そして、**決して** **匿名** **リクエスト**を**許可しない**でください。
Kubernetes Api Server へのアクセスを保護することは非常に重要です。悪意あるアクターが十分な権限を持っていると、Api Server を悪用し環境に多大な被害を与える可能性があります。API への **アクセス**API Server にアクセスできるオリジンを **whitelist** 化し、その他の接続を拒否する)と、[**authentication**](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-authentication-authorization/)**最小特権** の原則に従う)の両方を確実に保護してください。そして、決して **never** **allow** **anonymous** **requests** を許可してはいけません。
**一般的なリクエストプロセス:**\
ユーザーまたはK8s ServiceAccount > 認証 > 認可 > 受け入れ制御。
一般的なリクエストの処理:\
User or K8s ServiceAccount > Authentication > Authorization > Admission Control.
**ヒント**
**ヒント**:
- ポートを閉じる。
- 匿名アクセスを避ける。
- NodeRestriction; 特定のードからAPIへのアクセスを制限
- NodeRestriction; 特定のノードからAPI アクセスを禁止する
- [https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction)
- 基本的にkubeletnode-restriction.kubernetes.io/プレフィックスを持つラベルを追加/削除/更新するを防ぎます。このラベルプレフィックスは管理者がワークロード分離目的でノードオブジェクトにラベル付けるために予約されており、kubeletはそのプレフィックスを持つラベルを変更することは許可されません。
- また、kubeletがこれらのラベルラベルプレフィックスを追加/削除/更新することを許可します。
- ラベルを使用して安全なワークロードの分離を確保します。
- 特定のポッドがAPIアクセスを避ける。
- ApiServerインターネットに露出させない
- 認可されていないアクセスRBACを避ける。
- ファイアウォールとIPホワイトリストを使用したApiServerポート
- 基本的に kubelets が node-restriction.kubernetes.io/ プレフィックスを持つラベルを追加/削除/更新することを防ぎます。このラベルプレフィックスは管理者がワークロード分離のために Node オブジェクトにラベル付けるために予約されており、kubelets はそのプレフィックスを持つラベルを変更できません。
- また、kubelets がこれらのラベルおよびラベルプレフィックスを追加/削除/更新できるようにします。
- ラベルワークロードのセキュアな分離を確保す
- 特定の Pod からの API アクセスを制限する。
- ApiServerインターネット公開を避ける
- 不正アクセスを避けるために RBAC を適切に設定する。
- ApiServer のポートはファイアウォールと IP ホワイトリスティングで保護する
### SecurityContextの強化
### SecurityContext ハードニング
デフォルトでは他のユーザが指定されていない場合、Podが起動するときにrootユーザが使用されます。次のようなテンプレートを使用して、より安全なコンテキストでアプリケーションを実行できます
デフォルトでは Pod を起動する際に他のユーザが指定されていない場合、root ユーザが使用されます。次のようなテンプレートを使て、より安全なコンテキストでアプリケーションを実行できます:
```yaml
apiVersion: v1
kind: Pod
@@ -181,28 +226,28 @@ allowPrivilegeEscalation: true
### 一般的なハードニング
Kubernetes 環境は、次のように必要に応じて頻繁に更新する必要があります。
必要に応じて頻繁に Kubernetes 環境を更新して、次を満たすようにしてください:
- 依存関係を最新の状態に保つ。
- バグセキュリティパッチ。
- 依存関係を最新に保つ。
- バグおよびセキュリティパッチの適用
[**リリースサイクル**](https://kubernetes.io/docs/setup/release/version-skew-policy/): 3月ごとに新しいマイナーリリースがあります -- 1.20.3 = 1(メジャー).20(マイナー).3(パッチ)
[**Release cycles**](https://kubernetes.io/docs/setup/release/version-skew-policy/): 3月ごとに新しいマイナーリリースがあります -- 1.20.3 = 1(Major).20(Minor).3(patch)
**Kubernetes クラスターを更新する最良の方法は (こちらから)** [**こちら**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/)**:**
**Kubernetes クラスターを更新する最良の方法は[**here**](https://kubernetes.io/docs/tasks/administer-cluster/cluster-upgrade/) より):**
- マスターノードコンポーネントを次の順序でアップグレードします。
- etcd (すべてのインスタンス)。
- kube-apiserver (すべてのコントロールプレーンホスト)。
- kube-controller-manager
- kube-scheduler
- クラウドコントローラーマネージャー (使用している場合)。
- kube-proxy、kubelet などのワーカーノードコンポーネントをアップグレードします。
- Master Node コンポーネントを次の順序でアップグレードしてください:
- etcd (all instances).
- kube-apiserver (all control plane hosts).
- kube-controller-manager.
- kube-scheduler.
- cloud controller manager, if you use one.
- Worker Node のコンポーネント(kube-proxy、kubeletなどをアップグレードします。
## Kubernetes の監視とセキュリティ:
- Kyverno ポリシーエンジン
- Cilium Tetragon - eBPF ベースのセキュリティ可視化とランタイム強制
- ネットワークセキュリティポリシー
- Falco - ランタイムセキュリティ監視と検出
- Kyverno Policy Engine
- Cilium Tetragon - eBPF-based Security Observability and Runtime Enforcement
- Network Security Policies
- Falco - Runtime security monitoring & detection
{{#include ../../../banners/hacktricks-training.md}}