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操作のために名前空間レベルまたはクラスター全体の権限を付与するために使用されます。 |
|
RAMユーザーまたはRAMロールを使用してクラスターとクラスター内のアプリケーションを管理する場合は、RAMユーザーまたはRAMロールに対してRAM権限付与とRBAC権限付与の両方を実行する必要があります。 RBAC認証を実行する前に、RAM認証を完了する必要があります。 さまざまなシナリオで承認を完了するには、次のトピックを参照してください。
O&Mエンジニアに権限を付与するには、「シナリオ1: O&Mエンジニアにクラスターとアプリケーションを管理する権限を付与する」をご参照ください。
開発者に権限を付与するには、「シナリオ2: 開発者にクラスターとアプリケーションを管理する権限を付与する」をご参照ください。
権限管理者に権限を付与するには、「シナリオ3: 権限管理者にRAMユーザーとRAMロールの権限を管理する権限を付与する」をご参照ください。
RAMユーザーまたはRAMロールを削除しても、RAMユーザーまたはRAMロールのRBAC権限はACKクラスターのkubeconfigファイルから削除されません。 したがって、ユーザーのRAMユーザーまたはRAMロールを削除する前に、ユーザーのkubeconfigファイルを取り消す必要があります。 詳細については、「KubeConfig資格情報の取り消し」をご参照ください。
権限の種類
権限タイプ | 権限付与の要求 | 説明 |
サービスにリンクされたロール | 初めてACKを使用する場合は、Alibaba CloudアカウントまたはRAMアカウント管理者で認証を完了する必要があります。 | 承認が完了すると、ACKは他のAlibaba Cloudサービスのリソースにアクセスできます。 ACKのロールの詳細については、「ACKロール」をご参照ください。 |
RAM の権限付与 |
| RAM権限を使用すると、システムポリシーまたはカスタムポリシーをRAMユーザーまたはRAMロールにアタッチできます。 承認が完了した後にのみ、RAMユーザーまたはRAMロールはACKによって提供される機能を使用できます。 |
RBAC の権限 |
| 権限付与が完了して初めて、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権限を付与することはできません。