5.2.3. カスタムロールバインディングを使用した拡張機能リソースへのユーザーアクセスの許可
クラスター管理者は、カスタムロールバインディングを使用して、ロールベースのアクセス制御 (RBAC) ポリシーを手動で作成および設定し、ユーザーに拡張機能リソースへのアクセス権を付与できます。
前提条件
- クラスター拡張機能がクラスターにインストールされている。
- API グループとリソース名のリストがある。「クラスター拡張機能によって公開される API グループとリソースの確認」の説明を参照してください。
手順
インストールされたクラスター拡張機能にデフォルトのクラスターロールがない場合は、1 つ以上のロールを手動で作成します。
「ユーザー用の一般的なデフォルトクラスターロール」で説明されているロールセットのユースケースを検討します。
たとえば、次の
ClusterRoleオブジェクト定義を 1 つ以上作成し、<cluster_extension_api_group>と<cluster_extension_custom_resource>を、インストールされたクラスター拡張機能によって提供される実際の API グループとリソース名に置き換えます。view-custom-resource.yamlファイルの例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: view-custom-resource rules: - apiGroups: - <cluster_extension_api_group> resources: - <cluster_extension_custom_resources> verbs: - get - list - watchedit-custom-resource.yamlファイルの例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: edit-custom-resource rules: - apiGroups: - <cluster_extension_api_group> resources: - <cluster_extension_custom_resources> verbs: - get - list - watch - create - update - patch - deleteadmin-custom-resource.yamlファイルの例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: admin-custom-resource rules: - apiGroups: - <cluster_extension_api_group> resources: - <cluster_extension_custom_resources> verbs: - '*'1 - 1
verbsにワイルドカード (*) を設定すると、指定したリソースに対するすべてのアクションが許可されます。
作成した YAML ファイルに対して次のコマンドを実行して、クラスターロールを作成します。
$ oc create -f <filename>.yaml
クラスターロールを個々のユーザー名またはグループ名にバインドすることで、クラスターロールを特定のユーザーまたはグループに関連付け、リソースに対する必要な権限を付与します。
すべての namespace へのアクセスを許可する クラスターロールバインディング、または特定の namespace 内でアクセスを許可する ロールバインディング のオブジェクト定義を作成します。
次のクラスターロールバインディングの例では、すべての namespace のカスタムリソースに対する読み取り専用の
viewアクセスを許可します。ユーザーの
ClusterRoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: view-custom-resource-binding subjects: - kind: User name: <user_name> roleRef: kind: ClusterRole name: view-custom-resource apiGroup: rbac.authorization.k8s.ioユーザーの
ClusterRoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: view-custom-resource-binding subjects: - kind: Group name: <group_name> roleRef: kind: ClusterRole name: view-custom-resource apiGroup: rbac.authorization.k8s.io次のロールバインディングでは、
edit権限を特定の namespace に制限します。ユーザーの
RoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: edit-custom-resource-edit-binding namespace: <namespace> subjects: - kind: User name: <username> roleRef: kind: Role name: custom-resource-edit apiGroup: rbac.authorization.k8s.io
- オブジェクト定義を YAML ファイルに保存します。
以下のコマンドを実行してオブジェクトを作成します。
$ oc create -f <filename>.yaml