アクセス制御
ロールベースのアクセス制御と認証の詳細
概要
第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
このロールはスーパーユーザーであるため、すべてのリソースとアクションにアクセスできます。このロールを使用すると、クラスターレベルの
managedcluster
リソース、マネージドクラスターを管理するリソースの namespace、namespace 内のリソースを作成できます。また、このロールで、プロバイダー接続、マネージドクラスター作成に使用するベアメタルアセットにアクセスできます。
cluster-name
という名前のマネージドクラスターを管理する方法:以下のコマンドを入力して、クラスターロール
open-cluster-management:admin:<cluster-name>
にバインドするクラスターロールを作成します。oc create clusterrolebinding (role-binding-name) --clusterrole=open-cluster-management:admin:<cluster-name>
このロールを使用すると、クラスターレベルの
managedcluster
リソースに読み取り/書き込みアクセスができるようになります。managedcluster
はクラスターレベルのリソースで、namespace レベルのリソースではないので、このロールが必要です。以下のコマンドを入力して、クラスターロール
admin
にバインドする namespace ロールを作成します。oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=admin
このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り/書き込みアクセスができるようになります。
cluster-name
という名前のマネージドクラスターを表示するには、以下を行います。以下のコマンドを入力して、クラスターロール
open-cluster-management:view:<cluster-name>
にバインドするクラスターロールを作成します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name>
このロールを使用すると、クラスターレベルの
managedcluster
リソースに読み取りアクセスができるようになります。managedcluster
はクラスターレベルのリソースで、namespace レベルのリソースではないので、このロールが必要です。以下のコマンドを入力して、クラスターロール
view
にバインドする namespace ロールを作成します。oc create rolebinding <role-binding-name> -n <cluster-name> --clusterrole=view
このロールでは、マネージドクラスターの namespace 内にあるリソースに対して読み取り専用アクセスができるようになります。
以下のコマンドを入力して、アクセス可能なマネージドクラスターの一覧を表示します。
oc get managedclusters.clusterview.open-cluster-management.io
このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。
以下のコマンドを入力して、アクセス可能なマネージドクラスターセットの一覧を表示します。
oc get managedclustersets.clusterview.open-cluster-management.io
このコマンドは、クラスター管理者権限なしで、管理者およびユーザーが使用できます。
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
以下のコマンドを使用して、
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
、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>
このロールはスーパーユーザーであるため、すべてのリソースとアクションにアクセスできます。このロールを使用して、アプリケーションの namespace および namespace 内のすべてのアプリケーションリソースを作成できます。
オプション: 複数の namespace にリソースをデプロイするアプリケーションを作成できます。
open-cluster-management:subscription-admin
クラスターロールにバインドするクラスターロールを作成し、これをusername
という名前のユーザーにバインドします。以下のコマンドを実行します。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
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>
このロールには、マネージドクラスター
cluster-name
のすべてのapplication
リソースへの読み取りおよび書き込みアクセスがあります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。以下のコマンドを入力して、
admin
ロールを使用してapplication
namespace にバインドする namespace ロールを作成し、これをusername
にバインドします。oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=admin --user=<username>
このロールには、
application
namspace のすべてのapplication
リソースへの読み取りおよび書き込みアクセスがあります。他のアプリケーションへのアクセスが必要な場合や、アプリケーションが複数の namespace にデプロイされる場合は、これを繰り返します。
オプション: 複数の namespace にリソースをデプロイするアプリケーションを作成できます。
以下のコマンドを入力して、open-cluster-management:subscription-admin クラスターロールへのクラスターロールのバインディングを作成し、
username
にバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:subscription-admin --user=<username>
username
という名前のユーザーがcluster-name
という名前のマネージドクラスターでアプリケーションを表示するには、以下を実行します。以下のコマンドを入力して、
open-cluster-management:view:
クラスターロールにバインドするクラスターロールを作成し、これをusername
にバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
このロールは、マネージドクラスター
cluster-name
のすべてのapplication
リソースへの読み取りアクセスがあります。他のマネージドクラスターへのアクセスが必要な場合は、この操作を繰り返します。view
ロールを使用してapplication
namespace にバインドする namespace ロールを作成し、これをusername
にバインドします。以下のコマンドを入力します。oc create rolebinding <role-binding-name> -n <application-namespace> --clusterrole=view --user=<username>
このロールは
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、およびポリシーが適用されるマネージドクラスターへのアクセス権が必要です。
以下の例を参照してください。
policy
namespace でポリシーを作成し、これをcluster-name
という名前のマネージドクラスターに適用するには、以下を実行します。open-cluster-management:admin:
ロールを使用して、policy
namespace にバインドする namespace ロールを作成します。以下のコマンドを実行します。oc create rolebinding <role-binding-name> -n <policy-namespace> --clusterrole=admin --user=<username>
マネージドクラスターでポリシーを表示するには、以下を実行します。
以下のコマンドを実行して、
open-cluster-management:admin:
クラスターロールにバインドするクラスターロールを作成し、これをview
ロールにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
ガバナンスライフサイクルの以下のコンソールおよび 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
の例を表示します。
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: <replace-with-name-of-rolebinding> namespace: <replace-with-name-of-managedcluster-namespace> subjects: - kind: <replace with User|Group|ServiceAccount> apiGroup: rbac.authorization.k8s.io name: <replace with name of User|Group|ServiceAccount> roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view
詳細は、ロールバインディングポリシー を参照してください。可観測性を設定するには、可観測性のカスタマイズ を参照してください。
可観測性のコンポーネントを管理するには、以下の 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 |
クラスターのセキュリティー保護に関する詳細の確認を続行するには、リスクおよびコンプライアンス を参照してください。