アクセス制御
ロールベースのアクセスでクラスターを保護します。
概要
第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 ドキュメント の OpenShift 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>
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マネージドクラスター内でアプリケーションを作成および管理します。以下のコマンドを入力して、open-cluster-management:admin:<cluster-name>クラスターロールへのバインドを作成し、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 このロールには、
applicationnamespace のすべての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の namespace にあるすべての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 |
| API | 管理 | 編集 | 表示 |
|---|---|---|---|
|
| 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、およびポリシーが適用されるマネージドクラスターへのアクセス権が必要です。マネージドクラスターは、namespace にバインドされる ManagedClusterSet の一部でもある必要があります。ManagedClusterSet の詳細は、ManagedClusterSets の概要 を参照してください。
1 つ以上の ManagedClusterSets がバインドされた rhacm-policies などの namespace を選択し、namespace 内に Placement オブジェクトを作成するためのアクセス権を取得したら、次の操作を表示します。
Policy、PlacementBinding、およびPolicyAutomationの編集アクセス権を指定してrhacm-edit-policyという名前のClusterRoleを作成するには、次のコマンドを実行します。oc create clusterrole rhacm-edit-policy --resource=policies.policy.open-cluster-management.io,placementbindings.policy.open-cluster-management.io,policyautomations.policy.open-cluster-management.io,policysets.policy.open-cluster-management.io --verb=create,delete,get,list,patch,update,watch
oc create clusterrole rhacm-edit-policy --resource=policies.policy.open-cluster-management.io,placementbindings.policy.open-cluster-management.io,policyautomations.policy.open-cluster-management.io,policysets.policy.open-cluster-management.io --verb=create,delete,get,list,patch,update,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow rhacm-policiesnamespace にポリシーを作成するには、以前に作成したClusterRoleを使用して、rhacm-policiesnamespace にrhacm-edit-policyなどの namespaceRoleBindingを作成します。以下のコマンドを実行します。oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>
oc create rolebinding rhacm-edit-policy -n rhacm-policies --clusterrole=rhacm-edit-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow マネージドクラスターのポリシーステータスを表示するには、ハブクラスターのマネージドクラスターの namespace でポリシーを表示するパーミッションが必要です。OpenShift
viewClusterRoleなどのviewアクセス権がない場合は、次のコマンドを使用して、ポリシーへの表示アクセス権を持つClusterRole(rhacm-view-policyなど) を作成します。oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watch
oc create clusterrole rhacm-view-policy --resource=policies.policy.open-cluster-management.io --verb=get,list,watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい
ClusterRoleをマネージドクラスターの namespace にバインドするには、次のコマンドを実行して namespaceRoleBindingを作成します。oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>
oc create rolebinding rhacm-view-policy -n <cluster name> --clusterrole=rhacm-view-policy --user=<username>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 | 管理 | 編集 | 表示 |
|---|---|---|---|
|
| 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>
oc auth can-i create ManagedClusterView -n <managedClusterName> --as=<user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター管理者として、マネージドクラスターの namespace に
managedClusterViewロールを作成します。以下のコマンドを実行します。oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>
oc create role create-managedclusterview --verb=create --resource=managedclusterviews -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次に、ロールバインドを作成してロールをユーザーに適用し、バインドします。以下のコマンドを実行します。
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>
oc create rolebinding user-create-managedclusterview-binding --role=create-managedclusterview --user=<user> -n <managedClusterName>Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースの検索
ユーザーがリソースタイプにアクセスできるか確認するには、次のコマンドを使用します。
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>
oc auth can-i list <resource-type> -n <namespace> --as=<rbac-user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
<resource-type>は複数形にする必要があります。Grafana で可観測性データを表示するには、マネージドクラスターの同じ namespace に
RoleBindingリソースが必要です。以下は
RoleBindingの例です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
詳細は、ロールバインディングポリシー を参照してください。可観測性を設定するには、可観測性のカスタマイズ を参照してください。
1.2.3.1. 可観測性ライフサイクルのコンソールと API RBAC テーブル リンクのコピーリンクがクリップボードにコピーされました!
可観測性のコンポーネントを管理する場合は、以下の API RBAC の表を確認してください。
| API | 管理 | 編集 | 表示 |
|
| create, read, update, delete | read, update | read |
|
| create, get, list, watch, update, delete, patch | - | - |
|
| get, list, watch | get, list, watch | get, list, watch |
1.3. 独自の可観測性認証局 (CA) 証明書の導入 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management for Kubernetes をインストールすると、可観測性のための認証局 (CA) 証明書のみがデフォルトで提供されます。Red Hat Advanced Cluster Management によって生成されたデフォルトの可観測性 CA 証明書を使用しない場合は、可観測性を有効にする前に独自の可観測性 CA 証明書を使用することを選択できます。
1.3.1. OpenSSL コマンドを使用した CA 証明書の生成 リンクのコピーリンクがクリップボードにコピーされました!
可観測性には、サーバー側、クライアント側の 2 つの CA 証明書が必要です。
以下のコマンドを使用して、CA RSA 秘密鍵を生成します。
openssl genrsa -out serverCAKey.pem 2048 openssl genrsa -out clientCAKey.pem 2048
openssl genrsa -out serverCAKey.pem 2048 openssl genrsa -out clientCAKey.pem 2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow 秘密鍵を使用して自己署名 CA 証明書を生成します。以下のコマンドを実行します。
openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem
openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2. 独自の可観測性 CA 証明書に関連付けられたシークレットの作成 リンクのコピーリンクがクリップボードにコピーされました!
シークレットを作成するには、以下の手順を実行します。
証明書および秘密鍵を使用して
observability-server-ca-certsシークレットを作成します。以下のコマンドを実行します。oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書および秘密鍵を使用して
observability-client-ca-certsシークレットを作成します。以下のコマンドを実行します。oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem
oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- ルート認証のカスタマイズ を参照してください。
- オブジェクトストアにアクセスするための証明書のカスタマイズ を参照してください。