このドキュメントでは、Kubernetes クラスターにアクセスするために、RAM ユーザーに RBAC 権限を付与する方法について説明します。

前提条件

既存の RAM ユーザーアカウントが以下の要件を満たす場合、このガイドの手順に従ってください。
  • 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 ユーザーには、それぞれの権限付与されたクラスターにアクセスするための、特定の権限のみ与えられます。

手順

  1. Container Service コンソールにログインします。
  2. Container Service-Kubernetes の左側のナビゲーションウインドウで [クラスター] > [承認] を選択します。
  3. 目的の RAM ユーザーの右側で、[承認] をクリックします。
  4. [リソース認証] タブページの左上隅で、プラス記号をクリックし、付与するアクセス権限を適用するクラスターと名前空間を設定して、RAM ユーザーにロールを設定し、[次のステップ] をクリックします。
    • クラスターまたは名前空間で、RAM ユーザーに対して、 1 つのプリセットロールと複数のカスタムロールを付与することができます。
    • 一連の権限設定 (クラスター、名前空間、ロール) を削除するには、マイナス記号をクリックします。

    以下の表に、Kubernetes クラスターにアクセスするために、RAM ユーザーに付与できる RBAC 権限をリストします。

    表 1. RBAC 権限
    ロール 権限
    Admin すべての名前空間のリソースの読み書き権限、およびそのノード、ボリューム、名前空間、クォータの読み書き権限。
    Operation すべての名前空間のリソースの読み書き権限、およびノード、ボリューム、名前空間、クォータの専用の読み書き権限。
    Developer すべての名前空間、または指定した名前空間のリソースの読み書き権限。
    Restricted User すべての名前空間、または指定した名前空間のリソースの読み取り権限。
    Custom RAM ユーザーの権限は、選択したクラスターロールによります。 RAM ユーザーに対して不適切な権限が与えられるを避けるため、権限付与の前にリソース上で、選択したクラスターロールが持つ権限を確認してください。 詳細は、「カスタム権限」をご参照ください。
  5. [承認成功] が表示された場合、対象となる RAM ユーザーに権限が付与されたことを示しています。 [権限の送信] ページが表示された場合、次の手順に従って、RAM コンソールを使用して、対象となる RAM ユーザーに特定のクラスターへの読み取り権限を付与します。
    権限の詳細は、「カスタム権限ポリシーの作成」 をご参照ください。
    1. [コピー] をクリックし、[ポリシー管理] をクリックします。
    2. [権限] > [ポリシー] をクリックし、[ポリシーの作成] をクリックします。
    3. [ポリシー名] を入力し、[スクリプト] 設定モードを選択します。ホットキー [Ctrl+V] を使用して、[ポリシードキュメント] エリアの手順 6 でコピーされたコンテンツを貼り付け、[OK] をクリックします。 詳細は、「カスタム権限ポリシーの作成」をご参照ください。
    4. 左側のナビゲーションウィンドウで、[アイデンティティ] > [ユーザー] を選択します。 目的のユーザーの右側で、[ロール権限の追加] をクリックします。
    5. [カスタム ポリシー] を選択し、カスタマイズされたポリシーを検索または手動で検索し、ポリシー名をクリックして、右側の [選択] エリアにポリシーを追加し、[OK] をクリックします。
    6. Container Service コンソールの [権限の送信] ページに戻り、[権限の送信] をクリックします。
  6. これらの手順を完了したら、対象となる RAM ユーザーを使用して、 Container Service コンソールにログインし、付与された権限で許可されている操作を実行できます。

カスタム権限

Alibaba Cloud Container Service では、事前に設定された 4 タイプのロールによる次の 4 つの権限が提示されます。 Admin、Operation、Developer、および Restricted User です。 これらの権限は、 Container Service コンソールでのほとんどのユーザーのニーズを満たしています。 クラスターへのアクセス権限をカスタマイズしたい場合、カスタム権限も使用できます。

Alibaba Cloud Container Service では、いくつかのカスタム権限を提供しています。 その中で、クラスター管理者 "cluster-admin" 権限は、すべてのリソースにアクセスして操作するための権限を持つスーパー管理者権限です。

クラスター 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" の権限の詳細を表示するには、以下のコマンドを実行します。

RAM ユーザーが "cluster-admin" ロールを付与されると、スーパー管理者とみなされ、Alibaba Cloud アカウントと同等の権限を持ち、クラスター上のどのリソース上でも操作が可能になります。 "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:
  - '*'