Kubernetes SecurityContext(s)
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Podのセキュリティコンテキストを指定する際に、いくつかの属性を使用できます。防御的なセキュリティの観点から考慮すべきことは:
runASNonRootをTrueに設定する
runAsUserを設定する
可能であれば、seLinuxOptionsおよびseccompProfileを指定して権限を制限することを検討する
runAsGroupおよびsupplementaryGroupsを介して特権****グループアクセスを与えない
fsGroup 整数
すべてのコンテナに適用される特別な補助グループ。一部のボリュームタイプでは、Kubeletがそのボリュームの所有権を変更することを許可します: 1. 所有するGIDはFSGroupになります 2. setgidビットが設定されます(ボリューム内で作成された新しいファイルはFSGroupが所有します) 3. 権限ビットはrw-rw----とORされます。未設定の場合、Kubeletはボリュームの所有権と権限を変更しません。
Pod内で公開される前に、ボリュームの所有権と権限を変更する動作を定義します。
runAsGroup 整数
コンテナプロセスのエントリポイントを実行するためのGID。未設定の場合はランタイムのデフォルトを使用します。
runAsNonRoot ブール値
コンテナが非rootユーザーとして実行される必要があることを示します。trueの場合、Kubeletはランタイムでイメージを検証し、UID 0(root)として実行されないことを確認し、そうでない場合はコンテナの起動に失敗します。
runAsUser 整数
コンテナプロセスのエントリポイントを実行するためのUID。未指定の場合は、イメージメタデータで指定されたユーザーがデフォルトになります。
seLinuxOptions SELinuxOptions についての詳細 seLinux
すべてのコンテナに適用されるSELinuxコンテキスト。未指定の場合、コンテナランタイムは各コンテナに対してランダムなSELinuxコンテキストを割り当てます。
seccompProfile SeccompProfile についての詳細 Seccomp
このPod内のコンテナが使用するseccompオプション。
supplementalGroups 整数配列
各コンテナで実行される最初のプロセスに適用されるグループのリスト。コンテナの主要GIDに加えて。
SysctlsはPodに使用される名前空間付きsysctlsのリストを保持します。サポートされていないsysctlsを持つPod(コンテナランタイムによって)は起動に失敗する可能性があります。
すべてのコンテナに適用されるWindows特有の設定。未指定の場合、コンテナのSecurityContext内のオプションが使用されます。
このコンテキストはコンテナ定義内に設定されます。防御的なセキュリティの観点から考慮すべきことは:
allowPrivilegeEscalationをFalseに設定する
機密のcapabilitiesを追加せず(不要なものは削除する)
privilegedをFalseに設定する
可能であれば、readOnlyFilesystemをTrueに設定する
runAsNonRootをTrueに設定し、runAsUserを設定する
可能であれば、seLinuxOptionsおよびseccompProfileを指定して権限を制限することを検討する
runAsGroupを介して特権****グループアクセスを与えない。
SecurityContextとPodSecurityContextの両方に設定された属性に注意してください。SecurityContextで指定された値が優先されます。
AllowPrivilegeEscalationは、プロセスが親プロセスよりもより多くの特権を得ることができるかどうかを制御します。このブール値は、コンテナプロセスにno_new_privsフラグが設定されるかどうかを直接制御します。AllowPrivilegeEscalationは、コンテナがPrivilegedとして実行されるか、CAP_SYS_ADMINを持つ場合は常にtrueです。
capabilities Capabilities についての詳細 Capabilities
コンテナを実行する際に追加/削除するcapabilities。デフォルトはデフォルトのcapabilitiesのセットです。
privileged ブール値
特権モードでコンテナを実行します。特権コンテナ内のプロセスは、基本的にホスト上のrootと同等です。デフォルトはfalseです。
procMount 文字列
procMountは、コンテナに使用するprocマウントのタイプを示します。デフォルトはDefaultProcMountで、読み取り専用パスとマスクされたパスのためにコンテナランタイムのデフォルトを使用します。
このコンテナが読み取り専用のルートファイルシステムを持つかどうか。デフォルトはfalseです。
runAsGroup 整数
コンテナプロセスのエントリポイントを実行するためのGID。未設定の場合はランタイムのデフォルトを使用します。
runAsNonRoot ブール値
コンテナが非rootユーザーとして実行される必要があることを示します。trueの場合、Kubeletはランタイムでイメージを検証し、UID 0(root)として実行されないことを確認し、そうでない場合はコンテナの起動に失敗します。
runAsUser 整数
コンテナプロセスのエントリポイントを実行するためのUID。未指定の場合は、イメージメタデータで指定されたユーザーがデフォルトになります。
seLinuxOptions SELinuxOptions についての詳細 seLinux
コンテナに適用されるSELinuxコンテキスト。未指定の場合、コンテナランタイムは各コンテナに対してランダムなSELinuxコンテキストを割り当てます。
このコンテナが使用するseccompオプション。
すべてのコンテナに適用されるWindows特有の設定。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)