ラベルは、管理を容易にするためにリソースを識別、分類、または分類するために使用できます。 Resource Access Management (RAM) では、ポリシーに基づいてユーザーIDとリソースアクセスおよび操作権限を管理できます。 RAMポリシーの条件としてラベルを使用して、リソースにきめ細かいアクセス制御を実装できます。 ラベルを使用してクラスターリソースを分類し、RAMポリシーの条件としてラベルを使用して、きめ細かいアクセス制御を実装できます。 これにより、異なるユーザーに異なるContainer Service for Kubernetes (ACK) クラスター権限が付与されます。
次の図は、ラベルを使用してRAMユーザーの権限を管理する方法を示しています。
前提条件
RAM ユーザーを作成します。 詳細については、「RAM ユーザーの作成」をご参照ください。
シナリオ
このトピックの手順では、認証にラベルを使用する方法について説明します。 次の要件を満たすシナリオが使用されます。
手順
この手順では、Alibaba Cloudアカウントを使用してUseTagAccessResという名前のカスタムポリシーが作成され、RAMユーザーuserTestにアタッチされます。 UseTagAccessResポリシーは、RAMユーザーがtest:foo
ラベルを持つACKクラスターにのみアクセスおよび管理できることを指定します。
にログインします。RAMコンソールAlibaba Cloudアカウントを使用します。
説明Alibaba Cloudアカウントには、アカウント内のリソースに対する完全な管理権限があります。 RAMユーザーを作成し、RAMユーザーにAdministratorAccessポリシーをアタッチできます。 その後、RAMユーザーをアカウント管理者として使用して、Alibaba cloudアカウントに属するすべてのクラウドリソースを管理できます。 詳細については、「アカウント管理者としてのRAMユーザーの作成」をご参照ください。
UseTagAccessResという名前のカスタムポリシーを作成します。
詳細については、「カスタマイズポリシーの作成」をご参照ください。 この例では、アクセス許可を制御するために、カスタムポリシーの
Condition
要素でクラウドリソースに複数のラベル固有の条件を設定できます。 ラベル固有の条件を次の表に示します。ラベルベースの条件
説明
acs:RequestTag
各APIリクエストにラベルを含める必要があることを指定します。
APIリクエストパラメーターを使用してラベルを指定できない場合、
acs:RequestTag
条件は使用できません。 そうでない場合、認証は失敗します。acs:ResourceTag
リソースに指定されたラベルが必要であることを指定します。
APIリクエストパラメーターを使用してリソースIDを指定できない場合、
acs:ResourceTag
条件は使用できません。 そうでない場合、認証は失敗します。次のコードブロックは、さまざまなシナリオに適用されるカスタムポリシーの内容を示しています。
重要次のサンプルポリシーをテンプレートとして使用し、テンプレートを変更するときに最小権限の原則に従うことができます。
RAMユーザーが
test:foo
ラベルを持たないACKクラスターを作成することを禁止します。 RAMユーザーがACKクラスターを作成する場合、RAMユーザーはtest:foo
ラベルをクラスターに追加する必要があります。{ "Statement": [ { "Effect": "Allow", "Action": "cs:CreateCluster", "Resource": "*", "Condition": { "StringEquals": { "acs:RequestTag/test": "foo" } } }, { "Action": [ "cs:DescribeAddons", "cs:DescribeKubernetesVersionMetadata" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "vpc:Describe*", "vpc:List*", "log:List*", "log:Describe*", "cs:Get*", "cs:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
RAMユーザーが
test:foo
ラベルを持たないACKクラスターを管理することを禁止します。 これらのクラスターは他のユーザーによって作成されます。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/test": "foo" } } } ] }
RAMユーザーが特定のクエリAPIを呼び出し、
test:foo
ラベルを持つクラスターを表示できるようにします。{ "Version": "1", "Statement": [{ "Effect": "Allow", "Action": [ "cs:DescribeClustersV1", "cs:GetClusters" ], "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/test": "foo" } } }, { "Action": [ "cs:DescribeClusterAddonsVersion", "cs:DescribeClusterUserKubeconfig", "cs:DescribeClusterNodePools", "cs:DescribeClusterNodes", "cs:DescribeClusterLogs", "cs:DescribeClusterNodePoolDetail", "cs:DescribeEvents", "cs:DescribeClusterDetail", "cs:DescribeClusterAddonsUpgradeStatus", "cs:DescribeClusterNamespaces", "cs:DescribeAddons", "log:List*", "log:Describe*" ], "Effect": "Allow", "Resource": "*" } ] }
RAMユーザーがACKクラスターのラベルを変更することを禁止します。
{ "Version": "1", "Statement": [{ "Effect": "Deny", "Action": [ "cs:UntagResources", "cs:ListTagResources", "cs:TagResources", "cs:ModifyClusterTags" ], "Resource": "*" }] }
test:foo
ラベルがないACKクラスターでのロールベースのアクセス制御 (RBAC) 権限付与を禁止します。{ "Statement": [{ "Effect": "Allow", "Action": "cs:Get*", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag/test": "foo" } } }, { "Action": [ "ram:Get*", "ram:List*", "cs:DescribeAddons", "cs:DescribeKubernetesVersionMetadata", "cs:DescribeUserPermission", "cs:GrantPermission" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "ram:AttachPolicyToUser", "ram:AttachPolicyToRole" ], "Effect": "Allow", "Resource": [ "acs:ram:*:*:policy/xxxxxx", "acs:*:*:*:user/*" ] } ], "Version": "1" }
カスタムポリシーをRAMユーザーまたはRAMユーザーグループにアタッチします。
詳細については、「RAM ユーザーへの権限の付与」をご参照ください。 このステップでは、UseTagAccessResポリシーをRAMユーザーuserTestにアタッチします。
説明既存のRAMユーザーにUseTagAccessResポリシーをアタッチする場合、同じRAMユーザーにアタッチされた複数のポリシーが権限の問題を引き起こす可能性があることに注意してください。
結果を表示するView the result
カスタムポリシーがRAMユーザーにアタッチされると、RAMユーザーはtest:foo
ラベルを持つACKクラスターにのみアクセスおよび管理できます。 次のセクションでは、RAMユーザーがリソースにアクセスして管理する権限について説明します。
ACKクラスターの作成
RAMユーザーは、[クラスター設定] ウィザードページの [詳細オプション] セクションで
test:foo
ラベルをクラスターに追加した場合にのみ、ACKクラスターを作成できます。RAMユーザーがACKクラスターを作成するときにRAMユーザーが
test:foo
ラベルを追加しない場合、次のエラーメッセージが表示されます。
ACKクラスターの表示
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリストでACKクラスターを表示します。
test:foo
ラベルを持つクラスターがない場合、クラスターリストは空です。 クラスターは表示できません。RAMユーザーが
test:foo
ラベルをクラスターに追加すると、クラスターがクラスターリストに表示されます。
ラベルの変更
RAMユーザーはラベルを変更できません。 RAMユーザーがラベルを変更すると、次のエラーメッセージが表示されます。
権限付与の管理
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[権限付与] をクリックします。
[権限付与] ページで、[RAMユーザー] タブをクリックします。 権限を付与するRAMユーザーを見つけて、[操作] 列の [権限の管理] をクリックします。
On the権限管理ページを持つクラスターのみ
テスト: foo
ラベルが [クラスター] ドロップダウンリストに表示されます。