このトピックでは、Kubernetes セキュリティ強化ポリシーの組み込みルールについてアルファベット順に一覧表示します。
組み込みルール
ルール名 | 説明 | カテゴリ |
---|---|---|
ホスト名前空間へのアクセス | ホストのネットワーク、PID、および IPC 名前空間へのアクセス。 | ワークロード セキュリティ |
ホストパスへのアクセス | コンテナでのホスト ディレクトリの使用を制限します。 | ボリューム |
永続データへのアクセス | 非コア ボリューム タイプの使用を PersistentVolumes で定義されたボリューム タイプに制限します。 | ボリューム |
追加機能 | この機能により、バイナリの「root/non-root」二分法がきめ細かいアクセス制御システムに変わります。このルールは、コンテナの実行時に追加される機能を適用するのに役立ちます。 | ワークロード セキュリティ |
権限の昇格を許可 | AllowPrivilegeEscalation は、プロセスが親プロセスよりも多くの権限を取得できるかどうかを管理します。 | ワークロード セキュリティ |
特権コンテナを許可 | コンテナを特権モードで実行します。特権コンテナ内のプロセスは、基本的にホストの root と同じです。 | ワークロード セキュリティ |
AppArmor | AppArmor (Application Armor) は、オペレーティング システムとそのアプリケーションをセキュリティ上の脅威から保護する Linux セキュリティ モジュールです。これを使用するには、システム管理者が AppArmor セキュリティ プロファイルを各プログラムに関連付けます。 | ワークロード セキュリティ |
クラスタ ロールのバインド | ユーザーまたはサービス アカウントをクラスタ内のロールとそのすべての名前空間にバインドします。 | RBAC |
会社の禁止リスト | 会社の禁止ファイルを含むイメージの展開を防止します。 | コンテナ イメージ |
CPU 制限 | ワークロード間で CPU を分散し、単一のコンテナがリソースを使い果たしてシステムを停止できないようにします。 | 割り当て |
クリティカルな脆弱性 | OS パッケージまたはライブラリに重大な脆弱性があるイメージの展開を防止します。 | コンテナ イメージ |
一時コンテナを拒否 | 一時コンテナは、ポッド コンテキスト内でアドホック コンテナを実行することで、ツール セットまたはアクセスが制限されたワークロードをデバッグするのに役立ちます。管理者にとっては強力ですが、一時コンテナは攻撃者が悪意を持ってワークロードへの特権アクセスを取得するために使用する可能性があります。 | コマンド |
最新のタグを拒否 | 「最新」タグを持つコンテナ イメージを識別します。最新のタグを使用すると、イメージ バージョンの追跡や適切なロールバックが困難になります。 | コンテナ イメージ |
新しいリソースを拒否 | 関連付けられた範囲内の新しいリソースの展開を特定します。 | ワークロード セキュリティ |
新しい CRD の展開 | 特定の Kubernetes インストールをカスタマイズして、Kubernetes リソースを拡張します。カスタム リソースがインストールされると、ユーザーは kubectl を使用してオブジェクトを作成してアクセスできます。 | CRD |
ルートなしの適用 | コンテナは、root プライマリまたは補助 GID で実行しないようにする必要があります。コンテナのユーザー/グループ ID を指定するか、runAsNonRoot を true に設定すると、コンテナは root 以外のユーザーまたはグループとして実行する必要があることを示します。 | ワークロード セキュリティ |
Exec からコンテナ | Kubectl exec を使用すると、ユーザーはコンテナでコマンドを実行できます。権限を持つ攻撃者が「kubectl exec」を実行して、悪意のあるコードを実行し、クラスタ内のリソースを侵害する可能性があります。 | コマンド |
ホスト ポート | ホスト ポートによってワークロードを公開できるようにします。 | ネットワーク |
イメージがスキャンされない | 展開から 20 分以内にスキャンされていないイメージを含むワークロードを特定します。 | コンテナ イメージ |
入力方向コントローラ | 入力方向コントローラによってワークロードを公開できるようにします。 | ネットワーク |
既知のマルウェア | 既知のマルウェアを含むイメージの展開を防止します。 | コンテナ イメージ |
ロード バランサ | ロード バランサによってワークロードを公開できるようにします。 | ネットワーク |
メモリ制限 | ワークロード間でメモリを分散し、単一のコンテナがリソースを使い果たしてシステムを停止できないようにします。 | 割り当て |
ノード ポート | ノード ポートによってワークロードを公開できるようにします。 | ネットワーク |
ポート転送 | Kubectl ポート転送を使用すると、クラスタの境界セキュリティをバイパスし、localhost の内部 Kubernetes クラスタ プロセスと直接やり取りできます。 | コマンド |
ハッシュ タグを要求 | 名前付きタグを持つコンテナ イメージを特定します。名前付きタグの上書きによる問題を防ぐには、ハッシュ タグが必要です | コンテナ イメージ |
ロールのバインド | ユーザーまたはサービス アカウントを名前空間内のロールにバインドします。 | RBAC |
SecComp プロファイル | このコンテナで使用される seccomp オプション。seccomp オプションがポッド レベルとコンテナ レベルの両方で指定されている場合、コンテナ オプションはポッド オプションより優先されます。 | ワークロード セキュリティ |
シークレットの検出 | シークレットを持つイメージの展開を防止します。 | コンテナ イメージ |
SeLinux | コンテナに適用される SELinux コンテキスト。指定しない場合、コンテナ ランタイムは各コンテナにランダムな SELinux コンテキストを割り当てます。 | ワークロード セキュリティ |
Sysctl | Sysctls は、ポッドに使用される namespaced sysctls のリストを保持します。サポートされていない sysctls を持つポッド(コンテナ ランタイムによって)の起動に失敗することがあります。 | ワークロード セキュリティ |
Unmasked proc mount | ProcMount は、コンテナに使用する proc mount のタイプを示します。デフォルトでは、読み取り専用パスとマスクされたパスにコンテナ ランタイムのデフォルトが使用されます。 | ワークロード セキュリティ |
修正による脆弱性 | 修正が利用可能な場合は、中、高、または重大な脆弱性を含むイメージの展開を防止します。 | コンテナ イメージ |
書き込み可能ファイル システム | ファイルへの書き込みを許可することで、脅威を取り込みやすくなり、環境内で持続しやすくなります。 | ワークロード セキュリティ |
組み込みルールの仕様
[組み込みルール名] | [ルールが適用される要素] | [予期される値 (値が異なる場合はルール違反がトリガされます)] |
---|---|---|
ホスト名前空間へのアクセス | spec.hostNetwork spec.hostPID spec.hostIPC |
FALSE |
ホストパスへのアクセス | spec.volumes[*].hostPath | 空 |
永続データへのアクセス | spec.volumes[*] | spec.volumes[*].EmptyDir spec.volumes[*].ConfigMap spec.volumes[*].Secrets spec.volumes[*].Ephemeral |
追加機能 | spec.containers[*].securityContext.capabilities.add spec.initContainers[*].securityContext.capabilities.add |
空白または以下のいずれか: CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_FOWNER, CAP_FSETID, CAP_KILL, CAP_SETGID, CAP_SETUID, CAP_SETPCAP, CAP_NET_BIND_SERVICE, CAP_NET_RAW, CAP_SYS_CHROOT, CAP_MKNOD, CAP_AUDIT_WRITE, CAP_SETFCAP |
権限の昇格を許可 | spec.containers[*].securityContext.allowPrivilegeEscalation spec.initContainers[*].securityContext.allowPrivilegeEscalation |
false、未定義/nil |
特権コンテナを許可 | spec.containers[*].securityContext.privileged spec.initContainers[*].securityContext.privileged |
false、未定義/nil |
AppArmor | metadata.annotations['container.apparmor.security.beta.kubernetes.io/*'] | ランタイム/デフォルト、未定義 |
クラスタ ロールのバインド | kind: clusterRoleBindings | |
CPU 制限 | spec.containers[*].resources.limits.cpu spec.containers[*].resources.requests.cpu |
|
クリティカルな脆弱性 | ||
一時コンテナを拒否 | ||
最新のタグを拒否 | ||
新しいリソースを拒否 | ||
新しい CRD の展開 | kind: CustomResourceDefinition | |
ルートなしの適用 | spec.securityContext.runAsNonRoot spec.containers[*].securityContext.runAsNonRoot spec.initContainers[*].securityContext.runAsNonRoot |
TRUE |
Exec からコンテナ | ||
ホスト ポート | spec.containers[*].ports[*].hostPort spec.initContainers[*].ports[*].hostPort |
0、未定義 |
イメージがスキャンされない | ||
入力方向コントローラ | ||
既知のマルウェア | ||
ロード バランサ | spec.type.LoadBalancer | metadata.annotations['cloud.google.com/load-balancer-type:internal'] metadata.annotations['service.beta.kubernetes.io/aws-load-balancer-internal:true'] metadata.annotations['service.beta.kubernetes.io/azure-load-balancer-internal:true'] metadata.annotations['service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type:private'] metadata.annotations['service.beta.kubernetes.io/openstack-internal-load-balancer:true'] metadata.annotations['service.beta.kubernetes.io/cce-load-balancer-internal-vpc:true'] metadata.annotations['service.kubernetes.io/qcloud-loadbalancer-internal-subnetid:subnet-xxx'] |
メモリ制限 | spec.containers[*].resources.limits.memory spec.containers[*].resources.requests.memory |
|
ノード ポート | ||
ポート転送 | ||
ハッシュ タグを要求 | ||
ロールのバインド | kind: roleBinding | |
SecComp プロファイル | metadata.annotations['seccomp.security.alpha.kubernetes.io/pod*'] spec.securityContext.seccompProfile.type spec.containers[*].securityContext.seccompProfile spec.initContainers[*].securityContext.seccompProfile |
false、未定義/nil |
シークレットの検出 | ||
SeLinux | spec.securityContext.seLinuxOptions spec.containers[*].securityContext.seLinuxOptions spec.initContainers[*].securityContext.seLinuxOptions |
未定義/nil |
Sysctl | spec.securityContext.sysctls | kernel.shm_rmid_forced net.ipv4.ip_local_port_range net.ipv4.tcp_syncookies net.ipv4.ping_group_range 未定義/空 |
Unmasked proc mount | spec.containers[*].securityContext.procMount spec.initContainers[*].securityContext.procMount |
未定義/nil、「デフォルト」 |
修正による脆弱性 | ||
書き込み可能ファイル システム | spec.containers[*].securityContext.readOnlyRootFilesystem spec.initContainers[*].securityContext.readOnlyRootFilesystem |