1.2. multicluster engine Operator のロールベースのアクセス制御
RBAC はコンソールレベルと API レベルで検証されます。コンソール内のアクションは、ユーザーのアクセスロールの権限に基づいて有効化/無効化できます。製品の特定ライフサイクルの RBAC の詳細は、以下のセクションを参照してください。
1.2.1. ロールの概要
クラスター別の製品リソースと、スコープに namespace が指定されている製品リソースがあります。アクセス制御に一貫性を持たせるため、クラスターのロールバインディングと、namespace のロールバインディングをユーザーに適用する必要があります。サポートされている次のロール定義の表リストを表示します。
1.2.1.1. ロール定義表
ロール | 定義 |
---|---|
|
これは OpenShift Container Platform のデフォルトのロールです。 |
|
|
|
|
|
|
|
|
|
|
|
admin、edit、および view は OpenShift Container Platform のデフォルトロールです。これらのロールに対して namespace に限定されたバインディングが指定されているユーザーは、特定の namespace 内の |
重要:
- ユーザーは OpenShift Container Platform からプロジェクトを作成できます。これにより、namespace の管理者ロール権限が付与されます。
-
ユーザーにクラスターへのロールアクセスがない場合、クラスター名は表示されません。クラスター名は、
-
の記号で表示されます。
RBAC はコンソールレベルと API レベルで検証されます。コンソール内のアクションは、ユーザーのアクセスロールの権限に基づいて有効化/無効化できます。製品の特定ライフサイクルの RBAC の詳細は、以下のセクションを参照してください。
1.2.2. クラスターライフサイクル RBAC
以下のクラスターライフサイクル RBAC 操作を確認してください。
すべてのマネージドクラスターのクラスターロールバインドを作成および管理します。たとえば、以下のコマンドを入力してクラスターロール
open-cluster-management:cluster-manager-admin
にバインドするクラスターロールを作成します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>
このロールはスーパーユーザーであるため、すべてのリソースとアクションにアクセスできます。このロールを使用すると、クラスターレベルの
managedcluster
リソース、マネージドクラスターを管理するリソースの namespace、namespace 内のリソースを作成できます。権限エラーを回避するために、ロールの関連付けが必要な ID のusername
を追加する必要がある場合があります。以下のコマンドを実行して、
cluster-name
という名前のマネージドクラスターのクラスターロールバインドを管理します。oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>
このロールを使用すると、クラスターレベルの
managedcluster
リソースに読み取り/書き込みアクセスができるようになります。managedcluster
はクラスターレベルのリソースで、namespace レベルのリソースではないので、このロールが必要です。以下のコマンドを入力して、クラスターロール
admin
にバインドする namespace ロールを作成します。oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin --user=<username>
このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り/書き込みアクセスができるようになります。
open-cluster-management:view:<cluster-name>
クラスターロールのクラスターロールバインドを作成して、cluster-name
という名前のマネージドクラスターを表示します。次のコマンドを入力します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
このロールを使用すると、クラスターレベルの
managedcluster
リソースに読み取りアクセスができるようになります。これは、managedcluster
がクラスタースコープのリソースであるために必要です。以下のコマンドを入力して、クラスターロール
view
にバインドする namespace ロールを作成します。oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view --user=<username>
このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り専用アクセスができるようになります。
以下のコマンドを入力して、アクセス可能なマネージドクラスターの一覧を表示します。
oc get managedclusters.clusterview.open-cluster-management.io
このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。
以下のコマンドを入力して、アクセス可能なマネージドクラスターセットの一覧を表示します。
oc get managedclustersets.clusterview.open-cluster-management.io
このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。
1.2.2.1. クラスタープール RBAC
以下のクラスタープール RBAC 操作を確認します。
クラスター管理者は、クラスタープールのプロビジョニングクラスターを使用して、マネージドクラスターセットを作成し、ロールをグループに追加して管理者権限をロールに付与します。以下の例を参照してください。
以下のコマンドを使用して、
server-foundation-clusterset
マネージドクラスターセットにadmin
権限を付与します。oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-admin:server-foundation-clusterset server-foundation-team-admin
以下のコマンドを使用して、
server-foundation-clusterset
マネージドクラスターセットにview
権限を付与します。oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-view:server-foundation-clusterset server-foundation-team-user
クラスタープールの namespace (
server-foundation-clusterpool
) を作成します。ロール権限を付与するには、以下の例を参照してください。以下のコマンドを実行して、
server-foundation-team-admin
のserver-foundation-clusterpool
にadmin
権限を付与します。oc adm new-project server-foundation-clusterpool oc adm policy add-role-to-group admin server-foundation-team-admin --namespace server-foundation-clusterpool
チーム管理者として、クラスタープール namespace にクラスターセットラベル
cluster.open-cluster-management.io/clusterset=server-foundation-clusterset
を使用してocp46-aws-clusterpool
という名前のクラスタープールを作成します。-
server-foundation-webhook
は、クラスタープールにクラスターセットラベルがあるかどうか、またユーザーにクラスターセットのクラスタープールを作成する権限があるかどうかを確認します。 -
server-foundation-controller
は、server-foundation-team-user
のserver-foundation-clusterpool
namespace にview
権限を付与します。
-
クラスタープールが作成されると、クラスタープールは
clusterdeployment
を作成します。詳細は、以下を参照してください。-
server-foundation-controller
は、server-foundation-team-admin
のclusterdeployment
namespace にadmin
権限を付与します。 server-foundation-controller
は、server-foundation-team-user
のclusterdeployment
namespace にview
権限を付与します。注記:
team-admin
およびteam-user
には、clusterpool
、clusterdeployment
、およびclusterclaim
へのadmin
権限があります。
-
1.2.2.2. クラスターライフサイクルのコンソールおよび API RBAC の表
クラスターライフサイクルの以下のコンソールおよび API RBAC の表を表示します。
リソース | 管理 | 編集 | 表示 |
---|---|---|---|
クラスター | read, update, delete | - | read |
クラスターセット | get, update, bind, join | 編集ロールなし | get |
マネージドクラスター | read, update, delete | 編集ロールなし | get |
プロバイダー接続 | create, read, update, delete | - | read |
API | 管理 | 編集 | 表示 |
---|---|---|---|
この API のコマンドでは、 | create, read, update, delete | read, update | read |
この API のコマンドでは、 | read | read | read |
| update | update | |
この API のコマンドでは、 | create, read, update, delete | read, update | read |
| read | read | read |
この API のコマンドでは、 | create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
1.2.2.3. 認証情報ロールベースのアクセス制御
認証情報へのアクセスは Kubernetes で制御されます。認証情報は Kubernetes Secret として保存され、セキュリティーを確保します。以下の権限は、Red Hat Advanced Cluster Management for Kubernetes のシークレットのアクセスに関係します。
- namespace でシークレットの作成権限のあるユーザーは認証情報を作成できます。
- namespace でシークレットの読み取り権限のあるユーザーは、認証情報を表示することもできます。
-
Kubernetes ロール
admin
およびedit
のあるユーザーは、シークレットの作成と編集が可能です。 -
Kubernetes クラスターロール
view
のあるユーザーは、シークレットの内容を読み取ると、サービスアカウントの認証情報にアクセスできるようになるため、シークレットを表示できません。