Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Best practices for authorization

Última actualización: Sep 21, 2026

Configure los permisos de RAM y RBAC para cuatro roles comunes de clúster de ACK.

Sistema de autorización

image

La RAM authorization utiliza políticas del sistema y personalizadas para controlar el acceso a las operaciones de la API de ACK y a los servicios de Alibaba Cloud. Abarca lo siguiente:

  • Creación, consulta, actualización y eliminación de clústeres.

  • Creación, modificación y escalado de grupos de nodos.

  • Gestión de la autorización.

  • Monitoreo de clústeres y recopilación de registros y eventos.

La RBAC authorization controla el acceso a los recursos de Kubernetes dentro de un clúster mediante RBAC de Kubernetes. Cubre las operaciones de agregar, eliminar, modificar y consultar en:

  • Cargas de trabajo: Deployment, StatefulSet, DaemonSet, Job, CronJob, pod y ReplicaSet.

  • Recursos de red: Service, Ingress y NetworkPolicy.

  • Recursos de almacenamiento: volumen persistente (PV), solicitud de volumen persistente (PVC) y StorageClass.

  • Configuración: Namespace, ConfigMap y Secret.

Requisitos previos

Compruebe lo siguiente:

Caso de uso 1: autorizar administradores de solo lectura

Asigne el rol de RBAC predefinido Read-only Administrator para otorgar acceso de solo lectura a los recursos de Kubernetes en todos los namespaces. No se requiere autorización de RAM.

Asignar el rol Read-only Administrator

Consola de ACK

Consulte Grant RBAC permissions to a RAM user or role.

CLI de Alibaba Cloud

Llame a GrantPermissions con role_name establecido en admin-view. Compruebe el resultado con 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
  }
}

Caso de uso 2: autorizar ingenieros de operaciones y mantenimiento

Los ingenieros de operaciones y mantenimiento requieren autorización tanto de RAM como de RBAC para gestionar clústeres y aplicaciones.

Paso 1: autorización de RAM

ACK proporciona dos políticas de RAM administradas por el sistema:

Policy

Access level

AliyunCSFullAccess

Acceso completo de lectura y escritura a todas las operaciones de la API de ACK

AliyunCSReadOnlyAccess

Acceso de solo lectura a todas las operaciones de la API de ACK

En la consola de RAM, asocie la política al usuario o rol de RAM. Consulte Grant permissions to a RAM user y Grant permissions to a RAM role.

Para un control más detallado, cree una política personalizada. Consulte Use RAM to grant the permissions to access clusters and cloud resources. El siguiente ejemplo cubre todas las operaciones de mantenimiento. Para cada acción, consulte Action description.

{
  "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": "*"
    }
  ]
}
Reemplace xxxxx en acs:cs:*:*:cluster/xxxxx con el ID de su clúster.

