すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:RAMとRBACを使用したアクセス制御の実装

最終更新日:Nov 15, 2024

Container Service for Kubernetes (ACK) の承認システムは、RAM (Resource Access Management) 承認とRBAC (role-based access control) 承認で構成されています。 RAMとRBACを使用して、ACKクラスター内のクラウドリソースとリソースに柔軟で階層的な権限制御を適用できます。

承認システム

ACKの認証システムは、RAM認証とRBAC認証で構成されています。 RAM権限は、クラウドリソースに対する権限を付与するために使用されます。 RBAC権限付与は、クラスター内のKubernetesリソースに対する権限を付与するために使用されます。 ACKの認可システムを次の図に示します。

image
  • 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 の権限付与

  • RAMユーザーまたはRAMロール: RAMユーザーまたはRAMロールにポリシーをアタッチする必要があります。

  • Alibaba Cloudアカウント: デフォルトでは、Alibaba Cloudアカウントには完全な権限があります。 承認は必要ありません。

  • サービスにリンクされたロール: 初めてACKを使用する場合は、Alibaba CloudアカウントまたはRAMアカウント管理者 (RAMユーザー) で認証を完了する必要があります。

  • RAM権限を使用すると、システムポリシーまたはカスタムポリシーをRAMユーザーまたはRAMロールにアタッチできます。 権限付与が完了すると、RAMユーザーまたはRAMロールは他のAlibaba Cloudサービスのリソースにアクセスできます。

  • サービスにリンクされたロールをACKに割り当てた後、そのロールを引き受けて、他のAlibaba Cloudサービス内のACKクラスターおよびリソースにアクセスできます。 ACKのサービスにリンクされたロールの詳細については、「ACKロール」をご参照ください。

RBAC認証

  • RAMユーザーまたはRAMロール: RAMユーザーまたはRAMロールにポリシーをアタッチする必要があります。

  • Alibaba Cloudアカウント: デフォルトでは、Alibaba Cloudアカウントには完全な権限があります。 承認は必要ありません。

権限付与が完了した後にのみ、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認証を完了する必要があります。 さまざまなシナリオで承認を完了するには、次のトピックを参照してください。

重要

辞任した従業員または信頼できない個人の場合、RAMユーザーまたはRAMロールを削除しても、kubeconfigファイルでのRBAC権限は自動的に取り消されません。 したがって、ユーザーのRAMユーザーまたはRAMロールを削除した後、ユーザーからkubeconfigファイルを取り消す必要があります。 詳細については、「kubeconfigファイルの削除」をご参照ください。