Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Best practices for authorization

Dernière mise à jour :Aug 11, 2026

Configurez les autorisations RAM et RBAC pour quatre rôles courants dans un cluster ACK.

Système d'autorisation

image

RAM authorization utilise des politiques système et personnalisées pour contrôler l'accès aux opérations API d'ACK et aux services Alibaba Cloud. Elle couvre :

  • La création, la consultation, la mise à niveau et la suppression de clusters

  • La création, la modification et le dimensionnement des pools de nœuds

  • La gestion des autorisations

  • La surveillance des clusters ainsi que la collecte des journaux et des événements

RBAC authorization contrôle l'accès aux ressources Kubernetes au sein d'un cluster via le RBAC Kubernetes. Il couvre les opérations d'ajout, de suppression, de modification et de requête sur :

  • Les charges de travail : Deployment, StatefulSet, DaemonSet, Job, CronJob, pod et ReplicaSet

  • Les ressources réseau : Service, Ingress et NetworkPolicy

  • Les ressources de stockage : volume persistant (PV), revendication de volume persistant (PVC) et StorageClass

  • Configuration : Namespace, ConfigMap et Secret

Prérequis

Vérifiez les points suivants :

Cas d'utilisation 1 : Autoriser les administrateurs en lecture seule

Attribuez le rôle RBAC prédéfini Read-only Administrator pour un accès en lecture seule aux ressources Kubernetes dans tous les namespaces. Aucune autorisation RAM n'est requise.

Attribuer le rôle Read-only Administrator

Console ACK

Consultez la documentation Accorder des autorisations RBAC à un utilisateur ou un rôle RAM.

CLI Alibaba Cloud

Appelez GrantPermissions en définissant role_name sur admin-view. Vérifiez avec DescribeUserPermission.

aliyun cs POST /permissions/users/234xxxxxxxx --header "Content-Type=application/json;" --body "[{\"cluster\":\"c24xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"is_custom\":false,\"role_name\":\"admin-view\",\"role_type\":\"cluster\"}]"

Terraform

resource "alicloud_cs_kubernetes_permissions" "default" {
  uid = alicloud_ram_user.user.id
  permissions {
    cluster     = alicloud_cs_managed_kubernetes.default.id
    role_type   = "cluster"
    role_name   = "admin-view"
    namespace   = ""
    is_custom   = false
    is_ram_role = false
  }
}

Cas d'utilisation 2 : Autoriser les ingénieurs O&M

Les ingénieurs O&M nécessitent à la fois des autorisations RAM et RBAC pour gérer les clusters et les applications.

Étape 1 : Autorisation RAM

ACK fournit deux politiques RAM gérées par le système :

|
**Politique**
|
**Niveau d'accès**
| | --- | --- | |
`AliyunCSFullAccess`
|
Accès complet en lecture/écriture à toutes les opérations API ACK
| |
`AliyunCSReadOnlyAccess`
|
Accès en lecture seule à toutes les opérations API ACK
|

Dans la console RAM, attachez la politique à l'utilisateur ou au rôle RAM. Consultez les rubriques Accorder des autorisations à un utilisateur RAM et Accorder des autorisations à un rôle RAM.

