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

Container Service for Kubernetes:権限付与の概要

最終更新日:Oct 31, 2024

Container Service for Kubernetes (ACK) の承認システムは、RAM (Resource Access Management) 承認とRBAC (role-based access control) 承認で構成されています。 RAM権限は、クラウドリソースに対する権限を付与するために使用されます。 RBAC承認は、ACKクラスター内のリソースに対する権限を付与するために使用されます。 このトピックでは、RAM権限付与とRBAC権限付与、およびこれらの権限付与の実行方法について説明します。

ACK認証システム

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

権限付与タイプ

シナリオ

API呼び出しで操作可能なリソース

RAM の権限付与

O&M操作のためにACKおよびその他のAlibaba CloudサービスのAPI操作に対する権限を付与するために使用されます。

  • クラスター: 作成、表示、アップグレード、および削除。

  • ノードプール: 作成、変更、スケール

  • 承認管理。

  • 監視、ログ、イベント。

RBAC認証

ACKクラスターのKubernetesリソースに対して、O&M操作のために名前空間レベルまたはクラスター全体の権限を付与するために使用されます。

  • ワークロードリソース: Deployment、StatefulSet、DaemonSet、Job、CronJob、ReplicaSet、Horizontal Pod Autoscaler (HPA) 、およびポッド。

  • ネットワークリソース: サービス、Ingress、およびNetworkPolicy。

  • ストレージリソース: 永続ボリューム (PV) 、永続ボリュームクレーム (PVC) 、およびStorageClass。

  • 名前空間、ConfigMap、およびシークレット。

RAMユーザーまたはRAMロールを使用してクラスターとクラスター内のアプリケーションを管理する場合は、RAMユーザーまたはRAMロールに対してRAM権限付与とRBAC権限付与の両方を実行する必要があります。 RBAC認証を実行する前に、RAM認証を完了する必要があります。 さまざまなシナリオで承認を完了するには、次のトピックを参照してください。

重要

RAMユーザーまたはRAMロールを削除しても、RAMユーザーまたはRAMロールのRBAC権限はACKクラスターのkubeconfigファイルから削除されません。 したがって、ユーザーのRAMユーザーまたはRAMロールを削除する前に、ユーザーのkubeconfigファイルを取り消す必要があります。 詳細については、「KubeConfig資格情報の取り消し」をご参照ください。

権限の種類

権限タイプ

権限付与の要求

説明

サービスにリンクされたロール

初めてACKを使用する場合は、Alibaba CloudアカウントまたはRAMアカウント管理者で認証を完了する必要があります。

承認が完了すると、ACKは他のAlibaba Cloudサービスのリソースにアクセスできます。 ACKのロールの詳細については、「ACKロール」をご参照ください。

RAM の権限付与

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

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

RAM権限を使用すると、システムポリシーまたはカスタムポリシーをRAMユーザーまたはRAMロールにアタッチできます。 承認が完了した後にのみ、RAMユーザーまたはRAMロールはACKによって提供される機能を使用できます。

RBAC の権限

  • RAMユーザーまたはRAMロールにRBAC権限を付与する必要があります。

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

権限付与が完了して初めて、RAMユーザーまたはRAMロールはACK OneクラスターのKubernetesリソースを管理できます。

RAM の権限付与

企業がシステムをRAMとインターフェースする場合、O&MエンジニアはRAMユーザーまたはRAMロールを使用してクラウドリソースを管理する必要があります。 デフォルトでは、RAMユーザーまたはRAMロールにはクラウドサービスAPIを使用する権限がありません。 まず、RAMユーザーまたはRAMロールに必要な権限を付与する必要があります。 RAM権限を使用すると、システムポリシーまたはカスタムポリシーをRAMユーザーまたはRAMロールにアタッチできます。

クラスターのスケーリング、クラスターへのノードの追加、またはRAMユーザーとしてクラスターにアクセスする場合は、RAM権限付与を実行する必要があります。 詳細については、「カスタムRAMポリシーの作成」をご参照ください。

システムポリシーのアタッチ

この方法を使用して、RAMユーザーまたはRAMロールにグローバルリソースの読み取りおよび書き込み権限を付与できます。 システムポリシーを使用して、Alibaba Cloudに属するすべてのACKクラスターにO&M権限を付与することを推奨します。 RAMユーザーまたはRAMロールにシステムポリシーをアタッチする方法の詳細については、「RAMユーザーへの権限の付与」をご参照ください。

次の表に、ACKに関連する一般的に使用されるシステムポリシーを示します。 要件に基づいてシステムポリシーを選択できます。

システムポリシー

説明

AliyunCSFullAccess

このポリシーは、すべてのACK API操作を呼び出す権限を提供します。

説明

このポリシーは、ACKに関連する権限のみを提供します。 ACKクラスターでアプリケーションを管理する場合は、RBAC認証を実行する必要があります。 詳細については、「RBAC権限付与」をご参照ください。

AliyunVPCReadOnlyAccess

このポリシーは、作成するACKクラスターの仮想プライベートクラウド (VPC) を指定する権限を提供します。

AliyunECSReadOnlyAccess

このポリシーは、既存のノードをACKクラスターに追加したり、ノードに関する詳細情報を表示したりする権限を提供します。

AliyunContainerRegistryFullAccess

このポリシーは、Alibaba Cloudアカウントに属するすべてのイメージを管理する権限を提供します。

AliyunLogReadOnlyAccess

このポリシーには、作成するACKクラスターのログを保存する既存のログプロジェクトを選択したり、ACKクラスターの構成検査情報を表示したりする権限があります。

