13.5. SCC (Security Context Constraints) へのロールベースのアクセス

SCC は RBAC で処理されるリソースとして指定できます。これにより、SCC へのアクセスのスコープを特定プロジェクトまたはクラスター全体に設定できます。ユーザー、グループ、またはサービスアカウントを SCC に直接割り当てると、クラスター全体のスコープが保持されます。

注記

SCC を次のデフォルト namespace のいずれかに作成します。 defaultkube-systemkube-publicopenshift-nodeopenshift-infraopenshift。これらの namespace は Pod またはサービスの実行に使用しないでください。

ロールの SCC へのアクセスを組み込むには、ロールの作成時に scc リソースを指定します。

$ oc create role <role-name> --verb=use --resource=scc --resource-name=<scc-name> -n <namespace>

これにより、以下のロール定義が生成されます。

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
...
  name: role-name 1
  namespace: namespace 2
...
rules:
- apiGroups:
  - security.openshift.io 3
  resourceNames:
  - scc-name 4
  resources:
  - securitycontextconstraints 5
  verbs: 6
  - use
1
ロールの名前。
2
定義されたロールの namespace。指定されていない場合は、default にデフォルト設定されます。
3
SecurityContextConstraints リソースを含む API グループscc がリソースとして指定される場合に自動的に定義されます。
4
アクセスできる SCC の名前のサンプル。
5
ユーザーが SCC 名を resourceNames フィールドに指定することを許可するリソースグループの名前。
6
ロールに適用する動詞の一覧。

このようなルールを持つローカルまたはクラスターロールは、ロールバインディングまたは クラスターロールバインディングでこれにバインドされたサブジェクトが scc-name というユーザー定義の SCC を使用することを許可します。

注記

RBAC はエスカレーションを防ぐように設計されているため、プロジェクト管理者であっても SCC へのアクセスを付与することはできません。デフォルトでは、restricted SCC を含め、SCC リソースで動詞 use を使用することは許可されていません。