13.5.3. Security Context Constraints
RBAC リソースがユーザーアクセスを制御するのと同様の方法で、管理者は Security Context Constraints (SCC) を使用して Pod の権限を制御できます。この権限によって、Pod が実行できるアクションとアクセスできるリソースが決まります。SCC を使用すると、Pod が実行する必要がある一連の条件を定義できます。
Security Context Constraints を使用すると、管理者は次のセキュリティー制約を制御できます。
-
Pod が
allowPrivilegedContainerフラグが付いた特権付きコンテナーを実行できるかどうか -
Pod が
allowPrivilegeEscalationフラグで制約されているかどうか - コンテナーが要求できる機能
- ホストディレクトリーのボリュームとしての使用
- コンテナーの SELinux コンテキスト
- コンテナーのユーザー ID
- ホストの namespace とネットワークの使用
-
Pod ボリュームを所有する
FSGroupの割り当て - 許可される補助グループの設定
- コンテナーが root ファイルシステムへの書き込みアクセスを必要とするかどうか
- ボリュームタイプの使用
-
許可される
seccompプロファイルの設定
デフォルトの SCC は、インストール中、および一部の Operator またはその他のコンポーネントをインストールするときに作成されます。クラスター管理者は、OpenShift CLI (oc) を使用して独自の SCC を作成することもできます。
デフォルトの Security Context Constraints の詳細は、デフォルトの Security Context Constraints を参照してください。
デフォルトの SCC は変更しないでください。デフォルトの SCC をカスタマイズすると、プラットフォームの Pod をデプロイ時または OpenShift Container Platform のアップグレード時に問題が発生する可能性があります。さらに、一部のクラスターのアップグレード中にデフォルトの SCC 値がデフォルトにリセットされ、それらの SCC に対するすべてのカスタマイズが破棄されます。
デフォルトの SCC を変更する代わりに、必要に応じて独自の SCC を作成および変更します。詳細な手順は、Security Context Constraints の作成 を参照してください。
次の基本的な SCC を使用できます。
-
restricted -
restricted-v2
restricted-v2 SCC は、新規インストールによって提供される最も制限の厳しい SCC であり、認証されたユーザーにデフォルトで使用されます。これは、Pod Security Admission (PSA) の制限と同等であり、オリジナルの restricted SCC よりも制限が厳しいため、セキュリティーが強化されます。また、複数のリリースにわたってオリジナルの SCC から v2 に移行する際に有用です。最終的には、オリジナルの SCC は非推奨になります。したがって、restricted-v2 SCC を使用することを推奨します。
次のコマンドを実行すると、restricted-v2 SCC を調べることができます。
$ oc describe scc restricted-v2
出力例
Name: restricted-v2
Priority: <none>
Access:
Users: <none>
Groups: <none>
Settings:
Allow Privileged: false
Allow Privilege Escalation: false
Default Add Capabilities: <none>
Required Drop Capabilities: ALL
Allowed Capabilities: NET_BIND_SERVICE
Allowed Seccomp Profiles: runtime/default
Allowed Volume Types: configMap,downwardAPI,emptyDir,ephemeral,persistentVolumeClaim,projected,secret
Allowed Flexvolumes: <all>
Allowed Unsafe Sysctls: <none>
Forbidden Sysctls: <none>
Allow Host Network: false
Allow Host Ports: false
Allow Host PID: false
Allow Host IPC: false
Read Only Root Filesystem: false
Run As User Strategy: MustRunAsRange
UID: <none>
UID Range Min: <none>
UID Range Max: <none>
SELinux Context Strategy: MustRunAs
User: <none>
Role: <none>
Type: <none>
Level: <none>
FSGroup Strategy: MustRunAs
Ranges: <none>
Supplemental Groups Strategy: RunAsAny
Ranges: <none>
restricted-v2 SCC は、明示的に許可されているもの以外はすべて明示的に拒否します。次の設定により、許可されるケイパビリティーとセキュリティー制限が定義されます。
-
Default add capabilities:
<none>に設定されています。つまり、デフォルトでは Pod にケイパビリティーが追加されません。 -
Required drop capabilities:
ALLに設定されています。これにより、Pod のデフォルトの Linux ケイパビリティーがすべて削除されます。 -
Allowed capabilities:
NET_BIND_SERVICE。Pod はこのケイパビリティーを要求できますが、デフォルトでは追加されません。 -
Allowed
seccompprofiles:runtime/default。
詳細は、Security Context Constraints の管理 を参照してください。