ロールベースのアクセス制御 (RBAC) は、ユーザーのロールに基づいてリソースへのアクセスを規制します。 ロールとClusterRolesを使用して、管理できるリソースオブジェクトを指定できます。 RoleBindingとClusterRoleBindingを使用して、ロールを特定のユーザーにバインドできます。 これにより、ユーザーによってKubernetesリソースに対する権限が異なります。 RAMユーザーまたはRAMロールにRAM (Resource Access Management) 権限を付与した後、クラスター内のKubernetesリソースに対してデプロイやサービスの作成などの操作を実行する前に、RAMユーザーまたはRAMロールにRBAC権限を付与する必要があります。
RBACの仕組み
Kubernetes RBACは、RBACロールをRAMユーザーまたはRAMロールにバインドするために使用できる次のリソースオブジェクトを提供します。 Kubernetes RBACは許可のみをサポートしています。 ClusterRolesとRolesを構成する方法の詳細については、「カスタムRBACロールを使用してRAMユーザーまたはRAMロールの権限を制限する」をご参照ください。
ロール: ロールは、特定の名前空間内の権限を定義します。
RoleBinding: RoleBindingは、ロールをユーザーにバインドするために使用されます。
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コンソールにログインします。 左側のナビゲーションウィンドウで、[権限付与] をクリックします。
On the承認ページ、権限を付与します。
RAM ユーザーへの権限付与
[RAMユーザー] タブをクリックし、リストで管理するRAMユーザーを見つけ、[権限の変更] をクリックして [権限管理] パネルを開きます。 複数のRAMユーザーを選択して権限を付与することもできます。
RAMロールに権限を付与する
[RAMロール] タブをクリックし、[RAMロール名] を指定し、[権限の変更] をクリックして権限管理パネルを開きます。
説明RAMロールを手動で入力するか、ドロップダウンリストからRAMロールを選択できます。 [RAMロール名] フィールドの横にある空白のボックスをクリックできます。 既存のRAMロールのリストが表示されます。 次に、リストから既存のRAMロールを選択して権限を付与します。
クリック権限の追加を設定し、クラスター,名前空間、およびRAMユーザーまたはRAMロールの権限管理パラメーターをクリックし、送信.
説明クラスターまたは名前空間の1つの定義済みロールと複数のカスタムロールをRAMユーザーまたはRAMロールに割り当てることができます。 この場合、付与される権限は、複数のロールによって提供される権限の和集合です。
RAMユーザーまたはRAMロールにすべてのクラスター (新しく作成されたクラスターを含む) を管理する権限を付与する必要がある場合は、RAMユーザーまたはRAMロールに定義済みロールを割り当てるときに、[クラスター] 列の [すべてのクラスター] を選択します。
事前定義済みロール
クラスターリソースに対する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権限の付与権限
システムポリシーを使用して権限を付与する
にログインします。RAMコンソールAlibaba Cloudアカウントを使用して、権限管理者として設定するRAMユーザーまたはRAMロールを見つけます。
RAM ユーザー
RAMコンソールの左側のナビゲーションウィンドウで、
を選択します。 使用するRAMユーザーを見つけて、[操作] 列の [権限の追加] をクリックします。RAM ロール
RAMコンソールの左側のナビゲーションウィンドウで、
を選択します。 使用するRAMロールを見つけて、[操作] 列の [権限の追加] をクリックします。
[権限の追加] パネルで、[権限付与済みスコープ] を設定し、[システムポリシー] を選択して、AliyunRAMFullAccessおよびAliyunCSFullAccessポリシーを検索します。 各ポリシーの名前をクリックして、ページの右側にある [選択済み] セクションにポリシーを移動します。 次に、[OK] をクリックします。 ポリシーがアタッチされたら、[完了] をクリックします。
重要AliyunRAMFullAccessポリシーはリスクの高い権限です。 権限を付与するときは注意してください。 きめ細かい権限付与の詳細については、「カスタムポリシーを使用してきめ細かい方法で権限を付与する」をご参照ください。
カスタムポリシーを使用して、きめ細かい方法で権限を付与する
デフォルトでは、RAMユーザーまたはRAMロールを使用して、他のRAMユーザーまたはRAMロールにRBAC権限を付与することはできません。 RAMユーザーまたはRAMロールに次の権限を付与する必要があります。
同じAlibaba Cloudアカウントに属する他のRAMユーザーを表示する権限。
RAMポリシーを他のRAMユーザーにアタッチする権限。
ACKクラスターに関する情報を表示するための権限。
RBACロールの権限を表示するための権限。
RBACロールを他のRAMユーザーに割り当てる権限。
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"
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxxxx",
"acs:*:*:*:user/*"
]
}
],
"Version": "1"
}
2. RBAC権限付与
上記のRAMおよびRBAC権限が付与されると、RAMユーザーまたはRAMロールが権限管理者として設定されます。 RAMユーザーまたはRAMロールを使用して、他のRAMユーザーまたはRAMロールにRAMおよびRBAC権限を付与できます。
RAMユーザーまたはRAMロールに管理者権限が付与されている場合、そのRAMユーザーまたはRAMロールは他のRAMユーザーまたはRAMロールにクラスター全体のすべての権限を付与できます。 新しいクラスターは、既存のClusterRolesに自動的にバインドされます。
手順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エンジニアの権限をユーザーに付与します。 |
禁断の取得トリガー | 管理者、O&Mエンジニア、または開発者の権限をユーザーに付与します。 |
ForbiddenQueryClusterNamespace | 管理者、O&Mエンジニア、開発者、または制限付きユーザーの権限をユーザーに付与します。 |
関連ドキュメント
定義済みのロールが要件を満たさない場合は、カスタムRAMユーザーまたはRAMロールを構成できます。 詳細については、「カスタムRBACを使用してクラスター内のリソース操作を制限する」をご参照ください。
RAMユーザーまたはRAMロールにクラスターとアプリケーションを管理および保守する権限を付与するには、RAM権限付与とRBAC権限付与を順番に実行する必要があります。
O&Mエンジニアに権限を付与するには、「シナリオ1: O&Mエンジニアにクラスターとアプリケーションを管理する権限を付与する」をご参照ください。
開発者に権限を付与するには、「シナリオ2: 開発者にクラスターとアプリケーションを管理する権限を付与する」をご参照ください。
権限管理者に権限を付与するには、「シナリオ3: 権限管理者にRAMユーザーとRAMロールの権限を管理する権限を付与する」をご参照ください。
ACKロールの詳細については、「ACKロール」をご参照ください。
権限付与に関連する問題の詳細については、「権限付与管理に関するFAQ」をご参照ください。