Para conocer las acciones de la API de ACK, consulte [[Product Changes] ACK API enhances user authentication](t2103012.dita#task_2103012) y List of operations by function.

Paso 2: autorización de RBAC

Después de configurar la autorización de RAM, asigne un rol de RBAC predefinido. La siguiente tabla describe todos los roles predefinidos y su alcance.

Predefined role

RBAC permissions on cluster resources

When to use

Administrator

Acceso completo de lectura y escritura a todos los recursos de Kubernetes en todos los namespaces, además de los recursos a nivel de clúster: nodos, PV, namespaces y cuotas de recursos.

Acceso sin restricciones al clúster. Para gestionar permisos, asigne el ClusterRole cluster-admin en Custom.

Read-only Administrator

Acceso de solo lectura a todos los recursos de Kubernetes en todos los namespaces, además de los recursos a nivel de clúster: nodos, PV, namespaces y cuotas de recursos.

Visibilidad en todo el clúster sin acceso de escritura.

O&M Engineer

Acceso de lectura y escritura a todos los recursos visibles en la consola dentro de todos los namespaces; acceso de lectura y actualización a nodos, PV y namespaces; acceso de solo lectura a los demás recursos.

Operaciones diarias del clúster. No incluye gestión de permisos.

Developer

Acceso de lectura y escritura a los recursos visibles en la consola, limitado a todos los namespaces o a un conjunto específico.

Despliegue y gestión de aplicaciones. Se puede limitar a namespaces específicos.

Restricted User

Acceso de solo lectura a los recursos visibles en la consola, limitado a todos los namespaces o a un conjunto específico.

Acceso exclusivo de consulta para desarrolladores u operadores.

Custom

Determinado por el ClusterRole que seleccione. Revise los permisos antes de asignarlos. Consulte Use custom RBAC roles to restrict resource operations in a cluster.

Control de acceso detallado más allá de los roles predefinidos.

Importante

Asignar el ClusterRole cluster-admin otorga los mismos permisos que la cuenta de Alibaba Cloud, es decir, control total sobre todos los recursos del clúster. Proceda con precaución.

Para asignar un rol en la consola:

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Authorizations.

  2. En la página Authorizations, haga clic en la pestaña RAM Users o RAM Roles. Busque el destino y haga clic en Modify Permissions.

  3. Haga clic en +Add Permissions, seleccione O&M Engineer para el clúster y el namespace destino, y luego haga clic en Submit.

RBAC

ACK crea automáticamente un ClusterRoleBinding. A continuación se muestra la definición de ClusterRole para el rol O&M Engineer (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"]

Para un control más detallado, cree un ClusterRole personalizado con RBAC de Kubernetes y selecciónelo en la página Authorizations de la consola de ACK. Consulte Use custom RBAC roles to restrict resource operations in a cluster.

Caso de uso 3: autorizar desarrolladores

Los desarrolladores requieren autorización de RBAC para los recursos de Kubernetes y acceso de solo lectura mediante RAM al clúster.

Importante

Complete la autorización de RAM antes que la de RBAC. Los desarrolladores deben tener como mínimo permisos de RAM de solo lectura sobre el clúster para que la autorización de RBAC surta efecto.

Paso 1: autorización de RAM

Cree una política personalizada en la consola de RAM y asígnela al usuario o rol de RAM. Consulte Grant access to clusters and cloud resources using RAM. Permisos mínimos de solo lectura:

{
  "Statement": [
    {
      "Action": [
        "cs:GetClusters",
        "cs:DescribeClusterDetail",
        "cs:GetClusterAuditProject",
        "cs:DescribeResourcesDeleteProtection"
      ],
      "Resource": "acs:cs:*:*:cluster/xxxxx",
      "Effect": "Allow"
    }
  ],
  "Version": "1"
}
Reemplace xxxxx con el ID de su clúster. Para obtener acceso de solo lectura a todos los clústeres de ACK, utilice la política del sistema AliyunCSReadOnlyAccess.

Paso 2: autorización de RBAC

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Authorizations.

  2. En la página Authorizations, haga clic en la pestaña RAM Users o RAM Roles. Busque el destino y haga clic en Modify Permissions.

  3. Haga clic en +Add Permissions, seleccione Developer para el clúster y el namespace destino, y luego haga clic en Submit.

developer

ACK crea automáticamente un ClusterRoleBinding. A continuación se muestra la definición de ClusterRole para el rol 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"]

Para un control más detallado, cree un ClusterRole personalizado con RBAC de Kubernetes y selecciónelo en la página Authorizations de la consola de ACK. Consulte Use custom RBAC roles to restrict resource operations in a cluster.

Caso de uso 4: autorizar administradores de permisos

Los administradores de permisos gestionan los permisos de RBAC de otros usuarios y roles de RAM. De forma predeterminada, un usuario o rol de RAM no puede otorgar permisos de RBAC; la página Authorizations muestra el mensaje: The current RAM user account has no permission to manage authorizations. Contact the Alibaba Cloud account owner or authorized RAM user to request permission.

Este proceso requiere autorización tanto de RAM como de RBAC.

Paso 1: autorización de RAM

La política de RAM debe incluir permisos para:

  • Consultar usuarios y roles de RAM en la cuenta de Alibaba Cloud.

  • Consultar los permisos de RBAC de un usuario o rol de RAM.

  • Otorgar permisos de RBAC a otros usuarios o roles de RAM.

En la consola de RAM, asocie la siguiente política al usuario o rol de 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"
}

Paso 2: autorización de RBAC

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Authorizations.

  2. En la página Authorizations, haga clic en la pestaña RAM Users o RAM Roles. Busque el destino y haga clic en Modify Permissions.

  3. Haga clic en +Add Permissions, seleccione Administrator o cluster-admin en Custom, y luego haga clic en Submit.

De forma predeterminada, las cuentas de Alibaba Cloud y los propietarios de clústeres tienen asignado el rol cluster-admin y cuentan con acceso total a todos los recursos de Kubernetes del clúster.

cluster-admin

Una vez completados ambos pasos, el usuario o rol de RAM podrá grant RBAC permissions to other RAM users or roles dentro del alcance configurado.