Kubernetes SecurityContext(s)
PodSecurityContext
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内のオプションが使用されます。 |
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特有の設定。 |
References
Last updated