AliyunAHASReadOnlyAccess

このポリシーは、クラスタートポロジ機能を使用するための権限を提供します。

AliyunRAMFullAccess

このポリシーは、Alibaba Cloudアカウント内のすべての権限を管理する権限を提供します。

AliyunYundunSASReadOnlyAccess

このポリシーは、ACKクラスターのランタイムモニタリングデータを表示する権限を提供します。

AliyunARMSReadOnlyAccess

このポリシーは、ACKクラスターのManaged Service for Prometheusプラグインのモニタリングデータを表示するための権限を提供します。

AliyunKMSReadOnlyAccess

このポリシーは、作成するACK Proクラスターのシークレット暗号化機能を有効にする権限を提供します。

AliyunESSReadOnlyAccess

このポリシーは、ノードプールの表示、変更、スケーリングなどのノードプール操作を実行する権限を提供します。

カスタムポリシーのアタッチ

この方法を使用して、クラウドリソースに対するRAMユーザーまたはRAMロールの権限をきめ細かく制御できます。 RAMユーザーまたはRAMロールがSDKに基づいてアプリケーションを開発する必要がある場合は、カスタムポリシーを使用してAPI操作のアクセス許可を制御できます。

  • クラスターレベルのアクセス制御のためにRAMユーザーまたはRAMロールにカスタムポリシーをアタッチする方法の詳細については、「カスタムRAMポリシーの作成」をご参照ください。

  • アプリケーションレベルのアクセス制御を適用するには、RAM Roles for Service Accounts (RRSA) を使用してポッドのAPI権限制御を実行する必要があります。 詳細については、「RRSAを使用して異なるポッドに異なるクラウドサービスへのアクセスを許可する」をご参照ください。

  • たとえば、次のカスタムポリシーを使用して、Object Storage Service (OSS) バケットのRAMユーザーまたはRAMロールに読み取り権限を付与できます。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                          "oss:ListBuckets",
                          "oss:GetBucketStat",
                          "oss:GetBucketInfo",
                          "oss:GetBucketTagging",
                          "oss:GetBucketAcl" 
                          ],    
                "Resource": "acs:oss:*:*:*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:ListObjects",
                    "oss:GetBucketAcl"
                ],
                "Resource": "acs:oss:*:*:myphotos"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "oss:GetObject",
                    "oss:GetObjectAcl"
                ],
                "Resource": "acs:oss:*:*:myphotos/*"
            }
        ]
    }

RBAC認証

RAMポリシーは、ACKクラスターリソースに対する権限のみを制御できます。 ポッドとノード情報の取得など、RAMユーザーまたはRAMロールにACKクラスター内の指定されたKubernetesリソースの管理を許可するには、ACKコンソールの許可ページに移動し、クラスターリソースに対するRAMユーザーまたはRAMロールの権限を付与する必要があります。

事前定義済みロール

次の定義済みロールをRAMユーザーまたはRAMロールに割り当てることができます。 詳細については、「RAMユーザーまたはRAMロールへのRBAC権限の付与」をご参照ください。

次の表に、ロールの権限を示します。

ロール

クラスターリソースに対するRBAC権限

管理者

すべての名前空間のリソースに対する読み取りおよび書き込み権限。

O&Mエンジニア

すべての名前空間のコンソールで表示されるリソースに対する読み取りおよび書き込み権限と、ノード、PV、名前空間、およびクォータに対する読み取り専用権限。

開発者

指定された名前空間またはすべての名前空間のコンソールで表示されるリソースに対する読み取りおよび書き込み権限。

Restricted user

指定された名前空間またはすべての名前空間のコンソールで表示されるリソースに対する読み取り専用の権限。

カスタムロール

カスタムロールの権限は、選択したClusterRoleによって決まります。 ClusterRoleを選択する前に、ClusterRoleの権限を確認し、必要な権限のみをRAMユーザーまたはRAMロールに付与してください。 ClusterRolesの詳細については、「RBACロールのカスタマイズ」をご参照ください。

ロールとClusterRoles

RBACのRoleまたはClusterRoleには、一連の権限を表すルールが含まれています。 これらの権限には、操作を禁止するルールは含まれません。

Roleは名前空間リソースであり、特定の名前空間内の権限を定義します。 ロールを作成するときは、ロールが属する名前空間を指定する必要があります。

ClusterRoleは名前間隔のないリソースであり、クラスター全体のアクセス許可を定義します。 Kubernetesオブジェクトは名前空間または非名前空間である必要があるため、2種類のロールの名前は異なります。

ClusterRoleにはいくつかの用途があります。 ClusterRoleを使用して、次の方法で権限を設定できます。

  • ClusterRoleの名前空間リソースに対する権限を定義し、ClusterRoleを使用して個々の名前空間内の権限を付与します。

  • ClusterRoleの名前空間リソースに対する権限を定義し、ClusterRoleを使用してすべての名前空間に権限を付与します。

  • クラスタースコープのリソースに対する権限を定義します。

名前空間内でロールを定義する場合は、ロールを使用します。 クラスター全体のロールを定義する場合は、ClusterRoleを使用します。

Kubernetes ClusterRoleまたはRoleの作成方法の詳細については、「RBACロールのカスタマイズ」をご参照ください。

Kubernetesカスタム権限ポリシーをRAMユーザーまたはRAMロールにアタッチする方法の詳細については、「RAMユーザーまたはRAMロールにRBAC権限を付与する」をご参照ください。

重要

ACKを使用すると、ClusterRolesのみを使用してRBAC権限を付与できます。 ロールを使用してRBAC権限を付与することはできません。