Pour un contrôle plus fin, créez une politique personnalisée. Consultez la rubrique Utiliser RAM pour accorder les autorisations d'accès aux clusters et aux ressources cloud. L'exemple suivant couvre toutes les opérations O&M. Pour chaque action, consultez la description des actions.

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cs:GetClusters",
        "cs:ModifyCluster",
        "cs:UpgradeCluster",
        "cs:DescribeClusterDetail",
        "cs:DescribeClusterVuls",
        "cs:DescribeClusterSecuritySummary",
        "cs:DescribeClusterUserKubeconfig",
        "cs:RevokeK8sClusterKubeConfig",
        "cs:CheckControlPlaneLogEnable",
        "cs:DescribeClusterResources",
        "cs:DescribeClusterEvents",
        "cs:DescribeClusterLogs",
        "cs:GetClusterAuditProject",
        "cs:ListClusterChecks",
        "cs:GetClusterCheck",
        "cs:RunClusterCheck",
        "cs:ModifyClusterAudit",
        "cs:DescribeResourcesDeleteProtection",
        "cs:UpdateResourcesDeleteProtection",
        "cs:DescribeClusterNodePools",
        "cs:DescribeClusterNodePoolDetail",
        "cs:CreateClusterNodePool",
        "cs:ModifyClusterNodePool",
        "cs:UpgradeClusterNodepool",
        "cs:DeleteClusterNodepool",
        "cs:CreateAutoscalingConfig",
        "cs:SyncClusterNodePool",
        "cs:RepairClusterNodePool",
        "cs:AttachInstancesToNodePool",
        "cs:ModifyNodePoolNodeConfig",
        "cs:DescribeClusterNodes",
        "cs:RemoveClusterNodes",
        "cs:RemoveNodePoolNodes",
        "cs:DiagnoseClustersNode",
        "cs:DescribeNodePoolVuls",
        "cs:FixNodePoolVuls",
        "cs:DrainNodes",
        "cs:DescribeClusterAddonMetadata",
        "cs:DescribeClusterAddonsVersion",
        "cs:InstallClusterAddons",
        "cs:UpgradeClusterAddons",
        "cs:ModifyClusterAddon",
        "cs:UnInstallClusterAddons",
        "cs:DescribeClusterAddonInstance",
        "cs:DescribeClusterAddonsUpgradeStatus",
        "cs:DescribeClusterAddonUpgradeStatus",
        "cs:ListClusterComponent",
        "cs:GetClusterComponent",
        "cs:DescribePolicyInstances",
        "cs:DeployPolicyInstance",
        "cs:ModifyPolicyInstance",
        "cs:DeletePolicyInstance",
        "cs:DescribePolicyGovernanceInCluster",
        "cs:DescribePolicyInstancesStatus",
        "cs:UpdateContactGroupForAlert",
        "cs:StartAlert",
        "cs:StopAlert",
        "cs:ListAlertRules",
        "cs:GetAlertHistory",
        "cs:DescribeClusterTasks",
        "cs:GetClusterBasicInfo",
        "cs:ListClusterReportSummary",
        "cs:GetClusterReportSummary",
        "cs:ListReportTaskRule",
        "cs:CreateTrigger",
        "cs:DescribeKubernetesClusterHookTrigger",
        "cs:CreateDiagnose",
        "cs:CreateClusterOverviewReport",
        "cs:GetAIDiagnosisResult",
        "cs:CreateReportTaskRule",
        "cs:CreateClusterReport",
        "cs:GetClusterCheckResult",
        "cs:GetClusterServices",
        "cs:UpdateControlPlaneLog",
        "cs:UpdateClusterName"
      ],
      "Resource": "acs:cs:*:*:cluster/xxxxx"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cs:DescribeSubAccountHelmPermission",
        "cs:CheckServiceRole",
        "cs:DeleteTriggerHook",
        "cs:QueryAlertContact",
        "cs:QueryAlertContactGroup",
        "cs:AddOrUpdateAlertContact",
        "cs:AddOrUpdateAlertContactGroup",
        "cs:DeleteAlertContact",
        "cs:DeleteAlertContactGroup",
        "cs:DescribeKubernetesVersionMetadata",
        "cs:ListOperationPlans",
        "cs:DescribeClusterEndpoints",
        "cs:DescribeTaskInfo",
        "cs:DescribeEvents",
        "cs:DescribeUserQuota",
        "cs:DescribeTasks",
        "cs:PauseTask",
        "cs:CancelTask",
        "cs:DescribeAddons",
        "cs:DeleteReportTaskRule",
        "cs:CreateSessionMessage",
        "cs:DescribePolicies",
        "cs:DescribePolicyDetails"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "vpc:DescribeVSwitches",
        "vpc:DescribeVpcs",
        "vpc:DescribeEipAddresses"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "kms:ListKeys",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "arms:ListDashboards",
        "arms:InstallAddon"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudshell:CreateEnvironment",
        "cloudshell:AttachStorage",
        "cloudshell:DetachStorage",
        "cloudshell:CreateSession"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ess:DescribeScalingActivities",
        "ess:DescribeScalingActivityDetail",
        "ess:DescribeLifecycleActions"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "oos:ListExecutions",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeKeyPairs",
        "ecs:DescribeInstances",
        "ecs:DescribeSecurityGroups",
        "ecs:DescribeImages",
        "ecs:DescribePrice"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cr:ListInstance",
        "cr:ListInstanceDomain",
        "cr:ListRepository",
        "cr:ListArtifactTag"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "ram:GetRole",
      "Resource": "acs:ram:*:*:role/aliyuncisdefaultrole"
    },
    {
      "Effect": "Allow",
      "Action": [
        "log:GetDashboard",
        "log:GetSavedSearch",
        "log:GetLogStore",
        "log:GetIndex",
        "log:UpdateIndex",
        "log:GetLogStoreLogs",
        "log:CreateDashboardSharing",
        "log:ListProject",
        "log:GetProjectLogs",
        "log:GetResourceRecord",
        "log:CreateResourceRecord",
        "log:UpdateResourceRecord"
      ],
      "Resource": "*"
    }
  ]
}
Remplacez xxxxx dans acs:cs:*:*:cluster/xxxxx par l'ID de votre cluster.

