アドミッションコントローラーの概要
必要なライセンス: この機能は Enterprise ライセンスで利用できます。詳細については、ライセンスを参照してください。
この記事では、 Tenable One Cloud Exposure のアドミッション コントローラー機能の概念概要について説明します。
- イベントの探索に関するハウツーガイドについては、「 Kubernetes アドミッションコントローラーイベント」を参照してください。
- ポリシーの設定に関するハウツーガイドについては、 アドミッションコントローラーポリシーを参照してください。
Kubernetes アドミッションコントローラーは、クラスタ内で作成および変更するリソースに対する重要なコントロールレイヤーを提供します。アドミッションコントローラーは API リクエストをインターセプトします。これにより、ユーザーは次のアクションを実行できます。
- セキュリティポリシーを適用し、設定を検証します。
- システムがコンテナ、ポッド、サービスなどの準拠リソースのみを作成または削除できるようにしてください。
- [拒否] (アクションをブロック) や [アラート] (アクションを許可して違反をログに記録する) などの違反効果を適用します。
[Admission Controller Policies] (アドミッションコントローラーポリシー ) ページで、アドミッションコントローラーポリシー アドミッションコントローラーポリシーの設定 、ポリシー違反の結果を定義できます。違反の影響として、[拒否] または [アラート] を設定できます。有効なポリシーは、 アドミッションコントローラーのインストール をインストールし済み、選択した範囲内に存在するクラスタにのみ適用されます。
Tenable は、アドミッションコントローラーポリシーによって分析されたすべての Kubernetes アクションを、 イベント ページに記録します。
アドミッション制御のユースケース: 非 root ユーザー権限の強制
アドミッションコントローラーを使用すると、Kubernetes クラスタにデプロイするすべてのコンテナが非 root ユーザー権限で実行されるようにすることができます。これを強制するには、[Pod Security Standards - Root Containers] ポリシーを [Deny] に設定します。
ルートとして実行されているコンテナでポッドをデプロイしようとすると (たとえば、 runAsUser フィールドが 0 (ルートユーザー ID) に設定されているか、省略されている場合)、アドミッションコントローラーがリクエストをインターセプトし、デプロイメントをブロックします。
次のポッドマニフェストは非ルートユーザーポリシーに違反しています。
YAML
apiVersion: v1
kind: Pod
metadata:
name: root-container-pod
spec:
Containers:
- name: insecure-container
image: nginx
securityContext:
runAsUser: 0 # これは、コンテナが root として実行されることを指定します。
この例では、「ポッドセキュリティ標準 - ルートコンテナ」ポリシーがポッドのデプロイメントをブロックします。このポリシーを強制することで、権限昇格の脆弱性を防ぎ、ルートコンテナに関連するリスクを軽減して安全な Kubernetes 環境を維持できます。
