Kubernetes のポリシー DevOps コンフィグ
デフォルトでは、 DevOps コンフィグ ポリシーコンテンツパックには、 Kubernetes 構成を検証するための一連のポリシーが含まれています。
常にイメージをプル アドミッションコントロールプラグインが有効 (container_always_pull_images_plugin_is_enabled)
Kubernetes API サーバーに対して AlwaysPullImages アドミッションコントローラープラグインが有効になっているかどうかを確認します。
kube-apiserver コマンドの使用時に --enable-admission-plugins 引数で AlwaysPullImages プラグインが指定されていない場合、非準拠ステータスになります。
基本認証ファイルが設定されていません (container_basic_auth_file_is not_set)
Kubernetes API サーバーが基本ユーザー認証メカニズムを使用していないかどうかを確認します。
kube-apiserver コマンドの使用時にコンテナに --basic-auth-file 引数を指定すると、非準拠ステータスになります。
バインドアドレスが設定されていません (container_bind_address_not_set_to_localhost)
KubernetesスケジューラーまたはKubernetesコントローラーマネージャーのバインドアドレスが 127.0.0.1 でないかどうかを確認します。
kube-controller-manager または kube-scheduler コマンドの使用時にコンテナの --bind-address 引数が 127.0.0.1 に設定されている場合、非準拠ステータスになります。
コンテナが低 UID (container_uid_minimum_limit) で実行されない
Kubernetesポッド内の各コンテナの UID が指定された最小 UID 値以上かどうかを確認します。
コンテナに定義された UID が最小 UID 値より小さい場合、非準拠ステータスになります。コンテナーに UID が定義されていない場合は、関連付けられたポッドの UID が検証されます。
- 入力引数
- min_uid
- ポッド内のコンテナに必要な最小 UID 値。
- デフォルト値:
10000 - タイプ: 整数
- 必須:False
コンテナにはドロップ機能が必要 (container_requires_drop_capabilities)
Kubernetesポッド内のコンテナに対してドロップ機能が定義されているかどうかを確認します。
コンテナのドロップ機能が定義されていない場合、非準拠ステータスになります。
コンテナは非ルートユーザーとして実行されます (container_run_as_nonroot_user)
Kubernetesポッド内のコンテナが非ルートユーザーとしてのみ実行されているかどうかをチェックして、セキュリティの構成ミスの悪用可能性を制限し、侵害された場合に攻撃者の可能性を制限します。
コンテナの runAsNonRoot キーが false に設定されている場合、またはコンテナのユーザー ID (UID) が 0 の場合、非準拠ステータスになります。
コンテナは特権アクセスなしで実行される (container_is_not_privileged)
Kubernetesポッド内のコンテナが特権アクセスなしで実行されているかどうかを確認します。
コンテナの特権フィールドが true に設定されている場合、結果は非準拠ステータスになります。
コンテナはシステムアドミン機能なしで実行されます (container_is_without_sys_admin_capability)
Kubernetesポッド内のコンテナがSYS_ADMIN機能なしで実行されているかどうかを確認します。
SYS_ADMIN権限がコンテナに割り当てられると、非準拠ステータスになります。
CPU 要求が制限内です (container_cpu_request_within _limits)
Kubernetesポッド内のコンテナが、指定された CPU 制限内で中央処理装置 (CPU) リソースを要求しているかどうかを確認します。
limits.cpu キーが定義されていない場合、または requests.cpu キーの値が limits.cpu キーの値を超えている場合は、非準拠ステータスになります。
Docker デーモンソケットが公開されていない (docker_daemon_socket_not_exposed)
Docker デーモンソケットがコンテナに公開されていないかどうかを確認します。
ボリュームの hostPath.path キーが /var/run/docker.sock に設定されている場合、非準拠ステータスになります。
イメージプルポリシーは常に (container_imagePullPolicy_is_always)
Kubernetesポッド内の各コンテナの imagePullPolicy フィールドが [Always] に設定されているかどうかを確認します。
imagePullPolicy フィールドが定義されていない場合、または [常に] 基準が満たされていない場合は、非準拠ステータスになります。
安全でないバインドアドレスが設定されていません (container_insecure_bind_address_is_not_set)
Kubernetes API サーバーが安全でないアドレスにバインドされていないかどうかを確認します。そうしないと、攻撃者が安全でないポート経由でサーバーに接続し、転送中の機密データを読み取る可能性があります。
kube-apiserver コマンドの使用時に insecure-bind-address 引数を指定すると、非準拠ステータスになります。
Kubelet HTTPS が true (container_kubelet_https_is_true)
Kubernetes API サーバーと kubelet 間の接続で HTTPS プロトコルを使用してデータ転送を保護するかどうかを確認します。
kube-apiserver コマンドの使用時に -kubelet-https 引数が false に設定されている場合、非準拠ステータスになります。
メモリ要求が制限内 (container_memory_request_within _limits)
Kubernetesポッド内のコンテナが、指定されたメモリ制限内でリソースを消費しているかどうかを確認します。
limits.memory キーが定義されていない場合、または requests.memory キーの値が limits.memory キーの値を超えている場合は、非準拠ステータスになります。
RBAC ルールにワイルドカードがない(rbac_no_wildcard_in_rule)
ロールリソースと ClusterRole リソースが、ロールベースのアクセス制御 (RBAC) ルールのオブジェクトまたはアクションを参照するためにワイルドカードを使用していないかどうかを確認します。
RBAC ルールの apiGroups、 リソース、または 動詞 でワイルドカードが使用されている場合、非準拠ステータスに戻ります。
権限エスカレーションは許可されていません (container_privilege_escalation_not_allowed)
Kubernetesポッド内のコンテナーの特権が親プロセスよりも低いかどうかを確認します。
コンテナの allowPrivilegeEscalation キーが true に設定されているか、定義されていない場合、非準拠ステータスになります。
許可されたルートコンテナ (container_read_only_root_file_system)
Kubernetesポッド内のコンテナのルートファイルシステムが読み取り専用に設定されているかどうかを確認します。
コンテナの readOnlyRootFilesystem キーが定義されていないか、 falseに設定されている場合は、非準拠ステータスに戻ります。
Seccomp プロファイルが設定されています (container_seccomp_profile_is_configured)
Kubernetes ポッド内のコンテナが、潜在的に危険なシステムコール (syscalls) を制限するためにセキュアコンピューティングモード (seccomp) プロファイルで構成されているかどうかを確認します。
コンテナの seccompProfile.type キーが定義されていないか、 Localhost または RuntimeDefault 以外の値に設定されている場合は、非準拠ステータスになります。
サービスアカウントの秘密鍵ファイルが指定されています (container_service_account_private_key_file_is_specified)
コンテナの kube-controller-manager コマンドで --service-account-private-key-file 引数が指定されているかどうかを確認します。
kube-controller-manager コマンドの使用時にコンテナに --service-account-private-key-file 引数が指定されていない場合、非準拠ステータスになります。
セキュアポートがゼロ (container_secure_port_not_set_to_zero) に設定されていません
Kubernetes API サーバーが HTTPS 認証と承認にポート 0 を使用していないかどうかを確認します。
kube-apiserver コマンドの使用時にコンテナの --secure-port 引数が 0 に設定されている場合、非準拠ステータスになります。
トークン認証ファイルが設定されていません (token_auth_file_is_not_set)
Kubernetes API サーバーがユーザー認証に静的トークンファイルを使用していないかどうかを確認します。
kube-apiserver コマンドの使用時に token-auth-file 引数を指定すると、非準拠ステータスになります。