Kubernetes のロールベースアクセス制御 (RBAC) では、ロールを使用してクラスターリソースに対する一連の権限を定義します。Alibaba Cloud Container Service for Kubernetes (ACK) では、YAML ファイルと kubectl、または ACK コンソールを用いて、名前空間スコープの Role またはクラスター全体スコープの ClusterRole を作成できます。本トピックでは、両方のロールタイプの作成方法について説明し、ワークロードに応じてカスタマイズ可能な YAML のサンプルを提供します。
Role と ClusterRole
必要となる権限の範囲に応じて、ロールの種類を選択してください。
| Role | ClusterRole | |
|---|---|---|
| 範囲 | 単一の名前空間 | クラスター全体 |
| 主な利用シーン | 1 つの名前空間内のリソース(例:`default` 名前空間内の Pod)へのアクセスを許可する | クラスター全体スコープのリソース(例:Node や PersistentVolume)またはすべての名前空間にわたるリソースへのアクセスを許可する |
| 有効化方法 | RoleBinding | ClusterRoleBinding(または、1 つの名前空間にスコープを限定する RoleBinding) |
ロールまたはクラスターロールは、それ自体では権限を付与しません。RAM ユーザー、RAM ロール、または Kubernetes サービスアカウントにロールをアタッチするには、ロールバインディングまたはクラスターロールバインディングを作成する必要があります。手順については、「RAM ユーザーまたは RAM ロールに RBAC 権限を付与する」をご参照ください。
RBAC の完全な仕様については、Kubernetes ドキュメントのロールとクラスターロールをご参照ください。
Role の作成
Role は、単一の名前空間にスコープを限定した権限を定義します。
以下の YAML は、default 名前空間内に test-role という名前の Role を作成します。この Role は、当該名前空間内の Pod に対して完全な権限を付与します。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: test-role
namespace: default
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
YAML をクラスターに適用します:
kubectl apply -f role.yaml
Role が正しく作成されたことを確認します:
kubectl get role test-role -n default
ClusterRole の作成
ClusterRole は、すべての名前空間にわたる権限、またはクラスター全体スコープのリソースに対する権限を定義します。
kubectl を使用した ClusterRole の作成
以下の YAML は、test-clusterrole という名前の ClusterRole を作成します。この ClusterRole を使用して、特定の名前空間内の Pod に対する完全な権限を付与できます。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: test-clusterrole
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
YAML をクラスターに適用します:
kubectl apply -f clusterrole.yaml
ClusterRole が正しく作成されたことを確認します:
kubectl get clusterrole test-clusterrole -o yaml
ACS コンソールでのクラスターロールの作成
以下の手順では、ACK コンソールを用いて RAM ユーザーまたは RAM ロール向けの ClusterRole を作成します。Role の作成手順も同様です。
-
ACS コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
左側のナビゲーションウィンドウで、セキュリティ > ロール を選択します。
-
ロール ページで、クラスターロール タブをクリックします。
-
作成 をクリックします。
-
YAML の作成 パネルで、ClusterRole の YAML コンテンツを入力し、OK をクリックします。
作成後、新しい ClusterRole が クラスターロール タブに表示されます。
次のステップ
Role や ClusterRole は、対象(サブジェクト)にバインドされない限り、何らかの効果を発揮しません。RAM ユーザーまたは RAM ロールにロールを付与するには、「RAM ユーザーまたは RAM ロールへの RBAC 権限の付与」をご参照ください。