Container Compute Service (ACS) は、2 レイヤーの権限付与モデルを採用しています。1 つ目は、クラウドリソースへのアクセスを制御する Resource Access Management (RAM)、2 つ目は、クラスター内の Kubernetes リソースへのアクセスを制御するロールベースのアクセス制御 (RBAC) です。本トピックでは、企業リソースマネージャー、Kubernetes クラスターアドミニストレーター、クラスターおよびアプリケーションの運用・保守 (O&M) エンジニア、アプリケーション開発者、権限管理者の 5 種類の役割に対する権限付与のベストプラクティスについて説明します。
権限付与システムの仕組み
ACS クラスターは、Container Service for Kubernetes (ACK) のサーバーレスクラスターの一種です。クラスターの O&M 操作(クラスターの作成、表示、削除)、RBAC の管理、ログおよびイベントのモニタリングなどはすべて ACK API を経由して実行されます。クラスターを管理する必要があるプリンシパルには、RAM を通じて関連する ACK API 権限を付与する必要があります。
その後、RBAC 権限付与により、そのプリンシパルがクラスター内で実行できる操作が制御されます。具体的には、ワークロード(Deployment、StatefulSet、Job、CronJob、Pod、ReplicaSet、HorizontalPodAutoscaler (HPA))、ネットワークリソース(Service、Ingress、NetworkPolicy)、ストレージリソース(永続ボリューム (PV)、永続ボリューム要求 (PVC)、StorageClass)、名前空間レベルのリソース(名前空間、ConfigMap、Secret)などの Kubernetes リソースの作成、削除、変更、表示が可能です。
RBAC 権限を付与する前に、必ず RAM 権限を付与してください。
ご使用のシナリオを特定する
権限付与が必要な役割を特定し、該当するセクションに進んでください。
| 役割 | 必要なタイミング | 参照先 |
|---|---|---|
| O&M エンジニア | プリンシパルは、ACS クラスターの管理(作成、スペックアップ、削除)およびそれら内部のアプリケーション リソースに対する操作を行う必要があります。 | シナリオ 1:O&M エンジニア |
| アプリケーション開発者 | プリンシパルがクラスター内の Kubernetes リソースを操作する必要があるが、クラスター自体の管理は行わない場合。 | シナリオ 2:アプリケーション開発者 |
| 権限管理者 | プリンシパルが他の RAM ユーザーまたは RAM ロールに対して RBAC 権限付与を管理する必要がある場合。 | シナリオ 3:権限管理者 |
システムデフォルトポリシー
ACS では、クイックセットアップのために以下のシステム権限付与ポリシーを提供しています。
システムデフォルトポリシーは広範な権限(ACK および ACS のすべての OpenAPI オペレーションに対する読み取りまたは書き込みアクセス)を付与します。これらのポリシーは慎重に使用してください。より限定的な権限が必要な場合は、特定のクラスター ARN にスコープを限定したカスタムポリシーを使用することを推奨します。
| ポリシー | 付与される権限 |
|---|---|
| AliyunAccFullAccess | ACS の完全管理権限 |
| AliyunAccReadOnlyAccess | ACS の読み取り専用権限 |
| AliyunCSFullAccess | ACK の完全管理権限(すべての ACS クラスターを含む) |
| AliyunCSReadOnlyAccess | ACK の読み取り専用権限(すべての ACS クラスターを含む) |
AliyunAccFullAccess
{
"Statement": [
{
"Effect": "Allow",
"Action": "acc:*",
"Resource": "*"
}
],
"Version": "1"
}
AliyunAccReadOnlyAccess
{
"Version": "1",
"Statement": [
{
"Action": [
"acc:Describe*",
"acc:CheckServiceRole"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
AliyunCSFullAccess
{
"Version": "1",
"Statement": [
{
"Action": "cs:*",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "ram:PassRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"acs:Service": "cs.aliyuncs.com"
}
}
}
]
}
AliyunCSReadOnlyAccess
{
"Version": "1",
"Statement": [
{
"Action": [
"cs:CheckServiceRole",
"cs:Get*",
"cs:List*",
"cs:Describe*"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
事前定義済み RBAC ロール
ACK では、クラスター単位で使用可能な 4 つの事前定義済み RBAC ロールが提供されています。これらのロールをアタッチすると、ACS は自動的にクラスター内に ClusterRoleBinding を作成し、RAM ユーザーまたは RAM ロールを該当ロールにマップします。
Alibaba Cloud アカウント(root アカウント)およびクラスター作成者は、デフォルトで cluster-admin ロールにバインドされており、クラスター内のすべての Kubernetes リソースオブジェクトに完全アクセスできます。
| ロール | 付与される権限 | 除外されるもの |
|---|---|---|
| 管理者 | すべての名前空間内のすべてのリソースに対する読み取りおよび書き込み権限 | — |
| O&M エンジニア | すべての名前空間内のコンソール表示対象 Kubernetes リソースに対する読み取りおよび書き込み権限;ノード、永続ボリューム (PV)、名前空間、リソースクォータに対する読み取り専用権限 | クラスターインフラストラクチャ(ノード、PV)に対する書き込み権限。この制限により、共有インフラストラクチャの誤削除を防止します。 |
| 開発者 | すべてまたは選択された名前空間内のコンソール表示対象 Kubernetes リソースに対する読み取りおよび書き込み権限 | ノード、永続ボリューム (PV)、名前空間、リソースクォータへのアクセス権限。開発者は、クラスターインフラストラクチャに影響を与えることなくアプリケーションワークロードを管理できます。 |
| 制限付きユーザー | すべてまたは選択された名前空間内のコンソール表示対象 Kubernetes リソースに対する読み取り専用権限 | 任意のリソースに対する書き込み権限 |
権限付与のベストプラクティス
シナリオ 1:O&M エンジニア
O&M エンジニアは、ACS クラスターの管理とクラスター内のアプリケーションリソースの操作を行います。この役割には、RAM 権限付与および RBAC 権限付与の両方が必要です。
ステップ 1:RAM 権限の付与
RAM コンソール から以下のいずれかのシステムポリシーをアタッチするか、細かい制御を可能にするカスタムポリシーを作成してください。
-
AliyunCSFullAccess— すべての ACK OpenAPI オペレーションに対する読み取りおよび書き込みアクセス -
AliyunCSReadOnlyAccess— すべての ACK OpenAPI オペレーションに対する読み取り専用アクセス
手順については、「RAM コンソールRAM ユーザーへの権限付与」および「RAM ロールへの権限付与」をご参照ください。
これらのシステムポリシーは、ACS クラスターを含むすべての ACK クラスターに適用されます。クラスター固有の権限を付与する場合は、acs:cs:*:*:cluster/<yourclusterID> にスコープを限定したカスタムポリシーを作成してください。
以下は、特定の ACS クラスターの管理(クラスターの作成、クラスター詳細の表示、アドオンの管理、ログのモニタリングなど)に必要な権限を付与する例です。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"acc:DescribeCommodityStatus",
"acc:CheckServiceRole",
"acc:DescribeCloudProducts",
"acc:DescribeRegions",
"acc:DescribeZones",
"acc:GetInstancePrice",
"acc:RecommendZones"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "bssapi:GetPayAsYouGoPrice",
"Resource": "*"
},
{
"Action": "ecs:DescribePrice",
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "ram:GetRole",
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"cs:CreateCluster",
"cs:DescribeAddons",
"cs:DescribeUserQuota",
"cs:DescribeTasks",
"cs:ListClusterAddonInstances"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"cs:GetClusters",
"cs:DescribeClustersV1",
"cs:DescribeClusterUserKubeconfig",
"cs:DescribeClusterResources",
"cs:DescribeUserQuota",
"cs:DescribeClusterLogs",
"cs:ModifyCluster",
"cs:UpgradeCluster",
"cs:GetUpgradeStatus",
"cs:ResumeUpgradeCluster",
"cs:PauseClusterUpgrade",
"cs:CancelClusterUpgrade",
"cs:InstallClusterAddons",
"cs:UpgradeClusterAddons",
"cs:DescribeClusterAddonsUpgradeStatus",
"cs:UnInstallClusterAddons",
"cs:DeleteCluster",
"cs:DescribeClusterDetail",
"cs:GetClusterAuditProject",
"cs:DescribeClusterAddonsVersion",
"cs:DescribeClusterTasks",
"cs:DescribeClusterEvents",
"cs:DescribeEvents",
"cs:ListClusterReportSummary",
"cs:GetClusterBasicInfo",
"cs:ListReportTaskRule",
"cs:CreateReportTaskRule",
"cs:CheckControlPlaneLogEnable",
"cs:CreateClusterCheck"
],
"Effect": "Allow",
"Resource": "acs:cs:*:*:cluster/<yourclusterID>"
},
{
"Action": [
"cs:CheckServiceRole",
"cs:DescribeKubernetesVersionMetadata"
],
"Effect": "Allow",
"Resource": "acs:cs:*:*:cluster/*"
},
{
"Action": [
"log:ListProject"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"vpc:ListEnhanhcedNatGatewayAvailableZones",
"vpc:DescribeEipAddresses",
"vpc:DescribeVSwitches"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
<yourclusterID> をご利用の ACS クラスター ID に置き換えてください。
ACK OpenAPI の詳細については、「[製品変更]Container Service の OpenAPI 認証最適化に関するお知らせ」および「API の概要」をご参照ください。
ステップ 2:RBAC 権限の付与
-
Container Compute Service コンソール で、左側のナビゲーションウィンドウから 権限付与 をクリックします。
-
RAM ユーザー または RAM ロール タブで、権限付与対象を検索し、権限の変更 をクリックします。
-
ダイアログボックスで、権限の追加 をクリックし、対象クラスターおよび名前空間のロールを O&M エンジニア に設定して、送信 をクリックします。
詳細な RBAC 制御が必要な場合は、カスタム ClusterRole を作成してください(「RBAC」を参照)。その後、権限付与 ページで カスタム を選択し、ドロップダウンリストから ClusterRole 名を選択します。詳細については、「カスタム RBAC 権限付与ポリシーの作成」をご参照ください。
事前定義済みの O&M エンジニアロール (cs:ops) は、以下の ClusterRole 権限を付与します。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cs:ops
rules:
- apiGroups: [""]
resources: ["pods", "pods/attach", "pods/exec", "pods/portforward", "pods/proxy"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: [""]
resources: ["configmaps", "endpoints", "persistentvolumeclaims", "replicationcontrollers", "replicationcontrollers/scale", "secrets", "serviceaccounts", "services", "services/proxy"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: [""]
resources: ["bindings", "events", "limitranges", "namespaces/status", "replicationcontrollers/status", "pods/log", "pods/status", "resourcequotas", "resourcequotas/status", "componentstatuses"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["namespaces", "nodes", "persistentvolumes"]
verbs: ["get", "list", "watch", "patch"]
- apiGroups: ["coordination.k8s.io"]
resources: ["leases"]
verbs: ["get"]
- apiGroups: ["apps"]
resources: ["daemonsets", "deployments", "deployments/rollback", "deployments/scale", "replicasets", "replicasets/scale", "statefulsets"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["autoscaling"]
resources: ["horizontalpodautoscalers"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["batch"]
resources: ["cronjobs", "jobs"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["extensions"]
resources: ["daemonsets", "deployments", "deployments/rollback", "deployments/scale","ingresses","replicasets", "replicasets/scale", "replicationcontrollers/scale"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["servicecatalog.k8s.io"]
resources: ["clusterserviceclasses", "clusterserviceplans", "clusterservicebrokers", "serviceinstances", "servicebindings"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
- apiGroups: ["servicecatalog.k8s.io"]
resources: ["clusterservicebrokers/status", "clusterserviceclasses/status", "clusterserviceplans/status", "serviceinstances/status", "serviceinstances/reference", "servicebindings/status",]
verbs: ["update"]
- apiGroups: ["storage.k8s.io"]
resources: ["storageclasses"]
verbs: ["get", "list", "watch"]
- apiGroups: ["alicloud.com"]
resources: ["*"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
- apiGroups: ["policy"]
resources: ["poddisruptionbudgets"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["metrics.k8s.io"]
resources: ["pods"]
verbs: ["get", "watch", "list"]
- apiGroups: ["networking.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["config.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["rbac.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["istio.alibabacloud.com"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["authentication.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["log.alibabacloud.com"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["monitoring.kiali.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["kiali.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["serving.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["eventing.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["messaging.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["sources.eventing.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["tekton.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["alert.alibabacloud.com"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
シナリオ 2:アプリケーション開発者
アプリケーション開発者は、クラスター内の Kubernetes リソースを操作しますが、クラスター自体の管理は行いません。この役割には、対象クラスターに対する読み取り専用 RAM 権限と RBAC 権限付与のみが必要です。
RBAC 権限を付与する前に、権限付与対象には対象クラスターに対する最低限の読み取り専用 RAM 権限が付与されている必要があります。AliyunCSReadOnlyAccess は、すべての ACK クラスターに対する読み取り専用アクセスを許可するため、この目的には不適切であり、必要以上に広範な権限となります。代わりに、クラスター ARN を明示的に指定したカスタムポリシーを使用してください。
ステップ 1:RAM 権限の付与
対象クラスター ARN にスコープを限定したカスタムポリシーを作成し、RAM コンソール を通じて RAM ユーザーまたは RAM ロールにアタッチしてください。手順については、「RAM ユーザーまたは RAM ロールへの RAM 権限の付与」をご参照ください。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"acc:DescribeCommodityStatus",
"acc:CheckServiceRole",
"acc:DescribeCloudProducts",
"acc:DescribeRegions",
"acc:DescribeZones",
"acc:GetInstancePrice",
"acc:RecommendZones"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "bssapi:GetPayAsYouGoPrice",
"Resource": "*"
},
{
"Action": [
"cs:Get*",
"cs:List*",
"cs:Check*",
"cs:Describe*"
],
"Effect": "Allow",
"Resource": [
"acs:cs:*:*:cluster/<yourclusterID>"
]
},
{
"Action": [
"vpc:ListEnhanhcedNatGatewayAvailableZones",
"vpc:DescribeEipAddresses"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
<yourclusterID> をご利用の ACS クラスター ID に置き換えてください。
ステップ 2:RBAC 権限の付与
-
Container Compute Service コンソール で、左側のナビゲーションウィンドウから 権限付与 をクリックします。
-
RAM ユーザー または RAM ロール タブで、権限付与対象を検索し、権限の変更 をクリックします。
-
ダイアログボックスで、権限の追加 をクリックし、対象クラスターおよび名前空間のロールを 開発者 に設定して、送信 をクリックします。
事前定義済みロールをアタッチすると、ACS は自動的に権限付与対象の ClusterRoleBinding を作成します。事前定義済みの開発者ロール (cs:ns:dev) は、以下の ClusterRole 権限を付与します。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cs:ns:dev
rules:
- apiGroups: [""]
resources: ["pods", "pods/attach", "pods/exec", "pods/portforward", "pods/proxy"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: [""]
resources: ["configmaps", "endpoints", "persistentvolumeclaims", "replicationcontrollers", "replicationcontrollers/scale", "secrets", "serviceaccounts", "services", "services/proxy"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: [""]
resources: ["events", "replicationcontrollers/status", "pods/log", "pods/status"]
verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
resources: ["daemonsets", "deployments", "deployments/rollback", "deployments/scale", "replicasets", "replicasets/scale", "statefulsets"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["autoscaling"]
resources: ["horizontalpodautoscalers"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["batch"]
resources: ["cronjobs", "jobs"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["extensions"]
resources: ["daemonsets", "deployments", "deployments/rollback", "deployments/scale","ingresses","replicasets", "replicasets/scale", "replicationcontrollers/scale"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["networking.k8s.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["servicecatalog.k8s.io"]
resources: ["clusterserviceclasses", "clusterserviceplans", "clusterservicebrokers", "serviceinstances", "servicebindings"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
- apiGroups: ["servicecatalog.k8s.io"]
resources: ["clusterservicebrokers/status", "clusterserviceclasses/status", "clusterserviceplans/status", "serviceinstances/status", "serviceinstances/reference", "servicebindings/status",]
verbs: ["update"]
- apiGroups: ["alicloud.com"]
resources: ["*"]
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
- apiGroups: ["policy"]
resources: ["poddisruptionbudgets"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["networking.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["config.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["rbac.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["istio.alibabacloud.com"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["authentication.istio.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["log.alibabacloud.com"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["monitoring.kiali.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["kiali.io"]
resources: ["*"]
verbs: ["create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"]
- apiGroups: ["apiextensions.k8s.io"]
resources: ["customresourcedefinitions"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["serving.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["eventing.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["messaging.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["sources.eventing.knative.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["tekton.dev"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
- apiGroups: ["alert.alibabacloud.com"]
resources: ["*"]
verbs: ["get", "list", "create", "watch", "patch", "update", "delete", "deletecollection"]
シナリオ 3:権限管理者
権限管理者は、他の RAM ユーザーまたは RAM ロールに対する RBAC 権限付与を管理します。デフォルトでは、RAM ユーザーおよび RAM ロールは、他者への RBAC 権限付与を行う権限を持っていません。
RAM ユーザーが Container Compute Service コンソール の 権限付与 ページにアクセスし、「現在の RAM ユーザーアカウントには権限付与の管理権限がありません。Alibaba Cloud アカウント所有者または承認済みの RAM ユーザーに連絡して、権限を依頼してください」というメッセージが表示された場合、そのユーザーには必要な RAM または RBAC 管理者権限が付与されていません。
ステップ 1:RAM 権限の付与
権限管理者には、以下のすべての操作を行うための RAM 権限が必要です。
-
他の RAM ユーザーまたは RAM ロールの一覧表示
-
指定された RAM ユーザーまたは RAM ロールへの RAM 権限付与ポリシーのアタッチ
-
指定された RAM ユーザーまたは RAM ロールの Kubernetes RBAC 権限構成の表示
-
Kubernetes RBAC 権限付与の実行
これらの権限を含むカスタムポリシーを RAM コンソール からアタッチしてください。手順については、「RAM ユーザーまたは RAM ロールへの RAM 権限の付与」をご参照ください。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"acc:DescribeCommodityStatus",
"acc:CheckServiceRole",
"acc:DescribeCloudProducts",
"acc:DescribeRegions",
"acc:DescribeZones",
"acc:GetInstancePrice",
"acc:RecommendZones"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "bssapi:GetPayAsYouGoPrice",
"Resource": "*"
},
{
"Action": [
"ram:Get*",
"ram:List*",
"cs:GetUserPermissions",
"cs:GetSubUsers",
"cs:GrantPermission",
"cs:CheckServiceRole"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"ram:AttachPolicyToUser",
"ram:AttachPolicyToRole"
],
"Effect": "Allow",
"Resource": [
"acs:ram:*:*:policy/xxxx",
"acs:*:*:*:user/*"
]
},
{
"Action": [
"vpc:ListEnhanhcedNatGatewayAvailableZones",
"vpc:DescribeEipAddresses"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}
acs:ram:*:*:policy/xxxx 内の xxxx は、管理者がアタッチできる RAM ポリシーの名前に置き換えてください。ワイルドカード * を使用すると、管理者は任意の RAM ポリシーをアタッチできます。
ステップ 2:RBAC 権限の付与
-
Container Compute Service コンソール で、左側のナビゲーションウィンドウから 権限付与 をクリックします。
-
RAM ユーザー または RAM ロール タブで、権限付与対象を検索し、権限の変更 をクリックします。
-
ダイアログボックスで、権限の追加 をクリックし、対象クラスターおよび名前空間のロールを 管理者 または cluster-admin カスタムロールに設定して、送信 をクリックします。
これらの RAM および RBAC 権限を付与すると、権限管理者は、定義された範囲内で他の RAM ユーザーまたは RAM ロールに対する RBAC 権限付与を管理できるようになります。詳細については、「RAM ユーザーまたは RAM ロールへの RAM 権限の付与」をご参照ください。
権限付与アクションのリファレンス
以下の表では、上記のポリシー例で使用される主要な権限付与アクションについて説明します。
| アクション | 説明 |
|---|---|
acc:CheckServiceRole |
アカウントが、クラウドリソースへのアクセスを許可するためにプロダクトに ServiceRole を引き受ける権限を付与しているかどうかを確認します |
acc:DescribeCommodityStatus |
ACS がアカウントで有効化されているかどうかを確認します |
bssapi:GetPayAsYouGoPrice |
従量課金制プロダクトの価格を照会します |
ram:ListUserBasicInfos |
すべての RAM ユーザーの基本情報を照会します |
ram:ListRoles |
すべての RAM ロールの基本情報を照会します |
1. ACK の権限付与アクションの完全な説明については、「権限付与情報」をご参照ください。2. 権限付与ポリシーを作成する際は、最小権限の原則 (PoLP) を遵守し、製品ドキュメントでサポートされているアクションを確認してください。「権限付与情報」をご参照ください。3. 対象クラスター ID を指定せず、権限付与スコープを * に設定した場合、すべての ACK クラスター(ACS クラスターを除く)に対する操作権限が付与されます。これらの権限は慎重に付与してください。