Kubernetes SecurityContext(s)

ハックトリックをサポートして特典を得る!

PodSecurityContext

Podのセキュリティコンテキストを指定する際には、いくつかの属性を使用することができます。防御的なセキュリティの観点からは、次のことを考慮する必要があります:

  • runASNonRootTrueに設定すること

  • runAsUserを設定すること

  • 可能であれば、seLinuxOptionsseccompProfileを指定して権限を制限すること

  • runAsGroupsupplementaryGroupsを使用して、特権グループへのアクセスを与えないこと

fsGroup 整数

Pod内のすべてのコンテナに適用される特別な補足グループ。一部のボリュームタイプでは、Kubeletがそのボリュームの所有権をPodによって所有されるように変更することができます: 1. 所有するGIDはFSGroupになります 2. setgidビットが設定されます(ボリューム内で作成された新しいファイルはFSGroupによって所有されます) 3. パーミッションビットはrw-rw----とORされます。未設定の場合、Kubeletはボリュームの所有権とパーミッションを変更しません

これは、Pod内で公開される前にボリュームの所有権とパーミッションを変更する動作を定義します。

runAsGroup 整数

コンテナプロセスのエントリポイントを実行するためのGIDです。未設定の場合は、ランタイムのデフォルトが使用されます。SecurityContextでも設定できます。

runAsNonRoot 真偽値

コンテナが非ルートユーザーとして実行される必要があることを示します。trueの場合、Kubeletは実行時にイメージを検証し、UID 0(root)として実行されないことを確認し、実行に失敗します。

runAsUser 整数

コンテナプロセスのエントリポイントを実行するためのUIDです。未指定の場合は、イメージメタデータで指定されたユーザーがデフォルトになります。

seLinuxOptions SELinuxOptions seLinuxについての詳細情報

すべてのコンテナに適用されるSELinuxコンテキストです。未指定の場合、コンテナランタイムは各コンテナにランダムなSELinuxコンテキストを割り当てます。

seccompProfile SeccompProfile Seccompについての詳細情報

このPod内のコンテナで使用するseccompオプションです。

supplementalGroups 整数配列

各コンテナで実行される最初のプロセスに適用されるグループのリストです。これは、コンテナの主要なGIDに追加されます。

sysctls Sysctl 配列 sysctlsについての詳細情報 sysctls

Sysctlsは、Podで使用される名前空間のあるsysctlのリストを保持します。コンテナランタイムでサポートされていないsysctl(コンテナランタイムによって)を持つPodは起動に失敗する可能性があります。

すべてのコンテナに適用されるWindows固有の設定です。未指定の場合、コンテナのSecurityContext内のオプションが使用されます。

## SecurityContext(セキュリティコンテキスト)

このコンテキストは、コンテナの定義内に設定されます。防御的なセキュリティの観点から考慮すべき事項は次のとおりです。

  • allowPrivilegeEscalationFalseに設定する

  • 機密情報を追加しない(必要のないものは削除する)capabilitiesを追加しない

  • privilegedFalseに設定する

  • 可能であれば、readOnlyFilesystemTrueに設定する

  • runAsNonRootTrueに設定し、runAsUserを設定する

  • 可能であれば、seLinuxOptionsseccompProfileを指定してpermissions制限する

  • runAsGroupを介してprivilege groupへのアクセス権限を与えない

なお、SecurityContextとPodSecurityContextの両方に設定された属性の場合、SecurityContextで指定された値が優先されます

AllowPrivilegeEscalationは、プロセスが親プロセスよりも多くの特権を取得できるかどうかを制御します。このブール値は、コンテナプロセスにno_new_privsフラグが設定されるかどうかを直接制御します。AllowPrivilegeEscalationは、コンテナが特権モードで実行される場合またはCAP_SYS_ADMINを持つ場合は常にtrueです。

capabilities Capabilities Capabilitiesについての詳細情報

コンテナの実行時に追加/削除するためのcapabilities。デフォルトでは、デフォルトのcapabilitiesセットが使用されます。

privileged boolean

特権モードでコンテナを実行します。特権コンテナ内のプロセスは、基本的にはホスト上のrootと同等です。デフォルトはfalseです。

procMount string

procMountは、コンテナに使用するprocマウントのタイプを示します。デフォルトはDefaultProcMountで、読み取り専用パスとマスクされたパスに対してコンテナランタイムのデフォルトが使用されます。

このコンテナが読み取り専用のルートファイルシステムを持つかどうかを示します。デフォルトはfalseです。

runAsGroup integer

コンテナプロセスのエントリポイントを実行するためのGIDです。未設定の場合はランタイムのデフォルトが使用されます。

runAsNonRoot boolean

コンテナが非ルートユーザーとして実行する必要があることを示します。trueの場合、Kubeletは実行時にイメージを検証し、UID 0(root)として実行されないことを確認し、実行に失敗します。

runAsUser integer

コンテナプロセスのエントリポイントを実行するためのUIDです。未指定の場合、イメージメタデータで指定されたユーザーがデフォルトです。

seLinuxOptions SELinuxOptions seLinuxについての詳細情報

コンテナに適用するSELinuxコンテキストです。指定されていない場合、コンテナランタイムは各コンテナにランダムなSELinuxコンテキストを割り当てます。

このコンテナで使用するseccompオプションです。

すべてのコンテナに適用されるWindows固有の設定です。

参考文献

ハックトリックをサポートして特典を受け取る!

最終更新