Kubernetes SecurityContext(s)
Reading time: 11 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
PodSecurityContext
Podのセキュリティコンテキストを指定する際、いくつかの属性を使用できます。防御的なセキュリティの観点から考慮すべきことは次のとおりです:
- runASNonRootをTrueに設定する
- runAsUserを設定する
- 可能であれば、seLinuxOptionsやseccompProfileを指定してpermissionsを制限することを検討する
- runAsGroupやsupplementaryGroupsを介してprivilege groupアクセスを与えない
| パラメータ | 説明 | |
fsGroup
integer
ポッド内のすべてのコンテナに適用される特別な補助グループ。いくつかのボリュームタイプでは、Kubeletがそのボリュームの所有権を変更できる:
1. 所有するGIDはFSGroupになります
2. setgidビットが設定されます(ボリューム内で作成された新しいファイルはFSGroupが所有します)
3. パーミッションビットはrw-rw----とORされます。未設定の場合、Kubeletはボリュームの所有権とパーミッションを変更しません。
|
fsGroupChangePolicy
string
runAsGroup
integer
runAsNonRoot
boolean
runAsUser
integer
seLinuxOptions
SELinuxOptions
More info about seLinux
seccompProfile
SeccompProfile
More info about Seccomp
supplementalGroups
integer array
sysctls
Sysctl array
More info about sysctls
windowsOptions
WindowsSecurityContextOptions
SecurityContext
このコンテキストはコンテナ定義内に設定されます。防御的なセキュリティの観点から考慮すべきことは次のとおりです:
- allowPrivilegeEscalationをFalseに設定する
- 機密のcapabilitiesを追加せず(必要のないものは削除する)
- privilegedをFalseに設定する
- 可能であれば、readOnlyFilesystemをTrueに設定する
- runAsNonRootをTrueに設定し、runAsUserを設定する
- 可能であれば、seLinuxOptionsやseccompProfileを指定してpermissionsを制限することを検討する
- runAsGroupを介してprivilege groupアクセスを与えない。
SecurityContextとPodSecurityContextの両方に設定された属性に注意してください。SecurityContextで指定された値が優先されます。
allowPrivilegeEscalation | AllowPrivilegeEscalationは、プロセスが親プロセスよりもより多くの権限を得ることができるかどうかを制御します。このboolは、no_new_privsフラグがコンテナプロセスに設定されるかどうかを直接制御します。AllowPrivilegeEscalationは、コンテナがPrivilegedとして実行されるか、CAP_SYS_ADMINを持つ場合は常にtrueです。 |
---|---|
capabilities | コンテナを実行する際に追加/削除するcapabilities。デフォルトはデフォルトのcapabilitiesのセットです。 |
privileged | 特権モードでコンテナを実行します。特権コンテナ内のプロセスは、基本的にホスト上のrootと同等です。デフォルトはfalseです。 |
procMount | procMountは、コンテナに使用するprocマウントのタイプを示します。デフォルトはDefaultProcMountで、読み取り専用パスとマスクされたパスに対してコンテナランタイムのデフォルトを使用します。 |
readOnlyRootFilesystem | このコンテナが読み取り専用のルートファイルシステムを持つかどうか。デフォルトはfalseです。 |
runAsGroup | コンテナプロセスのエントリポイントを実行するためのGID。未設定の場合はランタイムのデフォルトを使用します。 |
runAsNonRoot | コンテナが非rootユーザーとして実行される必要があることを示します。trueの場合、Kubeletはランタイムでイメージを検証し、UID 0(root)として実行されないことを確認し、そうであればコンテナの起動に失敗します。 |
runAsUser | コンテナプロセスのエントリポイントを実行するためのUID。未指定の場合は、イメージメタデータで指定されたユーザーがデフォルトになります。 |
seLinuxOptions | コンテナに適用されるSELinuxコンテキスト。未指定の場合、コンテナランタイムは各コンテナに対してランダムなSELinuxコンテキストを割り当てます。 |
このコンテナが使用するseccompオプション。 | |
すべてのコンテナに適用されるWindows特有の設定。 |
References
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。