このドキュメントでは、Kubernetes クラスターにアクセスするために、RAM ユーザーに RBAC 権限を付与する方法について説明します。
前提条件
- Alibaba Cloud アカウントが取得され、1 つ以上の RAM ユーザーが作成されている。
- 対象となる RAM ユーザーに、RAM コンソールを使用して、目的の Kubernetes クラスターへの読み取り権限が付与されている。
- 対象となる RAM ユーザーに、必要な RAM 権限が付与されている。 詳細は、「カスタム権限ポリシーの作成」をご参照ください。
- 対象となる RAM ユーザーに、クラスターまたは名前空間のプリセット管理者ロール、またはカスタムクラスター管理者 "cluster-admin" ロールが付与されている。 詳細は、「手順」をご参照ください。
- 同じクラスターまたは名前空間で、RAM ユーザーが他の RAM ユーザーに権限を付与したい場合、その RAM ユーザーは、必要な RAM 権限を与えられている必要があります。 詳細は、「カスタム権限ポリシーの作成」をご参照ください。
- RAM の権限付与が Container Service コンソールを使用して設定されている場合、RAM のセキュリティ制限により、ページのリファレンスポリシー、および操作説明に従って、対象となる RAM ユーザーに対して、RAM コンソールを使用して、手動で権限付与を実行する必要があります。
権限付与ポリシーのアップグレードについての注意
Container Service では、Kubernetes クラスターのセキュリティを高めるため、クラスターの権限付与ポリシーをアップグレードしました。 必要な権限を与えられていない Kubernetes クラスターの RAM ユーザーは、クラスターリソースにアクセスできません。
そのため、各 Kubernetes クラスターの RAM ユーザーに、必要な権限を付与することを推奨します。 この処理が完了したら、マネージド RAM ユーザーには、それぞれの権限付与されたクラスターにアクセスするための、特定の権限のみ与えられます。
手順
- Container Service コンソールにログインします。
- Container Service-Kubernetes の左側のナビゲーションウインドウで を選択します。
- 目的の RAM ユーザーの右側で、[承認] をクリックします。
- [リソース認証] タブページの左上隅で、プラス記号をクリックし、付与するアクセス権限を適用するクラスターと名前空間を設定して、RAM ユーザーにロールを設定し、[次のステップ] をクリックします。
注
- クラスターまたは名前空間で、RAM ユーザーに対して、 1 つのプリセットロールと複数のカスタムロールを付与することができます。
- 一連の権限設定 (クラスター、名前空間、ロール) を削除するには、マイナス記号をクリックします。
以下の表に、Kubernetes クラスターにアクセスするために、RAM ユーザーに付与できる RBAC 権限をリストします。
表 1. RBAC 権限 ロール 権限 Admin すべての名前空間のリソースの読み書き権限、およびそのノード、ボリューム、名前空間、クォータの読み書き権限。 Operation すべての名前空間のリソースの読み書き権限、およびノード、ボリューム、名前空間、クォータの専用の読み書き権限。 Developer すべての名前空間、または指定した名前空間のリソースの読み書き権限。 Restricted User すべての名前空間、または指定した名前空間のリソースの読み取り権限。 Custom RAM ユーザーの権限は、選択したクラスターロールによります。 RAM ユーザーに対して不適切な権限が与えられるを避けるため、権限付与の前にリソース上で、選択したクラスターロールが持つ権限を確認してください。 詳細は、「カスタム権限」をご参照ください。 - [承認成功] が表示された場合、対象となる RAM ユーザーに権限が付与されたことを示しています。 [権限の送信] ページが表示された場合、次の手順に従って、RAM コンソールを使用して、対象となる RAM ユーザーに特定のクラスターへの読み取り権限を付与します。
注 権限の詳細は、「カスタム権限ポリシーの作成」 をご参照ください。
- [コピー] をクリックし、[ポリシー管理] をクリックします。
- [ポリシーの作成] をクリックします。 をクリックし、
- [ポリシー名] を入力し、[スクリプト] 設定モードを選択します。ホットキー [Ctrl+V] を使用して、[ポリシードキュメント] エリアの手順 6 でコピーされたコンテンツを貼り付け、[OK] をクリックします。 詳細は、「カスタム権限ポリシーの作成」をご参照ください。
- 左側のナビゲーションウィンドウで、[ロール権限の追加] をクリックします。 を選択します。 目的のユーザーの右側で、
- [カスタム ポリシー] を選択し、カスタマイズされたポリシーを検索または手動で検索し、ポリシー名をクリックして、右側の [選択] エリアにポリシーを追加し、[OK] をクリックします。
- Container Service コンソールの [権限の送信] ページに戻り、[権限の送信] をクリックします。
- これらの手順を完了したら、対象となる RAM ユーザーを使用して、 Container Service コンソールにログインし、付与された権限で許可されている操作を実行できます。
カスタム権限
Alibaba Cloud Container Service では、事前に設定された 4 タイプのロールによる次の 4 つの権限が提示されます。 Admin、Operation、Developer、および Restricted User です。 これらの権限は、 Container Service コンソールでのほとんどのユーザーのニーズを満たしています。 クラスターへのアクセス権限をカスタマイズしたい場合、カスタム権限も使用できます。
クラスター Master ノードへログインし、以下のコマンドを実行するとカスタム権限の詳細を表示できます。
# kubectl get clusterrole
NAME AGE
admin 13d
alibaba-log-controller 13d
alicloud-disk-controller-runner 13d
cluster-admin 13d
cs:admin 13d
edit 13d
flannel 13d
kube-state-metrics 22h
node-exporter 22h
prometheus-k8s 22h
prometheus-operator 22h
system:aggregate-to-admin 13d
....
system:volume-scheduler 13d
view 13d
スーパー管理者 "cluster-admin" の権限の詳細を表示するには、以下のコマンドを実行します。
# kubectl get clusterrole cluster-admin -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
creationTimestamp: 2018-10-12T08:31:15Z
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: cluster-admin
resourceVersion: "57"
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/cluster-admin
uid: 2f29f9c5-cdf9-11e8-84bf-00163e0b2f97
rules:
- apiGroups:
- '*'
resources:
- '*'
verbs:
- '*'
- nonResourceURLs:
- '*'
verbs:
- '*'