16.2. Pod セキュリティーアドミッション同期について
グローバル Pod セキュリティーアドミッションコントロール設定に加えて、コントローラーは、特定の namespace にあるサービスアカウントの SCC アクセス許可に従って、Pod セキュリティーアドミッションコントロールの warn
および audit
ラベルを namespace に適用します。
コントローラーは ServiceAccount
オブジェクトのアクセス許可を確認して、各 namespace で Security Context Constraints を使用します。Security Context Constraints (SCC) は、フィールド値に基づいて Pod セキュリティープロファイルにマップされます。コントローラーはこれらの変換されたプロファイルを使用します。Pod のセキュリティー許可 warn
と audit
ラベルは、Pod の作成時に警告が表示されたり、監査イベントが記録されたりするのを防ぐために、namespace で最も特権のある Pod セキュリティープロファイルに設定されます。
namespace のラベル付けは、namespace ローカルサービスアカウントの権限を考慮して行われます。
Pod を直接適用すると、Pod を実行するユーザーの SCC 権限が使用される場合があります。ただし、自動ラベル付けではユーザー権限は考慮されません。
16.2.1. Pod のセキュリティーアドミッション同期 namespace の除外
Pod のセキュリティーアドミッション同期は、システムで作成されたほとんどの namespace では永続的に無効になっています。ユーザーが作成した openshift-*
接頭辞が付いた namespace でも、同期は最初は無効になっていますが、後でそれらの同期を有効にすることができます。
Pod セキュリティーアドミッションラベル (pod-security.kubernetes.io/<mode>
) が、ラベル同期された namespace で自動的にラベル付けされた値から手動で変更された場合、そのラベルの同期は無効になります。
必要に応じて、次のいずれかの方法を使用して同期を再度有効にできます。
- 変更された Pod セキュリティーアドミッションラベルを namespace から削除することによって
security.openshift.io/scc.podSecurityLabelSync
ラベルをtrue
に設定することによってこのラベルを追加して同期を強制すると、変更された Pod セキュリティーアドミッションラベルはすべて上書きされます。
永続的に無効化された namespace
クラスターペイロードの一部として定義されている namespace では、Pod セキュリティーアドミッションの同期が完全に無効になっています。次の namespace は永続的に無効になります。
-
default
-
kube-node-lease
-
kube-system
-
kube-public
-
openshift
-
openshift-
という接頭辞が付いたシステム作成の namespace すべて (openshift-operators
を除く)
最初は無効になっている namespace
デフォルトでは、openshift-
接頭辞を持つすべての namespace では、最初は Pod セキュリティーアドミッション同期が無効になっています。ユーザーが作成した openshift-*
namespace と openshift-operators
namespace の同期を有効にできます。
openshift-operators
を除き、システムで作成された openshift-*
namespace の同期を有効にすることはできません。
ユーザーが作成した openshift-*
namespace に Operator がインストールされている場合、namespace にクラスターサービスバージョン (CSV) が作成された後、同期が自動的に有効になります。同期されたラベルは、namespace 内のサービスアカウントのアクセス許可から派生します。