Container Service for Kubernetes (ACK) は、RAM と Kubernetes RBAC を組み合わせて、クラウドインフラストラクチャとクラスター内リソースへのアクセスを管理します。
認可システム
ACK は、インフラストラクチャレベルの権限には RAM を使用し、クラスター内リソースへのアクセスには RBAC を使用します。
-
RAM 認可:RAM ポリシーを使用して、ACK および依存するクラウドサービスの API を呼び出す権限を付与します。これには、以下のような操作が含まれます。
-
クラスター:作成、表示、アップグレード、削除
-
ノードプール:作成、変更、スケーリング
-
権限管理
-
クラスターのモニタリング、ログ、イベント
-
-
RBAC 認可:Kubernetes RBAC に基づき、クラスター内リソースレベルで権限を付与します。RBAC 認可は、異なるユーザーに異なる Kubernetes リソースを操作する権限を付与します。これには、以下のような Kubernetes オブジェクトに対する作成、読み取り、更新、削除 (CRUD) 操作が含まれます。
-
ワークロード:Deployment、StatefulSet、DaemonSet、Job、CronJob、Pod、ReplicaSet など。
-
ネットワーク:Service、Ingress、NetworkPolicy など。
-
ストレージ:永続ボリューム (PV)、永続ボリューム要求 (PVC)、StorageClass など。
-
Namespace、ConfigMap、Secret など。
-
権限の種類
|
権限の種類 |
認可は必要か? |
権限の説明 |
|
RAM 認可 |
|
|
|
RBAC 認可 |
|
認可された RAM ユーザーと RAM ロールは、クラスター内の Kubernetes リソースを操作できます。 |
RAM 認可
RAM ユーザーと RAM ロールは、デフォルトでは Alibaba Cloud サービスの API を呼び出す権限を持ちません。必要に応じて、システムポリシーまたはカスタム RAM ポリシーを設定してください。詳細は、「RAM を使用してクラスターとクラウドリソースへのアクセス権限を付与」をご参照ください。
RAM 認可のその他のシナリオ
-
タグでクラスターを分類し、RAM ポリシーを適用して、きめ細かなアクセス制御を行います。詳細は、「タグを使用してきめ細かな権限管理を実装」をご参照ください。
-
すべてのクラスターノードで単一のワーカー RAM ロールを共有すると、過剰なアクセス許可につながる可能性があります。このリスクを軽減するために、ノードプールごとにカスタムのワーカー RAM ロールを割り当てます。詳細は、「カスタムワーカー RAM ロールの使用」をご参照ください。
-
Alibaba Cloud サービスにアクセスするクラスター内アプリケーションを保護するには、RRSA を使用して、ServiceAccount レベルで RAM 権限を付与し、Pod を分離します。詳細は、「RRSA を使用して ServiceAccount の RAM 権限を設定し、Pod 権限を分離」をご参照ください。
-
ACK マネージドクラスター内のノードを保護するには、最小権限の原則に基づいてワーカー RAM ロールの権限を調整します。詳細は、「ワーカー RAM ロールの権限を制限」をご参照ください。
RBAC 認可
RAM 認可は、クラスターレベルの操作のみが対象です。Pod やノードなどの Kubernetes リソースにアクセスするには、ACK コンソールの権限管理ページで RBAC 認可を付与する必要があります。
Kubernetes RBAC は、以下の Role と Binding のタイプをサポートします。Role を使用してリソースへのアクセス権限を定義する場合、許可ルールのみがサポートされており、拒否ルールはサポートされていません。カスタムの ClusterRole と Role を作成するには、「カスタム RBAC を使用してクラスター内リソースの操作を制限」をご参照ください。
-
Role:単一の Namespace 内のリソースに対するアクセス権限を定義します。
-
RoleBinding:ユーザーを Role にバインドします。
-
ClusterRole:クラスター全体のリソース権限を定義します。
-
ClusterRoleBinding:ユーザーを ClusterRole にバインドします。
ACK の権限管理では、カスタム ClusterRole をクラスター内の RAM ユーザーまたは RAM ロールにバインドすることはサポートしていますが、カスタム Role を RAM ユーザーまたは RAM ロールにバインドすることはサポートしていません。
Container Service for Kubernetes コンソールは、権限の割り当てを簡素化するためにプリセット ClusterRole を提供します。詳細は、「RBAC を使用してクラスター内リソースの操作を認可」をご参照ください。
表 1. ロール権限の説明
|
プリセットロール |
クラスター内 RBAC 権限 |
|
[管理者] |
すべての Namespace にわたるすべての Kubernetes リソース (クラスターノード、PV、Namespace、リソースクォータを含む) に対する完全な読み取り/書き込みアクセス権。 |
|
[読み取り専用管理者] |
すべての Namespace にわたるすべての Kubernetes リソース (クラスターノード、PV、Namespace、リソースクォータを含む) に対する読み取り専用アクセス権。 |
|
[運用保守エンジニア] |
すべての Namespace にわたり、コンソールに表示されるリソースへの読み取り/書き込みアクセス権。クラスターノード、PV、Namespace に対する読み取り/更新アクセス権、およびその他すべてのリソースに対する読み取り専用アクセス権が含まれます。 |
|
[開発者] |
クラスター内の全 Namespace または指定された Namespace において、コンソールに表示されるリソースへの読み取り/書き込みアクセス権。 |
|
[制限付きユーザー] |
クラスター内の全 Namespace または指定された Namespace において、コンソールに表示されるリソースへの読み取り専用アクセス権。 |
|
[カスタム] |
権限は指定された ClusterRole に依存します。意図しないアクセス権を ID に付与しないように、割り当てる前に ClusterRole の権限を確認してください。詳細は、「カスタム RBAC を使用してクラスター内リソースの操作を制限」をご参照ください。 重要
|
RAM ユーザーまたは RAM ロールがクラスターとアプリケーションの運用保守を実行する必要がある場合は、RBAC 認可の前に RAM 認可を付与する必要があります。典型的な認可シナリオは次のとおりです。
-
クラスターリソースを表示するには、「ユースケース 1:読み取り専用管理者にクラスターリソースの表示権限を付与」をご参照ください。
-
クラスターインフラストラクチャとワークロードを管理するには、「ユースケース 2:運用保守エンジニアにクラスターとアプリケーションの管理権限を付与」をご参照ください。
-
クラスター内アプリケーションをビルドおよびデプロイするには、「ユースケース 3:開発者にクラスターとアプリケーションの管理権限を付与」をご参照ください。
-
クラスターの権限を管理するには、「ユースケース 4:権限管理者に RAM ユーザーと RAM ロールの認可を管理するアクセス権を付与」をご参照ください。
RAM ユーザーまたはロールを削除しても、kubeconfig で設定された RBAC 権限は取り消されません。オフボーディングやセキュリティ修復の際には、手動でkubeconfig の権限を取り消してください。