Pod Security Standards(PSS)とSecurity Context Constraints(SCC)
Kubernetes ポッド セキュリティ標準(PSS)とポッド セキュリティ ポリシー(PSP)は、権限レベルを定義し、ポッドの動作を制限します。OpenShift セキュリティ コンテキスト制約(SCC)も同様に、OpenShift Kubernetes エンジンに固有のポッド制限を定義します。このカスタマイズを提供するために、Trident はインストール中に特定の権限を有効にします。以下のセクションでは、Trident によって設定される権限について詳しく説明します。
|
|
PSSはPod Security Policies(PSP)に代わるものです。PSPはKubernetes v1.21で非推奨となり、v1.25で削除されます。詳細については、"Kubernetes:セキュリティ"を参照してください。 |
必要な Kubernetes セキュリティコンテキストと関連フィールド
| 権限 | 概要 |
|---|---|
特権 |
CSI ではマウントポイントが双方向であることが求められており、Trident ノード ポッドは特権コンテナを実行する必要があります。詳細については、"Kubernetes:マウント伝播"を参照してください。 |
ホストネットワーク |
iSCSI デーモンに必要です。 `iscsiadm`は iSCSI マウントを管理し、ホストネットワークを使用して iSCSI デーモンと通信します。 |
ホスト IPC |
NFS は、プロセス間通信(IPC)を使用して NFSD と通信します。 |
ホスト PID |
NFS の場合は `rpc-statd`を開始する必要があります。Trident は、NFS ボリュームをマウントする前に `rpc-statd`が実行されているかどうかを判断するためにホストプロセスを照会します。 |
機能 |
|
Seccomp |
Seccompプロファイルは特権コンテナでは常に「Unconfined」であるため、Tridentでは有効にできません。 |
SELinux |
OpenShift では、特権コンテナは |
DAC |
特権コンテナは root として実行する必要があります。非特権コンテナは、CSI に必要な Unix ソケットにアクセスするために root として実行されます。 |
Pod Security Standards(PSS)
| ラベル | 概要 | デフォルト |
|---|---|---|
|
Trident コントローラとノードがインストール名前空間に許可されるようにします。名前空間ラベルを変更しないでください。 |
|
|
|
名前空間ラベルを変更すると、ポッドがスケジュールされず、「作成エラー:…」または「警告:trident-csi-…」が表示される場合があります。このような場合は、 `privileged`の名前空間ラベルが変更されたかどうかを確認してください。変更されている場合は、Tridentを再インストールしてください。 |
Pod Security Policies(PSP)
| フィールド | 概要 | デフォルト |
|---|---|---|
|
特権コンテナは特権の昇格を許可する必要があります。 |
|
|
Tridentはインライン CSI 一時ボリュームを使用しません。 |
空 |
|
非特権Tridentコンテナはデフォルトセット以上の機能を必要とせず、特権コンテナには可能なすべての機能が付与されます。 |
空 |
|
Tridentは"FlexVolumeドライバ"を使用しないため、許可されるボリュームのリストには含まれません。 |
空 |
|
Tridentノード ポッドはノードのルート ファイルシステムをマウントするため、このリストを設定する利点はありません。 |
空 |
|
Tridentは使用しません |
空 |
|
Tridentでは、安全でないものは必要ありません |
空 |
|
特権コンテナに機能を追加する必要はありません。 |
空 |
|
権限昇格の許可はそれぞれのTridentポッドで処理されます。 |
|
|
`sysctls`は許可されていません。 |
空 |
|
Trident コンテナは root として実行されます。 |
|
|
NFSボリュームをマウントするには、ホストIPCとの通信が必要です |
|
|
iscsiadm では、iSCSI デーモンと通信するためにホストネットワークが必要です。 |
|
|
ホストPIDは、 `rpc-statd`がノード上で実行されているかどうかを確認するために必要です。 |
|
|
Trident はホストポートを使用しません。 |
空 |
|
ボリュームをマウントするには、Tridentノードポッドで特権コンテナを実行する必要があります。 |
|
|
Trident ノード ポッドはノード ファイル システムに書き込む必要があります。 |
|
|
Tridentノードポッドは特権コンテナを実行するため、機能を削除することはできません。 |
|
|
Trident コンテナは root として実行されます。 |
|
|
Trident コンテナは root として実行されます。 |
|
|
Tridentは `RuntimeClasses`を使用しません。 |
空 |
|
Tridentは `seLinuxOptions`を設定しません。これは、コンテナランタイムとKubernetesディストリビューションがSELinuxを処理する方法に現在違いがあるためです。 |
空 |
|
Trident コンテナは root として実行されます。 |
|
|
Tridentポッドにはこれらのボリュームプラグインが必要です。 |
|
Security Context Constraints(SCC)
| ラベル | 概要 | デフォルト |
|---|---|---|
|
Trident ノードポッドは、ノードのルートファイルシステムをマウントします。 |
|
|
NFSボリュームをマウントするには、ホストIPCと通信する必要があります |
|
|
iscsiadm では、iSCSI デーモンと通信するためにホストネットワークが必要です。 |
|
|
ホストPIDは、 `rpc-statd`がノード上で実行されているかどうかを確認するために必要です。 |
|
|
Trident はホストポートを使用しません。 |
|
|
特権コンテナは特権の昇格を許可する必要があります。 |
|
|
ボリュームをマウントするには、Tridentノードポッドで特権コンテナを実行する必要があります。 |
|
|
Tridentでは、安全でないものは必要ありません |
|
|
非特権Tridentコンテナはデフォルトセット以上の機能を必要とせず、特権コンテナには可能なすべての機能が付与されます。 |
空 |
|
特権コンテナに機能を追加する必要はありません。 |
空 |
|
Trident コンテナは root として実行されます。 |
|
|
このSCCはTrident専用であり、そのユーザーにバインドされています。 |
空 |
|
Trident ノード ポッドはノード ファイル システムに書き込む必要があります。 |
|
|
Tridentノードポッドは特権コンテナを実行するため、機能を削除することはできません。 |
|
|
Trident コンテナは root として実行されます。 |
|
|
Tridentは `seLinuxOptions`を設定しません。これは、コンテナランタイムとKubernetesディストリビューションがSELinuxを処理する方法に現在違いがあるためです。 |
空 |
|
特権コンテナは常に"Unconfined"で実行されます。 |
空 |
|
Trident コンテナは root として実行されます。 |
|
|
このSCCをTrident名前空間のTridentユーザーにバインドするためのエントリが1つ提供されています。 |
N/A |
|
Tridentポッドにはこれらのボリュームプラグインが必要です。 |
|