Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo Azure Kubernetes Service (AKS) determina lo que un llamador autenticado tiene permiso para hacer contra la API de Kubernetes. Cubre los dos modelos de autorización que AKS admite y el control detallado de recursos personalizados mediante condiciones de Azure ABAC.
Para saber cómo AKS autentica a los autores de llamadas en primer lugar, consulte Conceptos de autenticación de clúster.
Para obtener una orientación en los cuatro escenarios de identidad de AKS, consulte Opciones de acceso e identidad para AKS.
Autorización de la API de Kubernetes
Una vez autenticado un autor de la llamada, AKS evalúa si el autor de la llamada está autorizado para realizar la acción solicitada. AKS admite dos modelos de autorización para la API de Kubernetes:
- Control de acceso basado en rol (RBAC) de Kubernetes. El modelo de autorización nativo de Kubernetes. Los permisos se definen como
RoleyClusterRoleobjetos y se conceden a los sujetos a través deRoleBindingyClusterRoleBindingobjetos almacenados en cada clúster. - Autorización de ID de Microsoft Entra. Webhook de autorización de AKS que delega las decisiones relacionadas con la autorización a Microsoft Entra ID. Los permisos se conceden como asignaciones de roles de Azure a identidades de Entra ID y se pueden refinar opcionalmente con las condiciones de Azure ABAC.
Puede usar ambos modelos en el mismo clúster. Se recomienda la autorización de Microsoft Entra ID como la opción predeterminada y reservar RBAC de Kubernetes para permisos granulares dentro del clúster. En el resto de esta sección se explica por qué y cuándo usar cada uno.
RBAC de Kubernetes
RBAC de Kubernetes es el modelo de autorización ascendente de Kubernetes.
Role Crea objetos o ClusterRole que conceden verbos (como get, list, create) en recursos (como pods, deployments) y los enlazan a temas (usuarios, grupos o cuentas de servicio) mediante RoleBinding objetos o ClusterRoleBinding . El autorizador RBAC integrado del servidor de API de Kubernetes evalúa estos enlaces en cada solicitud.
Use RBAC de Kubernetes cuando desee:
- Control de acceso detallado en el clúster y por espacio de nombres, autorizado como manifiestos de Kubernetes junto con las cargas de trabajo que protegen.
- Autorización gestionada por GitOps que se encuentra en la misma fuente de veracidad que la configuración de la aplicación.
- Permisos para las cuentas de servicio en clúster que usan las cargas de trabajo para llamar a la API de Kubernetes.
Los permisos RBAC de Kubernetes se limitan a un único clúster. Para aplicar la misma directiva a muchos clústeres, debe aplicar los manifiestos a cada clúster (normalmente a través de GitOps). Use usuarios y grupos de Microsoft Entra como sujetos en objetos Kubernetes RoleBinding y ClusterRoleBinding para garantizar que las identidades humanas sigan procediendo de el directorio central.
Para obtener información general sobre el modelo RBAC de Kubernetes, consulte la documentación principal de RBAC de Kubernetes. Para la instalación en AKS, consulte Uso de RBAC de Kubernetes con la integración de Microsoft Entra.
Autorización de Microsoft Entra ID para la API de Kubernetes
Con la autorización de Entra ID, AKS implementa un webhook de autorización que delega las decisiones de autorización de la API de Kubernetes a Microsoft Entra ID. Cuando una solicitud llega al servidor de API, el webhook llama a la API entra ID checkaccess para evaluar las asignaciones de roles de Azure del autor de la llamada (y las condiciones de ABAC asociadas) y devuelve una decisión de permitir o denegar.
La autorización de Entra ID proporciona las siguientes ventajas sobre la administración de manifiestos RBAC de Kubernetes en todos los clústeres:
- Plano de identidad único. Los mismos usuarios, grupos y entidades de servicio de Microsoft Entra que rigen el acceso a los recursos de Azure también rigen el acceso a la API de Kubernetes. No hay un directorio de usuario separado para aprovisionar ni rotar.
- Asignar una vez, controlar muchos clústeres. Las asignaciones de roles de Azure se pueden realizar en el ámbito de suscripción, grupo de administración o grupo de recursos. Una sola asignación de roles en un ámbito de grupo de recursos concede acceso a todos los clústeres de AKS actuales y futuros de ese grupo de recursos. Con RBAC de Kubernetes, debe aplicar manifiestos a cada clúster individualmente.
- Acceso condicional y Gestión de Identidades con Privilegios (PIM). El acceso al clúster hereda automáticamente las directivas de acceso condicional existentes de Entra ID de su organización (como la autenticación multifactor o las restricciones basadas en ubicación) y se puede elevar justo a tiempo a través de PIM.
- Auditoría centralizada. Cada cambio de asignación de roles se registra en el registro de actividad de Azure junto con otros cambios de recursos de Azure, por lo que tiene una pista de auditoría para la gobernanza del acceso al clúster.
- Restricciones de recursos personalizadas específicas. Con las condiciones de ABAC, puede restringir el acceso a grupos y tipos de recursos personalizados específicos (CRD) sin escribir manifiestos de RBAC por clúster de Kubernetes.
AKS proporciona los siguientes roles integrados para la autorización de ID de Entra:
| Función | Descripción |
|---|---|
| Lector RBAC de Azure Kubernetes Service | Acceso de solo lectura a la mayoría de los objetos de un espacio de nombres. No permite ver roles, enlaces de roles ni Secrets. |
| Escritor de Azure Kubernetes Service RBAC | Acceso de lectura y escritura a la mayoría de los objetos de un espacio de nombres. No permite ver ni modificar roles ni vinculaciones de roles. |
| Administrador de Azure Kubernetes Service RBAC | Acceso de lectura y escritura a la mayoría de los recursos de un espacio de nombres, además de la capacidad de crear roles y enlaces de roles dentro del espacio de nombres. |
| Administrador de clúster de Azure Kubernetes Service RBAC | Control total sobre todos los recursos del clúster, en todos los espacios de nombres. |
Para los patrones de permisos personalizados, puede crear definiciones de roles personalizadas destinadas a grupos de API específicos de Kubernetes mediante las acciones de datos del proveedor de recursos Microsoft.ContainerService. Para obtener ejemplos de configuración paso a paso y roles personalizados, consulte Uso de la autorización de identificador de Entra de Microsoft para la API de Kubernetes.
Comparison
| Capacidad | RBAC de Kubernetes | Autorización de ID de Entra |
|---|---|---|
| Origen de identidad | Usuarios, grupos y cuentas de servicio de Kubernetes | Identidades de Microsoft Entra ID |
| Ámbito de una única concesión | Un clúster | Recurso, grupo de recursos, suscripción o grupo de administración |
| Gobernanza de varios clústeres | Aplicación de manifiestos a cada clúster (normalmente GitOps) | Una asignación de roles en un ámbito superior rige muchos clústeres |
| Acceso condicional/PIM | No soportado | Heredado de Entra ID |
| Traza de auditoría | Registro de auditoría de clúster | Registro de actividad de Azure |
| Filtrar el acceso por grupo o tipo CRD | Autoría de objetos por CRD Role |
Uso de atributos de condición de ABAC en la asignación de roles |
Restricción del acceso a recursos personalizados con condiciones de ABAC
Al conceder un acceso de lectura amplio mediante la autorización de Microsoft Entra ID, pero desea restringir qué recursos personalizados (CRDs) puede leer el destinatario, adjunte una condición ABAC de Azure a la asignación de roles.
Sin condiciones de ABAC, otorgar permiso de lectura en recursos personalizados requiere un carácter comodín como Microsoft.ContainerService/managedClusters/*/read, que cubre cada CRD en cada clúster dentro del alcance. Con ABAC, puede adjuntar una condición que restrinja el acceso a determinados grupos y tipos de CRD (por ejemplo, permitir templates.gatekeeper.sh mientras se bloquea kyverno.io ) sin escribir manifiestos de RBAC de Kubernetes por clúster.
En el caso de la autorización de la API de Kubernetes, puede filtrar el acceso a los recursos personalizados por su grupo de API y tipo mediante los atributos siguientes:
Microsoft.ContainerService/managedClusters/customResources:groupMicrosoft.ContainerService/managedClusters/customResources:kind
Para más información sobre Azure ABAC, consulte ¿Qué son las condiciones de asignación de roles de Azure?. Para la configuración paso a paso, consulte Restricción del acceso a recursos personalizados mediante condiciones de ABAC.