15.2. 事前に割り当てられる Security Context Constraints 値について
アドミッションコントローラーは、Security Context Constraints (SCC) 内の特定の条件を認識し、その条件に基づいて、Pod を処理する前に、namespace から事前に割り当てられた値を検索し、SCC に値を入力します。各 SCC ストラテジーは他のストラテジーとは別に評価されます。この際、(許可される場合に) Pod 仕様の値と共に集計された各ポリシーの事前に割り当てられた値が使用され、実行中の Pod で定義される各種 ID の最終の値が設定されます。
以下の SCC により、アドミッションコントローラーは、範囲が Pod 仕様で定義されていない場合に事前に定義された値を検索できます。
-
最小または最大値が設定されていない
MustRunAsRange
のRunAsUser
ストラテジーです。アドミッションはopenshift.io/sa.scc.uid-range
アノテーションを検索して範囲フィールドを設定します。 -
レベルが設定されていない
MustRunAs
のSELinuxContext
ストラテジーです。アドミッションはopenshift.io/sa.scc.mcs
アノテーションを検索してレベルを設定します。 -
MustRunAs
のFSGroup
ストラテジーです。アドミッションは、openshift.io/sa.scc.supplemental-groups
アノテーションを検索します。 -
MustRunAs
のSupplementalGroups
ストラテジーです。アドミッションは、openshift.io/sa.scc.supplemental-groups
アノテーションを検索します。
生成フェーズでは、セキュリティーコンテキストのプロバイダーが Pod にとくに設定されていないパラメーター値をデフォルト設定します。デフォルト設定は選択されるストラテジーに基づいて行われます。
-
RunAsAny
およびMustRunAsNonRoot
ストラテジーはデフォルトの値を提供しません。Pod がパラメーター値 (グループ ID など) を必要とする場合は、値を Pod 仕様内に定義する必要があります。 -
MustRunAs
(単一の値) ストラテジーは、常に使用されるデフォルト値を提供します。たとえば、グループ ID の場合は、Pod 仕様が独自の ID 値を定義する場合でも、namespace のデフォルトパラメーター値が Pod のグループに表示されます。 -
MustRunAsRange
およびMustRunAs
(範囲ベース) ストラテジーは、範囲の最小値を提供します。単一値のMustRunAs
ストラテジーの場合のように、namespace のデフォルト値は実行中の Pod に表示されます。範囲ベースのストラテジーが複数の範囲で設定可能な場合、これは最初に設定された範囲の最小値を指定します。
FSGroup
および SupplementalGroups
ストラテジーは、openshift.io/sa.scc.supplemental-groups
アノテーションが namespace に存在しない場合に openshift.io/sa.scc.uid-range
アノテーションにフォールバックします。いずれも存在しない場合は、SCC が作成されません。
デフォルトで、アノテーションベースの FSGroup
ストラテジーは、自身をアノテーションの最小値に基づく単一の範囲で設定します。たとえば、アノテーションが 1/3
を読み取ると、FSGroup
ストラテジーは 1
の最小値および最大値で自身を設定します。追加のグループを FSGroup
フィールドで許可する必要がある場合は、アノテーションを使用しないカスタム SCC を設定することができます。
openshift.io/sa.scc.supplemental-groups
アノテーションは、<start>/<length
または <start>-<end>
形式のコンマ区切りのブロックのリストを受け入れます。openshift.io/sa.scc.uid-range
アノテーションは単一ブロックのみを受け入れます。