DevOps コンフィグ の Kubernetes ポリシー
デフォルトでは、 DevOps コンフィグ ポリシーコンテンツパックには、 Kubernetes 構成を検証するための一連のポリシーが含まれています。
Always Pull Images Admission コントロールプラグインが有効になっています (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 が定義されていない場合、関連付けられた Pod の 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 フィールドが [常時] に設定されているかどうかを確認します。
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)
ロールベースのアクセス制御 (RBAC) ルールのオブジェクトまたはアクションを参照するために、ロールリソースおよび ClusterRole リソースがワイルドカードを使用していないかどうかを確認します。
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 以外の値に設定されている場合は、非準拠すt-足すになります。
サービスアカウントの秘密鍵ファイルが指定されています (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 引数を指定すると、非準拠ステータスになります。