アクセス制御
ロールベースのアクセス制御と認証の詳細
概要
第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 の概要を参照してください。
注記: ユーザーロールのアクセスが許可されていない場合、コンソールのアクションボタンは無効になります。
1.1.1. ロールの概要
クラスター別の製品リソースと、namespace がスコープの製品リソースがあります。アクセス制御に一貫性を持たせるため、クラスターのロールバインディングと、namespace のロールバインディングをユーザーに適用する必要があります。Red Hat Advanced Cluster Management for Kubernetes でサポートされている以下のロール定義の表を参照してください。
ロール | 定義 |
|
これは OpenShift Container Platform のデフォルトのロールです。 |
|
|
|
|
|
|
|
|
|
|
|
|
admin、edit、view |
admin、edit、および view は OpenShift Container Platform のデフォルトロールです。これらのロールに対して namespace に限定されたバインディングが指定されているユーザーは特定の namespace 内の |
|
|
重要:
- ユーザーは OpenShift Container Platform からプロジェクトを作成できます。これにより、namespace の管理者ロール権が付与されます。
-
ユーザーがクラスターへのロールアクセス権を持っていない場合、クラスター名は表示されません。クラスター名は、
-
の記号で表示される場合があります。
詳細は、ロールベースのアクセス制御の実装 を参照してください。
1.2. ロールベースのアクセス制御の実装
Red Hat Advanced Cluster Management for Kubernetes RBAC は、コンソールレベルと API レベルで検証されます。コンソール内のアクションは、ユーザーのアクセスロールの権限に基づいて有効化/無効化できます。
マルチクラスターエンジン Operator は、Red Hat Advanced Cluster Management の前提条件であり、クラスターライフサイクル機能です。マルチクラスターエンジン Operator を使用してクラスターの RBAC を管理する場合は、Kubernetes オペレーターのクラスターライフサイクルマルチクラスターエンジンのロールベースのアクセス制御 ドキュメントで RBAC ガイダンスを確認してください。
Red Hat Advanced Cluster Management の特定のライフサイクルにおける RBAC の詳細については、以下のセクションを参照してください。
1.2.1. アプリケーションライフサイクル RBAC
アプリケーションの作成時に、subscription
namespace が作成され、configuration map が subscription
namespace に作成されます。channel
namespace へのアクセス権も必要です。サブスクリプションを適用する場合は、サブスクリプションの管理者である必要があります。アプリケーションの管理の詳細は、サブスクリプション管理者としての許可および拒否リストの作成 を参照してください。
以下のアプリケーションライフサイクル RBAC 操作を確認してください。
username
という名前のユーザーを使用して、すべてのマネージドクラスターでアプリケーションを作成および管理します。クラスターロールバインディングを作成し、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:<cluster-name>
クラスターロールへのバインドを作成し、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
リソースに対する読み取り権限があります。他のアプリケーションへのアクセスが必要な場合は、この操作を繰り返します。
1.2.1.1. アプリケーションライフサイクルのコンソールと API RBAC テーブル
アプリケーションライフサイクルの以下のコンソールおよび 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 | 管理 | 編集 | View |
---|---|---|---|
| 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 |
| 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 |
| create, read, update, delete | create, read, update, delete | read |
| create, read, update, delete | create, read, update, delete | read |
1.2.2. ガバナンスライフサイクル RBAC
ポリシーが作成されると、ポリシーはクラスターに作成されます。ガバナンスライフサイクルのロールは namespace-scoped です。ユーザーは、マネージドクラスターへのアクセス権も必要です。
ユーザーがガバナンスライフサイクル操作を実行するには、ポリシーが作成される namespace、およびポリシーが適用されるマネージドクラスターへのアクセス権が必要です。
次の操作を実行します。
policy
namespace にポリシーを作成し、それをcluster-name
という名前のマネージドクラスターに適用するには、open-cluster-management:admin:<cluster-name>
クラスターロールを使用して、policy
namespace にバインドする namespace ロールを作成します。以下のコマンドを実行します。oc create rolebinding <role-binding-name> -n <policy-namespace> --clusterrole=open-cluster-management:admin:<cluster-name> --user=<username>
マネージドクラスターでポリシーを表示するには、
open-cluster-management:view:<cluster-name>
クラスターロールへのバインドを作成し、次のコマンドを使用してview
ロールにバインドします。oc create clusterrolebinding <role-binding-name> --clusterrole=open-cluster-management:view:<cluster-name> --user=<username>
1.2.2.1. ガバナンスライフサイクルのコンソールと API RBAC テーブル
以下は、ガバナンスライフサイクルのコンソールおよび API RBAC の表です。
リソース | 管理 | 編集 | 表示 |
---|---|---|---|
ポリシー | create, read, update, delete | read, update | read |
PlacementBindings | create, read, update, delete | read, update | read |
Placements | create, read, update, delete | read, update | read |
PlacementRules | create, read, update, delete | read, update | read |
PolicyAutomations | create, read, update, delete | read, update | read |
API | 管理 | 編集 | View |
---|---|---|---|
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
| create, read, update, delete | read, update | read |
1.2.3. 可観測性の RBAC
マネージドクラスターの可観測性メトリックを表示するには、ハブクラスター上のそのマネージドクラスターに対する view
権限が必要です。以下の可観測性機能の一覧を参照してください。
マネージドクラスターのメトリクスへのアクセス
ユーザーがハブクラスター上のマネージドクラスターの
view
ロールに割り当てられていない場合、ユーザーによるマネージドクラスターメトリックへのアクセスは拒否されます。次のコマンドを実行して、マネージドクラスターの namespace でmanagedClusterView
ロールの作成権限がユーザーにあるか確認します。oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>
クラスター管理者として、マネージドクラスターの namespace に
managedClusterView
ロールを作成します。以下のコマンドを実行します。oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>
次に、ロールバインドを作成してロールをユーザーに適用し、バインドします。以下のコマンドを実行します。
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>
リソースの検索
ユーザーがリソースタイプにアクセスできるか確認するには、次のコマンドを使用します。
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>
注記:
<resource-type>
は複数形にする必要があります。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
詳細は、ロールバインディングポリシー を参照してください。可観測性を設定するには、可観測性のカスタマイズ を参照してください。
1.2.3.1. 可観測性ライフサイクルのコンソールと API RBAC テーブル
可観測性のコンポーネントを管理する場合は、以下の API RBAC の表を確認してください。
API | 管理 | 編集 | View |
| create, read, update, delete | read, update | read |
| create、get、list、watch、update、delete、patch | - | - |
| get, list, watch | get, list, watch | get, list, watch |
次は リスクとコンプライアンス でクラスターのセキュリティー保護について確認してください。