Container Service for Kubernetes (ACK) の承認システムは、RAM (Resource Access Management) 承認とRBAC (role-based access control) 承認で構成されています。 RAMとRBACを使用して、ACKクラスター内のクラウドリソースとリソースに柔軟で階層的な権限制御を適用できます。
承認システム
ACKの認証システムは、RAM認証とRBAC認証で構成されています。 RAM権限は、クラウドリソースに対する権限を付与するために使用されます。 RBAC権限付与は、クラスター内のKubernetesリソースに対する権限を付与するために使用されます。 ACKの認可システムを次の図に示します。
RAM権限付与: RAMのシステムポリシーとカスタムポリシーに基づいています。この認可システムは、ACKおよびその他のAlibaba CloudサービスのAPI操作に対する権限を付与して、次のO&M操作をサポートするために使用されます。
クラスターを作成、表示、アップグレード、および削除します。
ノードプールを作成、変更、スケールします。
認証を管理します。
クラスターを監視し、ログとイベントを収集します。
RBAC認証: Kubernetes RBACに基づいています。 この認証システムは、O&M操作をサポートするために、ACKクラスター内のKubernetesリソースに対する権限を付与するために使用されます。 ほとんどの場合、RBAC権限を使用して、次のKubernetesリソースオブジェクトを追加、削除、変更、およびクエリする権限を付与できます。
ワークロードリソース: Deployment、StatefulSet、DaemonSet、Job、CronJob、pod、ReplicaSet。
ネットワークリソース: サービス、Ingress、およびNetworkPolicy。
ストレージリソース: 永続ボリューム (PV) 、永続ボリュームクレーム (PVC) 、およびStorageClass。
名前空間、ConfigMap、およびシークレット。
権限付与タイプ
権限付与タイプ | 権限付与の要求 | 説明 |
RAM の権限付与 |
|
|
RBAC認証 |
| 権限付与が完了した後にのみ、RAMユーザーまたはRAMロールはACK OneクラスターのKubernetesリソースを管理する権限を持ちます。 |
RAM権限付与
デフォルトでは、RAMユーザーまたはRAMロールにはクラウドサービスAPIを使用する権限がありません。 RAMユーザーまたはRAMロールを使用してクラウドリソースを管理する前に、RAMユーザーまたはRAMロールに必要な権限を付与する必要があります。 RAM権限を使用すると、システムポリシーまたはカスタムポリシーをRAMユーザーまたはRAMロールにアタッチできます。 詳細については、「RAMを使用してクラスターとクラウドリソースにアクセスする権限を付与する」をご参照ください。
シナリオ
ラベルを使用してクラスターを分類し、RAMポリシーの条件としてラベルを設定して、きめ細かいアクセス制御を実装できます。 これにより、さまざまなユーザーにクラスターに対するさまざまな権限が付与されます。 詳細については、「ラベルを使用して詳細なアクセス制御を実装する」をご参照ください。
ワーカーRAMロールを使用してクラスター内の特定のアプリケーションに権限を付与すると、クラスター内のすべてのノードに権限が付与されます。 これにより、特権乱用のリスクが高まる可能性があります。 この問題に対処するには、ノードプールを作成するときに、異なるカスタムワーカーRAMロールを異なるノードプールに割り当てることを推奨します。 このように、異なるノードプールは異なるRAMロールを使用します。 詳細については、「カスタムワーカーRAMロールの使用」をご参照ください。
ACKクラスターのアプリケーションから他のクラウドサービスへの安全なアクセスを確保するために、サービスアカウントのRAMロール (RRSA) 機能を使用してポッドのAPI権限制御を実行できます。 詳細については、「RRSAを使用して異なるポッドに異なるクラウドサービスへのアクセスを許可する」をご参照ください。
ACK管理クラスターのノードセキュリティを確保するために、最小権限の原則に基づいて、クラスターのワーカーRAMロールの権限を手動で制限できます。 詳細については、「ACK管理クラスターのワーカーRAMロールの権限を手動で制限する」をご参照ください。
RBAC権限付与
RBAC権限付与では、クラスター内のKubernetesリソースに対する権限のみを付与できます。 たとえば、RBAC権限を使用して、リソースに対するRAMユーザーまたはRAMロールの権限 (クラスター内のポッドまたはノードに関する情報を照会する権限など) を付与できます。 RBAC権限付与は、ACKコンソールの [権限付与] ページで実行できます。
Kubernetes RBACは、RBACロールをRAMユーザーまたはRAMロールにバインドするために使用できる次のリソースオブジェクトを提供します。 Kubernetes RBACは許可のみをサポートしています。 ClusterRolesとRolesを構成する方法の詳細については、「カスタムRBACロールを使用してRAMユーザーまたはRAMロールの権限を制限する」をご参照ください。
ロール: ロールは、特定の名前空間内の権限を定義します。
RoleBinding: RoleBindingは、ロールをユーザーにバインドするために使用されます。
ClusterRole: ClusterRoleは、クラスター全体の権限を定義します。
ClusterRoleBinding: ClusterRoleBindingは、ClusterRoleをユーザーにバインドするために使用されます。
ACKを使用すると、カスタムClusterRolesのみをRAMユーザーまたはRAMロールにバインドできます。 カスタムロールをRAMユーザーまたはRAMロールにバインドすることはできません。
ACKコンソールで、次の定義済みロールをRAMユーザーまたはRAMロールに割り当てることができます。 詳細については、「RAMユーザーまたはRAMロールへのRBAC権限の付与」をご参照ください。
表 1 ロールと権限
ロール | クラスターリソースに対するRBAC権限 |
管理者 | すべての名前空間のリソースに対する読み取りおよび書き込み権限。 |
O&Mエンジニア | すべての名前空間のコンソールで表示されるリソースに対する読み取りおよび書き込み権限と、ノード、PV、名前空間、およびクォータに対する読み取り専用権限。 |
開発者 | 指定された名前空間またはすべての名前空間のコンソールで表示されるリソースに対する読み取りおよび書き込み権限。 |
Restricted user | 指定された名前空間またはすべての名前空間のコンソールで表示されるリソースに対する読み取り専用の権限。 |
カスタムロール | カスタムロールの権限は、選択したClusterRoleによって決まります。 ClusterRoleを選択する前に、ClusterRoleの権限を確認し、必要な権限のみをRAMユーザーまたはRAMロールに付与してください。 ClusterRolesの詳細については、「カスタムRBACロールを使用してRAMユーザーまたはRAMロールの権限を制限する」をご参照ください。 |
RAMユーザーまたはRAMロールにクラスターとアプリケーションを管理および保守する権限を付与するには、RAM権限付与とRBAC権限付与を順番に実行する必要があります。 RBAC認証を実行する前に、RAM認証を完了する必要があります。 さまざまなシナリオで承認を完了するには、次のトピックを参照してください。
O&Mエンジニアに権限を付与するには、「シナリオ1: O&Mエンジニアにクラスターとアプリケーションを管理する権限を付与する」をご参照ください。
開発者に権限を付与するには、「シナリオ2: 開発者にクラスターとアプリケーションを管理する権限を付与する」をご参照ください。
権限管理者に権限を付与するには、「シナリオ3: 権限管理者にRAMユーザーとRAMロールの権限を管理する権限を付与する」をご参照ください。
辞任した従業員または信頼できない個人の場合、RAMユーザーまたはRAMロールを削除しても、kubeconfigファイルでのRBAC権限は自動的に取り消されません。 したがって、ユーザーのRAMユーザーまたはRAMロールを削除した後、ユーザーからkubeconfigファイルを取り消す必要があります。 詳細については、「kubeconfigファイルの削除」をご参照ください。