ロールベースのアクセス制御(RBAC)は、ユーザーのロールに基づいてリソースへのアクセスを制御します。ロールとクラスタロールを使用して、管理できるリソースオブジェクトを指定できます。ロールバインディングとクラスタロールバインディングを使用して、ロールを特定のユーザーにバインドできます。このようにして、異なるユーザーが Kubernetes リソースに対して異なる権限を持つことができます。Resource Access Management(RAM)権限を RAM ユーザーまたは RAM ロールに付与した後、デプロイメントやサービスの作成など、クラスタ内の Kubernetes リソースに対して操作を実行する前に、RAM ユーザーまたは RAM ロールに RBAC 権限も付与する必要があります。
RBAC のしくみ
Kubernetes RBAC は、RBAC ロールを RAM ユーザーまたは RAM ロールにバインドするために使用できる以下のリソースオブジェクトを提供します。Kubernetes RBAC は許可権限のみをサポートします。ClusterRole と Role の構成方法の詳細については、「カスタム RBAC ロールを使用して RAM ユーザーまたは RAM ロールの権限を制限する」をご参照ください。
Role: Role は、特定の名前空間内の権限を定義します。
RoleBinding: RoleBinding は、Role をユーザーにバインドするために使用されます。
ClusterRole: ClusterRole は、クラスタ全体の権限を定義します。
ClusterRoleBinding: ClusterRoleBinding は、ClusterRole をユーザーにバインドするために使用されます。
前提条件
RAM ユーザーまたは RAM ロールには、指定されたクラスタに対する RAM 権限が付与されています。次の表にポリシーを示します。詳細については、「カスタムポリシーのアタッチ」をご参照ください。
権限付与の使用上の注意
Alibaba Cloud アカウントは、すべてのクラスタですべての操作を実行できます。RAM ユーザーまたは RAM ロールは、作成したクラスタですべての操作を実行できます。クラスタの作成者ではない RAM ユーザーまたは RAM ロールがクラスタを管理するには、追加の RAM 権限と RBAC 権限が必要です。
手順
ACK は、管理者、読み取り専用管理者、O&M エンジニア、開発者、制限付きユーザーという事前定義済みの RBAC ロールを提供します。これらのロールを使用して、ほとんどのシナリオで ACK コンソールへのアクセスを制御できます。カスタム RAM ユーザーまたは RAM ロールの構成方法の詳細については、「カスタム RBAC を使用してクラスター内のリソース操作を制限する」をご参照ください。
以下のタイプのアカウントのみが、他の RAM ユーザーまたは RAM ロールに RBAC 権限を付与できます。
Alibaba Cloud アカウント。
管理者権限を持つ RAM ユーザーまたは RAM ロール。
Alibaba Cloud アカウントを使用して RBAC 権限を付与する
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[権限付与] をクリックします。
[権限付与] ページで、権限を付与します。
RAM ユーザーに権限を付与する
[RAM ユーザー] タブをクリックし、リストで管理する RAM ユーザーを探し、[権限の変更] をクリックして [権限管理] パネルを開きます。複数の RAM ユーザーを選択して権限を付与することもできます。
RAM ロールに権限を付与する
[RAM ロール] タブをクリックし、RAM ロールの名前 を指定して、[権限の変更] をクリックして [権限管理] パネルを開きます。
説明RAM ロールを手動で入力するか、ドロップダウンリストから RAM ロールを選択できます。RAM ロールの名前 フィールドの横にある空白のボックスをクリックできます。既存の RAM ロールのリストが表示されます。次に、リストから既存の RAM ロールを選択して権限を付与します。
[権限の追加] をクリックし、RAM ユーザーまたは RAM ロールの [クラスタ]、[名前空間]、および権限管理パラメータを構成し、[送信] をクリックします。
説明1 つの事前定義済みのロールと、クラスタまたは名前空間の複数のカスタムロールを、RAM ユーザーまたは RAM ロールに割り当てることができます。この場合、付与される権限は、複数のロールによって提供される権限の和集合です。
RAM ユーザーまたは RAM ロールにすべてのクラスタ(新しく作成されたクラスタを含む)を管理する権限を付与する必要がある場合は、事前定義済みのロールを RAM ユーザーまたは RAM ロールに割り当てるときに、[クラスタ] 列で [すべてのクラスタ] を選択します。
読み取り専用管理者権限は、単一のクラスタにのみ付与でき、すべてのクラスタの選択はサポートされていません。
事前定義済みのロール
クラスタリソースに対する RBAC 権限
管理者
すべての名前空間のリソースに対する RBAC の読み取りおよび書き込み権限、ノード、ボリューム、名前空間、クォータに対する読み取りおよび書き込み権限。
読み取り専用管理者
すべての名前空間の Kubernetes リソースに対する RBAC 読み取り専用権限。
O&M エンジニア
すべての名前空間のコンソールに表示される Kubernetes リソースに対する読み取りおよび書き込み権限、ノード、永続ボリューム(PV)、名前空間、クォータに対する読み取り専用権限。
開発者
すべての名前空間または指定された名前空間のコンソールに表示される Kubernetes リソースに対する RBAC の読み取りおよび書き込み権限。
制限付きユーザー
すべての名前空間または指定された名前空間のコンソールに表示される Kubernetes リソースに対する RBAC 読み取り専用権限。
カスタム
カスタム ロールの権限は、選択したクラスター ロールによって決まります。クラスター ロールを選択する前に、クラスター ロールの権限を確認し、RAM ユーザーまたは RAM ロールに必要な権限のみを付与するようにしてください。カスタム RAM ユーザーまたは RAM ロールの構成方法の詳細については、「カスタム RBAC を使用してクラスター内のリソース操作を制限する」をご参照ください。
重要RAM ユーザーまたは RAM ロールに cluster-admin ロールが割り当てられると、RAM ユーザーまたは RAM ロールは、RAM ユーザーまたは RAM ロールが属する Alibaba Cloud アカウントと同じ権限を持ちます。RAM ユーザーまたは RAM ロールは、クラスタ内のすべてのリソースを完全に制御できます。cluster-admin ロールを RAM ユーザーまたは RAM ロールに割り当てる場合は注意してください。
RAM ユーザーまたは RAM ロールを使用して RBAC 権限を付与する
Alibaba Cloud アカウントは、アカウント内のリソースに対する完全な管理権限を持っています。新しいまたは既存の RAM ユーザーまたは RAM ロールに、以下の RAM 権限と RBAC 権限を付与することもできます。その後、RAM ユーザーまたは RAM ロールが権限管理者として設定され、RAM ユーザーまたは RAM ロールを使用して他の RAM ユーザーまたは RAM ロールに RBAC 権限を付与できます。
手順 1: RAM ユーザーまたは RAM ロールを権限管理者として指定する
1. RAM 権限付与権限を付与する権限
システムポリシーを使用する
Alibaba Cloud アカウントを使用して RAM コンソール にログインし、権限管理者として設定する RAM ユーザーまたは RAM ロールを探します。
RAM ユーザー
RAM コンソールの左側のナビゲーションウィンドウで、
を選択します。使用する RAM ユーザーを探し、[アクション] 列の [権限の追加] をクリックします。RAM ロール
RAM コンソールの左側のナビゲーションウィンドウで、
を選択します。使用する RAM ロールを探し、[アクション] 列の [権限の追加] をクリックします。
[権限の付与] パネルで、アカウント[リソーススコープ] に ポリシーシステム ポリシーAliyunRAMFullAccessAliyunCSFullAccess[権限の付与] を選択します。 フィールドのドロップダウンリストから を選択し、 ポリシーと ポリシーを探して選択します。 をクリックして、パネルを閉じます。
重要AliyunRAMFullAccess ポリシーは、高リスクの権限です。権限を付与する際は注意してください。詳細な権限付与については、「カスタムポリシーを使用した詳細な権限」をご参照ください。
カスタムポリシーを使用した詳細な権限
デフォルトでは、RAM ユーザーまたは RAM ロールは、他の RAM ユーザーまたは RAM ロールに RBAC 権限を付与できません。RAM ユーザーまたはロールを介して他のアカウントに RBAC 権限を付与するには、Alibaba Cloud アカウント、またはすべてのクラスタの RBAC 管理者ロールを持つ RAM ユーザーを使用して、必要な RAM 権限と RBAC 権限を付与する必要があります。
同じ Alibaba Cloud アカウントに属する他の RAM ユーザーを表示する権限。
他の RAM ユーザーに RAM ポリシーをアタッチする権限。
ACK クラスタに関する情報を表示する権限。
RBAC ロールの権限を表示する権限。
他の RAM ユーザーに RBAC ロールを割り当てる権限。
RAM コンソール にログインし、次のサンプルコードを使用して、必要な権限を RAM ユーザーまたは RAM ロールに付与します。詳細については、「カスタムポリシーのアタッチ」をご参照ください。
xxxxxx
は、RAM ユーザーまたは RAM ロールが他の RAM ユーザーにアタッチすることを承認する RAM ポリシーの名前に置き換えます。xxxxxx をアスタリスク(*)に置き換えると、RAM ユーザーまたは RAM ロールはすべての RAM ポリシーを他の RAM ユーザーまたは RAM ロールにアタッチする権限を持ちます。
{
"Statement": [{
"Action": [
"ram:Get*",
"ram:List*",
"cs:Get*",
"cs:Describe*",
"cs:List*",
"cs:GrantPermission"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:AttachPolicyToUser",
"ram:AttachPolicy" // RAM ロールにポリシーをアタッチするために必要です。
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxxxx", // RAM ポリシーを指定します。
"acs:*:*:*:user/*" // RAM ユーザーを指定します。
]
}
],
"Version": "1"
}
2. RBAC 管理者権限を付与する権限
Alibaba Cloud アカウントで ACK コンソール にログインします。次に、すべてのクラスタの [管理者] ロールを RAM ユーザーまたは RAM ロールに割り当てます。詳細については、「Alibaba Cloud アカウントを使用して RBAC 権限を付与する」をご参照ください。
上記の RAM 権限と RBAC 権限が付与されると、承認された RAM ユーザーまたは RAM ロールが権限管理者として設定されます。それらを使用して、他の RAM ユーザーまたは RAM ロールに RAM 権限と RBAC 権限を付与できます。
RAM ユーザーまたは RAM ロールに管理者権限が付与されている場合、RAM ユーザーまたは RAM ロールは他の RAM ユーザーまたは RAM ロールにすべてのクラスタ全体の権限を付与できます。新しいクラスタは、既存の ClusterRole に自動的にバインドされます。
手順 2: 他の RAM ユーザーまたは RAM ロールに RBAC 権限を付与する
RAM ユーザーまたは RAM ロールに管理者権限が付与されている場合は、RAM コンソールにログインして、他の RAM ユーザーまたは RAM ロールに RBAC 権限を付与できます。操作は、Alibaba Cloud アカウントを使用して RBAC 権限を付与する場合と同じです。詳細については、「Alibaba Cloud アカウントを使用して RBAC 権限を付与する」をご参照ください。
権限不足のエラーコード
ACK コンソールを使用する場合、または ACK API を呼び出して操作を実行する場合に、必要な権限がないと、コンソールまたは API は、必要な権限を示すエラーコードを返します。次の表に、クラスタに必要な RBAC 権限を示すエラーコードを示します。
エラーコードまたはエラーメッセージ | 解決策 |
ForbiddenCheckControlPlaneLog | ユーザーに管理者または O&M エンジニアの権限を付与します。 |
ForbiddenHelmUsage | ユーザーに管理者権限を付与します。 |
ForbiddenRotateCert | ユーザーに管理者権限を付与します。 |
ForbiddenAttachInstance | ユーザーに管理者または O&M エンジニアの権限を付与します。 |
ForbiddenUpdateKMSState | ユーザーに管理者または O&M エンジニアの権限を付与します。 |
Forbidden get trigger | ユーザーに管理者、O&M エンジニア、または開発者の権限を付与します。 |
ForbiddenQueryClusterNamespace | ユーザーに管理者、O&M エンジニア、開発者、または制限付きユーザーの権限を付与します。 |
関連情報
定義済みのロールが要件を満たしていない場合は、カスタム RAM ユーザーまたは RAM ロールを設定できます。詳細については、「カスタム RBAC を使用してクラスター内のリソース操作を制限する」をご参照ください。
RAM ユーザーまたは RAM ロールにクラスタとアプリケーションを管理および保守する権限を付与するには、RAM 権限付与と RBAC 権限付与を順番に実行する必要があります。
O&M エンジニアに権限を付与するには、「シナリオ 2: O&M エンジニアにクラスタとアプリケーションを管理する権限を付与する」をご参照ください。
開発者に権限を付与するには、「シナリオ 3: 開発者にクラスタとアプリケーションを管理する権限を付与する」をご参照ください。
権限管理者に権限を付与するには、「シナリオ 4: 権限管理者に RAM ユーザーと RAM ロールの権限を管理する権限を付与する」をご参照ください。
ACK ロールの詳細については、「ACK ロール」をご参照ください。
詳細については、「権限管理に関するよくある質問」をご参照ください。