Configurez les autorisations RAM et RBAC pour quatre rôles courants dans un cluster ACK.
Système d'autorisation
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 :
L'utilisateur ou le rôle RAM est désigné comme administrateur des autorisations (non requis pour les propriétaires de compte Alibaba Cloud).
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": "*"
}
]
}
Remplacezxxxxxdansacs:cs:*:*:cluster/xxxxxpar 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.
|
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 :
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Custom.
Sur la page O&M Engineer, cliquez sur l'onglet Developer ou Custom. Recherchez la cible et cliquez sur Authorizations.
Cliquez sur Authorizations, sélectionnez RAM Users pour le cluster et le namespace cibles, puis cliquez sur RAM Roles.

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.
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"
}
Remplacezxxxxxpar l'ID de votre cluster. Pour un accès en lecture seule à tous les clusters ACK, utilisez la politique systèmeAliyunCSReadOnlyAccess.
Étape 2 : Autorisation RBAC
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur +Add Permissions.
Sur la page O&M Engineer, cliquez sur l'onglet Submit ou Authorizations. Recherchez la cible et cliquez sur Authorizations.
Cliquez sur Authorizations, sélectionnez RAM Users pour le cluster et le namespace cibles, puis cliquez sur RAM Roles.

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
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Submit.
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.
Cliquez sur Authorizations, sélectionnez RAM Users ou
cluster-adminsous 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.

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.