アクセス制御
ロールベースのアクセス制御と認証の詳細
概要
第1章 アクセス制御 リンクのコピーリンクがクリップボードにコピーされました!
アクセス制御の手動での作成および管理が必要な場合があります。IAM (Identity and Access Management) にワークロードをオンボードするには、Red Hat Advanced Cluster Management for Kubernetes の 認証 サービス要件を設定する必要があります。詳細は、OpenShift Container Platform ドキュメントの 認証および認可 の 認証について を参照してください。
ロールベースのアクセス制御および認証は、ユーザー関連のロールおよび認証情報を特定します。アクセスと認証情報の詳細は、以下のファイルを参照してください。
必要なアクセス権限: クラスターの管理者
1.1. ロールベースのアクセス制御 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes は、ロールベースのアクセス制御 (RBAC) をサポートします。ロールによって実行できるアクションが決まります。RBAC は、Red Hat OpenShift Container Platform と同様に Kubernetes の承認メカニズムに基づいています。RBAC の詳細は、OpenShift Container Platform ドキュメント の RBAC の概要を参照してください。
注記: ユーザーロールのアクセス権がない場合には、コンソールのアクションボタンが無効になります。
コンポーネントでサポートされる RBAC の詳細は、以下のセクションを参照してください。
1.1.1. ロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
クラスター別の製品リソースと、namespace がスコープの製品リソースがあります。アクセス制御に一貫性を持たせるため、クラスターのロールバインディングと、namespace のロールバインドをユーザーに適用する必要があります。Red Hat Advanced Cluster Management for Kubernetes でサポートされている以下のロール定義の表を参照してください。
| ロール | 定義 |
| cluster-admin |
これは OpenShift Container Platform のデフォルトのロールです。 |
| open-cluster-management:cluster-manager-admin |
|
| open-cluster-management:admin:<managed_cluster_name> |
|
| open-cluster-management:view:<managed_cluster_name> |
|
| open-cluster-management:managedclusterset:admin:<managed_clusterset_name> |
|
| open-cluster-management:managedclusterset:view:<managed_clusterset_name> |
|
| open-cluster-management:subscription-admin |
|
| admin、edit、view |
admin、edit、および view は OpenShift Container Platform のデフォルトロールです。これらのロールに対して namespace に限定されたバインディングが指定されているユーザーは、特定の namespace 内の |
重要:
- ユーザーは OpenShift Container Platform からプロジェクトを作成できます。これにより、namespace の管理者ロールパーミッションが付与されます。
-
ユーザーにクラスターへのロールアクセスがない場合、クラスター名は表示されません。クラスター名は、
-の記号で表示されます。
1.1.2. RBAC 実装 リンクのコピーリンクがクリップボードにコピーされました!
RBAC はコンソールレベルと API レベルで検証されます。コンソール内のアクションは、ユーザーのアクセ出力ルのパーミッションに基づいて有効化/無効化できます。製品の特定ライフサイクルの RBAC の詳細は、以下のセクションを参照してください。
1.1.2.1. クラスターライフサイクル RBAC リンクのコピーリンクがクリップボードにコピーされました!
以下のクラスターライフサイクル RBAC 操作を確認してください。
全マネージドクラスターを作成して管理するには、以下を行います。
以下のコマンドを入力して、クラスターロール
open-cluster-management:cluster-manager-adminにバインドするクラスターロールを作成します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow このロールはスーパーユーザーであるため、すべてのリソースとアクションにアクセスできます。このロールを使用すると、クラスターレベルの
managedclusterリソース、マネージドクラスターを管理するリソースの namespace、namespace 内のリソースを作成できます。また、このロールで、プロバイダー接続、マネージドクラスター作成に使用するベアメタルアセットにアクセスできます。
cluster-nameという名前のマネージドクラスターを管理する方法:以下のコマンドを入力して、クラスターロール
open-cluster-management:admin:<cluster-name>にバインドするクラスターロールを作成します。oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name>
oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールを使用すると、クラスターレベルの
managedclusterリソースに読み取り/書き込みアクセスができるようになります。managedclusterはクラスターレベルのリソースで、namespace レベルのリソースではないので、このロールが必要です。以下のコマンドを入力して、クラスターロール
adminにバインドする namespace ロールを作成します。oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin
oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り/書き込みアクセスができるようになります。
cluster-nameという名前のマネージドクラスターを表示するには、以下を行います。以下のコマンドを入力して、クラスターロール
open-cluster-management:view:<cluster-name>にバインドするクラスターロールを作成します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールを使用すると、クラスターレベルの
managedclusterリソースに読み取りアクセスができるようになります。managedclusterはクラスターレベルのリソースで、namespace レベルのリソースではないので、このロールが必要です。以下のコマンドを入力して、クラスターロール
viewにバインドする namespace ロールを作成します。oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view
oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=viewCopy to Clipboard Copied! Toggle word wrap Toggle overflow このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り専用アクセスができるようになります。
以下のコマンドを入力して、アクセス可能なマネージドクラスターの一覧を表示します。
oc get managedclusters.clusterview.open-cluster-management.io
oc get managedclusters.clusterview.open-cluster-management.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。
以下のコマンドを入力して、アクセス可能なマネージドクラスターセットの一覧を表示します。
oc get managedclustersets.clusterview.open-cluster-management.io
oc get managedclustersets.clusterview.open-cluster-management.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。
1.1.2.1.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
oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-admin:server-foundation-clusterset server-foundation-team-adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使用して、
server-foundation-clustersetマネージドクラスターセットにviewパーミッションを付与します。oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-view:server-foundation-clusterset server-foundation-team-user
oc adm policy add-cluster-role-to-group open-cluster-management:clusterset-view:server-foundation-clusterset server-foundation-team-userCopy to Clipboard Copied! Toggle word wrap Toggle overflow
クラスタープールの 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
oc adm new-project server-foundation-clusterpool oc adm policy add-role-to-group admin server-foundation-team-admin --namespace server-foundation-clusterpoolCopy to Clipboard Copied! Toggle word wrap Toggle overflow
チーム管理者として、クラスタープール 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-clusterpoolnamespace にviewパーミッションを付与します。
-
クラスタープールが作成されると、クラスタープールは
clusterdeploymentを作成します。-
server-foundation-controllerは、server-foundation-team-adminのclusterdeploymentnamespace にadminパーミッションを付与します。 server-foundation-controllerは、server-foundation-team-userのclusterdeploymentnamespace にviewパーミッションを付与します。注記:
team-adminおよびteam-userは、clusterpool、clusterdeplymentおよびclusterclaimへのadmin権限があります。
-
クラスターライフサイクルの以下のコンソールおよび API RBAC の表を表示します。
| リソース | 管理 | 編集 | 表示 |
|---|---|---|---|
| クラスター | read, update, delete | - | read |
| クラスターセット | get, update, bind, join | 編集ロールなし | get |
| マネージドクラスター | read, update, delete | 編集ロールなし | get |
| プロバイダー接続 | create, read, update, delete | - | read |
| ベアメタルアセット | create, read, update, delete | - | read |
| API | 管理 | 編集 | 表示 |
|---|---|---|---|
| managedclusters.cluster.open-cluster-management.io
この API のコマンドでは、 | create, read, update, delete | read, update | read |
| managedclusters.view.open-cluster-management.io
この API のコマンドでは、 | read | read | read |
| managedclusters.register.open-cluster-management.io/accept | update | update | |
| managedclusterset.cluster.open-cluster-management.io
この API のコマンドでは、 | create, read, update, delete | read, update | read |
| managedclustersets.view.open-cluster-management.io | read | read | read |
| managedclustersetbinding.cluster.open-cluster-management.io
この API のコマンドでは、 | create, read, update, delete | read, update | read |
| baremetalassets.inventory.open-cluster-management.io | create, read, update, delete | read, update | read |
| klusterletaddonconfigs.agent.open-cluster-management.io | create, read, update, delete | read, update | read |
| managedclusteractions.action.open-cluster-management.io | create, read, update, delete | read, update | read |
| managedclusterviews.view.open-cluster-management.io | create, read, update, delete | read, update | read |
| managedclusterinfos.internal.open-cluster-management.io | create, read, update, delete | read, update | read |
| manifestworks.work.open-cluster-management.io | create, read, update, delete | read, update | read |
| submarinerconfigs.submarineraddon.open-cluster-management.io | create, read, update, delete | read, update | read |
| placements.cluster.open-cluster-management.io | create, read, update, delete | read, update | read |
1.1.2.2. 認証情報ロールベースのアクセス制御 リンクのコピーリンクがクリップボードにコピーされました!
認証情報へのアクセスは Kubernetes で制御されます。認証情報は Kubernetes Secret として保存され、セキュリティーを確保します。以下のパーミッションは、Red Hat Advanced Cluster Management for Kubernetes のシークレットのアクセスに関係します。
- namespace でシークレットの作成権限のあるユーザーは認証情報を作成できます。
- namespace でシークレットの読み取り権限のあるユーザーは、認証情報を表示することもできます。
-
Kubernetes ロール
adminおよびeditのあるユーザーは、シークレットの作成と編集が可能です。 -
Kubernetes クラスターロール
viewのあるユーザーは、シークレットの内容を読み取ると、サービスアカウントの認証情報にアクセスできるようになるため、シークレットを表示できません。
1.1.2.3. アプリケーションライフサイクル RBAC リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの作成時に、subscription namespace が作成され、設定マップが subscription namespace に作成されます。channel namespace にもアクセスできる必要があります。サブスクリプションを適用する場合は、サブスクリプションの管理者である必要があります。アプリケーションの管理の詳細は、サブスクリプションの作成および管理 を参照してください。
以下のアプリケーションライフサイクル RBAC 操作を確認してください。
usernameという名前のユーザーで、すべてのマネージドクラスターでアプリケーションを作成して管理するには、以下を実行します。以下のコマンドを実行して、
open-cluster-management:cluster-manager-adminクラスターロールへのクラスターロールのバインディングを作成して、usernameにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:cluster-manager-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールはスーパーユーザーであるため、すべてのリソースとアクションにアクセスできます。このロールを使用して、アプリケーションの namespace および namespace 内のすべてのアプリケーションリソースを作成できます。
オプション: 複数の namespace にリソースをデプロイするアプリケーションを作成できます。
open-cluster-management:subscription-adminクラスターロールにバインドするクラスターロールを作成し、これをusernameという名前のユーザーにバインドします。以下のコマンドを実行します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
usernameユーザーでcluster-nameマネージドクラスターにapplication-nameという名前のアプリケーションを作成し、管理するには、以下を実行します。以下のコマンドを入力して、
open-cluster-management:admin:クラスターロールへのバインドを作成し、usernameにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールには、マネージドクラスター
cluster-nameのすべてのapplicationリソースへの読み取りおよび書き込みアクセスがあります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。以下のコマンドを入力して、
adminロールを使用してapplicationnamespace にバインドする namespace ロールを作成し、これをusernameにバインドします。oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールには、
applicationnamspace のすべてのapplicationリソースへの読み取りおよび書き込みアクセスがあります。他のアプリケーションへのアクセスが必要な場合や、アプリケーションが複数の namespace にデプロイされる場合は、これを繰り返します。
オプション: 複数の namespace にリソースをデプロイするアプリケーションを作成できます。
以下のコマンドを入力して、open-cluster-management:subscription-admin クラスターロールへのクラスターロールのバインディングを作成し、
usernameにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
usernameという名前のユーザーがcluster-nameという名前のマネージドクラスターでアプリケーションを表示するには、以下を実行します。以下のコマンドを入力して、
open-cluster-management:view:クラスターロールにバインドするクラスターロールを作成し、これをusernameにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールは、マネージドクラスター
cluster-nameのすべてのapplicationリソースへの読み取りアクセスがあります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。viewロールを使用してapplicationnamespace にバインドする namespace ロールを作成し、これをusernameにバインドします。以下のコマンドを入力します。oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>
oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールは
applicationの namspace にある全applicationリソースへの読み取りアクセスがあります。他のアプリケーションへのアクセスが必要な場合は、この操作を繰り返します。
アプリケーションライフサイクルの以下のコンソールおよび API RBAC の表を表示します。
| リソース | 管理 | 編集 | 表示 |
|---|---|---|---|
| アプリケーション | create, read, update, delete | create, read, update, delete | read |
| チャネル | create, read, update, delete | create, read, update, delete | read |
| サブスクリプション | create, read, update, delete | create, read, update, delete | read |
| 配置ルール | create, read, update, delete | create, read, update, delete | read |
| API | 管理 | 編集 | 表示 |
|---|---|---|---|
| applications.app.k8s.io | create, read, update, delete | create, read, update, delete | read |
| channels.apps.open-cluster-management.io | create, read, update, delete | create, read, update, delete | read |
| deployables.apps.open-cluster-management.io | create, read, update, delete | create, read, update, delete | read |
| helmreleases.apps.open-cluster-management.io | create, read, update, delete | create, read, update, delete | read |
| placementrules.apps.open-cluster-management.io | create, read, update, delete | create, read, update, delete | read |
| subscriptions.apps.open-cluster-management.io | create, read, update, delete | create, read, update, delete | read |
| configmaps | create, read, update, delete | create, read, update, delete | read |
| secrets | create, read, update, delete | create, read, update, delete | read |
| namespace | create, read, update, delete | create, read, update, delete | read |
1.1.2.4. ガバナンスライフサイクル RBAC リンクのコピーリンクがクリップボードにコピーされました!
ポリシーが作成されると、ポリシーはクラスターに作成されます。ガバナンスライフサイクルのロールのレベルは namespace です。ユーザーは、マネージドクラスターへのアクセス権も必要です。
ユーザーは、ガバナンスライフサイクル操作を実行するには、ポリシーが作成される namespace、およびポリシーが適用されるマネージドクラスターへのアクセス権が必要です。
以下の例を参照してください。
policynamespace でポリシーを作成し、これをcluster-nameという名前のマネージドクラスターに適用するには、以下を実行します。open-cluster-management:admin:ロールを使用して、policynamespace にバインドする namespace ロールを作成します。以下のコマンドを実行します。oc create rolebinding <role-binding-name> -n <policy-namespace> --clusterrole=admin --user=<username>
oc create rolebinding <role-binding-name> -n <policy-namespace> --clusterrole=admin --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
マネージドクラスターでポリシーを表示するには、以下を実行します。
以下のコマンドを実行して、
open-cluster-management:admin:クラスターロールにバインドするクラスターロールを作成し、これをviewロールにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ガバナンスライフサイクルの以下のコンソールおよび API RBAC の表を表示します。
| リソース | 管理 | 編集 | 表示 |
|---|---|---|---|
| ポリシー | create, read, update, delete | read, update | read |
| PlacementBindings | create, read, update, delete | read, update | read |
| PlacementRules | create, read, update, delete | read, update | read |
| PolicyAutomations | create, read, update, delete | read, update | read |
| API | 管理 | 編集 | 表示 |
|---|---|---|---|
| policies.policy.open-cluster-management.io | create, read, update, delete | read, update | read |
| placementbindings.policy.open-cluster-management.io | create, read, update, delete | read, update | read |
| policyautomations.policy.open-cluster-management.io | create, read, update, delete | read, update | read |
1.1.2.5. 可観測性の RBAC リンクのコピーリンクがクリップボードにコピーされました!
マネージドクラスターの可観測性メトリックを表示するには、ハブクラスター上のそのマネージドクラスターへの view アクセス権が必要です。以下の可観測性機能の一覧を参照してください。
マネージドクラスターのメトリクスへのアクセス
ユーザーがハブクラスター上のマネージドクラスターの
viewロールに割り当てられていない場合、ユーザーはマネージドクラスターメトリックへのアクセスを拒否されます。- リソースの検索
Grafana で可観測性データを表示するには、マネージドクラスターの同じ namespace に RoleBinding リソースが必要です。次の RoleBinding の例を表示します。
詳細は、ロールバインディングポリシー を参照してください。可観測性を設定するには、可観測性のカスタマイズ を参照してください。
可観測性のコンポーネントを管理するには、以下の API RBAC の表を確認します。
| API | 管理 | 編集 | 表示 |
| multiclusterobservabilities.observability.open-cluster-management.io | create, read, update, delete | read, update | read |
| searchcustomizations.search.open-cluster-management.io | create、get、list、watch、update、delete、patch | - | - |
| policyreports.wgpolicyk8s.io | get, list, watch | get, list, watch | get, list, watch |
クラスターのセキュリティー保護に関する詳細の確認を続行するには、リスクおよびコンプライアンス を参照してください。