Pour les actions API ACK, consultez [[Modifications du produit] L'API ACK améliore l'authentification des utilisateurs](t2103012.dita#task_2103012) et Liste des opérations par fonction.













Étape 2 : Autorisation RBAC

Après l'autorisation RAM, attribuez un rôle RBAC prédéfini. Le tableau suivant décrit tous les rôles prédéfinis et leur portée.

|
**Rôle prédéfini**
|
**Autorisations RBAC sur les ressources du cluster**
|
**Cas d'utilisation**
| | --- | --- | --- | |
**Administrator**
|
Accès complet en lecture/écriture à toutes les ressources Kubernetes dans tous les namespaces, ainsi qu'aux ressources au niveau du cluster : nœuds, PV, namespaces et quotas de ressources
|
Accès illimité au cluster. Pour la gestion des autorisations, attribuez le `cluster-admin` ClusterRole sous **Custom**.
| |
**Read-only Administrator**
|
Accès en lecture seule à toutes les ressources Kubernetes dans tous les namespaces, ainsi qu'aux ressources au niveau du cluster : nœuds, PV, namespaces et quotas de ressources
|
Visibilité à l'échelle du cluster sans accès en écriture.
| |
**O&M Engineer**
|
Accès en lecture/écriture à toutes les ressources visibles dans la console dans tous les namespaces ; accès en lecture et mise à jour aux nœuds, PV et namespaces ; accès en lecture seule à toutes les autres ressources
|
Opérations quotidiennes sur le cluster. Aucune gestion des autorisations.
| |
**Developer**
|
Accès en lecture/écriture aux ressources visibles dans la console, limité à tous les namespaces ou à un ensemble spécifié
|
Déploiement et gestion des applications. Peut être limité à des namespaces spécifiques.
| |
**Restricted User**
|
Accès en lecture seule aux ressources visibles dans la console, limité à tous les namespaces ou à un ensemble spécifié
|
Accès en consultation seule pour les développeurs ou les opérateurs.
| |
**Custom**
|
Déterminé par le ClusterRole que vous sélectionnez. Vérifiez les autorisations avant l'attribution. Consultez [Utiliser des rôles RBAC personnalisés pour restreindre les opérations sur les ressources dans un cluster](t16637.dita#task_1664328).
|
Contrôle d'accès granulaire au-delà des rôles prédéfinis.
|
Important

L'attribution du cluster-admin ClusterRole accorde les mêmes autorisations que le compte Alibaba Cloud, c'est-à-dire un contrôle total sur toutes les ressources du cluster. Soyez prudent.

Pour attribuer un rôle dans la console :

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Custom.

  2. Sur la page O&M Engineer, cliquez sur l'onglet Developer ou Custom. Recherchez la cible et cliquez sur Authorizations.

  3. Cliquez sur Authorizations, sélectionnez RAM Users pour le cluster et le namespace cibles, puis cliquez sur RAM Roles.

RBAC

ACK crée automatiquement un ClusterRoleBinding. Voici la définition du ClusterRole pour le rôle Ingénieur O&M (cs:ops) :

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", "nodes"]
  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"]

Pour un contrôle plus fin, créez un ClusterRole personnalisé avec Kubernetes RBAC et sélectionnez-le sur la page Modify Permissions de la console ACK. Consultez Utiliser des rôles RBAC personnalisés pour restreindre les opérations sur les ressources dans un cluster.











































Cas d'utilisation 3 : Autoriser les développeurs

Les développeurs ont besoin d'une autorisation RBAC pour les ressources Kubernetes et d'un accès RAM en lecture seule au cluster.

Important

Effectuez l'autorisation RAM avant l'autorisation RBAC. Les développeurs doivent disposer au moins des autorisations RAM en lecture seule sur le cluster pour que l'autorisation RBAC prenne effet.

Étape 1 : Autorisation RAM

Créez une politique personnalisée dans la console RAM et attachez-la à l'utilisateur ou au rôle RAM. Consultez Accorder l'accès aux clusters et aux ressources cloud à l'aide de RAM. Autorisations minimales en lecture seule :

{
  "Statement": [
    {
      "Action": [
        "cs:GetClusters",
        "cs:DescribeClusterDetail",
        "cs:GetClusterAuditProject",
        "cs:DescribeResourcesDeleteProtection"
      ],
      "Resource": "acs:cs:*:*:cluster/xxxxx",
      "Effect": "Allow"
    }
  ],
  "Version": "1"
}
Remplacez xxxxx par l'ID de votre cluster. Pour un accès en lecture seule à tous les clusters ACK, utilisez la politique système AliyunCSReadOnlyAccess.

Étape 2 : Autorisation RBAC

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur +Add Permissions.

  2. Sur la page O&M Engineer, cliquez sur l'onglet Submit ou Authorizations. Recherchez la cible et cliquez sur Authorizations.

  3. Cliquez sur Authorizations, sélectionnez RAM Users pour le cluster et le namespace cibles, puis cliquez sur RAM Roles.

developer

ACK crée automatiquement un ClusterRoleBinding. Voici la définition du ClusterRole pour le rôle Developer (cs:ns:dev) :

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"]

Pour un contrôle plus fin, créez un ClusterRole personnalisé avec Kubernetes RBAC et sélectionnez-le sur la page Modify Permissions de la console ACK. Consultez Utiliser des rôles RBAC personnalisés pour restreindre les opérations sur les ressources dans un cluster.

Cas d'utilisation 4 : Autoriser les administrateurs des autorisations

Les administrateurs des autorisations gèrent les autorisations RBAC pour d'autres utilisateurs et rôles RAM. Par défaut, un utilisateur ou un rôle RAM ne peut pas accorder d'autorisations RBAC — la page +Add Permissions affiche : Developer

Cela nécessite à la fois des autorisations RAM et RBAC.

Étape 1 : Autorisation RAM

La politique RAM doit inclure des autorisations pour :

  • Interroger les utilisateurs et les rôles RAM dans le compte Alibaba Cloud

  • Interroger les autorisations RBAC d'un utilisateur ou d'un rôle RAM

  • Accorder des autorisations RBAC à d'autres utilisateurs ou rôles RAM

Dans la console RAM, attachez la politique suivante à l'utilisateur ou au rôle RAM :

{
  "Statement": [
    {
      "Action": [
        "ram:ListRoles",
        "ram:ListUserBasicInfos",
        "cs:GetClusters",
        "cs:DescribeUserPermission",
        "cs:DescribeClusterDetail",
        "cs:GrantPermissions",
        "cs:UpdateUserPermissions",
        "cs:GetClusterAuditProject",
        "cs:DescribeResourcesDeleteProtection",
        "cs:UpdateResourcesDeleteProtection",
        "cs:DescribeClusterAddonUpgradeStatus"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ],
  "Version": "1"
}

Étape 2 : Autorisation RBAC

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Submit.

  2. Sur la page Authorizations, cliquez sur l'onglet Authorizations ou The current RAM user account has no permission to manage authorizations. Contact the Alibaba Cloud account owner or authorized RAM user to request permission.. Recherchez la cible et cliquez sur Authorizations.

  3. Cliquez sur Authorizations, sélectionnez RAM Users ou cluster-admin sous RAM Roles, puis cliquez sur Modify Permissions.

Par défaut, les comptes Alibaba Cloud et les propriétaires de clusters se voient attribuer le rôle cluster-admin et disposent d'un accès complet à toutes les ressources Kubernetes du cluster.

cluster-admin

Une fois ces deux étapes effectuées, l'utilisateur ou le rôle RAM peut accorder des autorisations RBAC à d'autres utilisateurs ou rôles RAM dans la portée configurée.