Uso de Azure RBAC para clústeres de AKS (versión preliminar, retirada)
Se aplica a: AKS en Azure Local 22H2, AKS en Windows Server
Advertencia
Esta característica en versión preliminar se ha retirado y no es compatible a partir del 15/7/2024. Microsoft no recomienda usar esta característica de versión preliminar de RBAC de Azure en un entorno de producción.
- LAS VERSIONES PRELIMINARES SE PROPORCIONAN "TAL CUAL", "CON TODOS LOS ERRORES" Y "COMO DISPONIBLES", como se describe en este documento. Para obtener más información sobre los términos y condiciones de la versión preliminar, consulte Online Services from Universal License Terms (Servicios en línea de términos de licencia universal).
- Si quiere usar Azure RBAC para AKS en Azure Local, consulte Uso del control de acceso basado en rol (RBAC) de Azure para la autorización de Kubernetes para AKS en Azure Local, versión 23H2.
En este artículo se describe cómo configurar RBAC de Azure en un clúster de AKS para usar microsoft Entra ID y asignaciones de roles de Azure para la autorización. Los pasos para crear el clúster se tratan en Requisitos previos.
Para obtener información general conceptual sobre el uso de RBAC de Azure con clústeres de Kubernetes habilitados para Azure Arc, consulte Azure RBAC en Kubernetes habilitado para Azure Arc.
Requisitos previos
Antes de implementar un clúster de Kubernetes con Azure Arc habilitado, debe completar los siguientes requisitos previos.
Instalación de la extensión de la CLI de Azure
La versión preliminar de la extensión de la CLI de Azure habilitada para Azure Arc es la única versión compatible para esta configuración preliminar de AKS en Azure Local 22H2. El uso de una versión superior puede provocar problemas de incompatibilidad con Azure RBAC y AKS Arc. Para instalar la extensión, ejecute el siguiente comando:
az extension add -n connectedk8s --version 1.5.4
Preparación de la red
Configure las siguientes opciones de red, proxy y firewall:
Configure los puntos de conexión a los que se debe tener acceso para conectar un clúster a Azure Arc. Para obtener una lista, consulte Cumplir los requisitos de red.
Permita el punto de conexión de Graph en el proxy o firewall.
Para obtener información sobre cómo configurar un servidor proxy, consulte Configuración del servidor proxy.
Aplicaciones cliente y servidor
Azure RBAC usa aplicaciones cliente y servidor de Microsoft Entra para diferentes propósitos. La aplicación cliente se usa para recuperar el token de usuario una vez que el usuario se autentica con el identificador de Microsoft Entra mediante el inicio de sesión interactivo; por ejemplo, a través del flujo de código del dispositivo. La aplicación cliente es un cliente público y también admite un flujo no interactivo para recuperar el token de las entidades de servicio.
La aplicación de servidor es un cliente confidencial y se usa para recuperar los detalles del grupo de seguridad del usuario que ha iniciado sesión para los usuarios de notificación por encima del límite y para comprobar las solicitudes de acceso que devuelven el resultado de autorización que tiene la entidad de seguridad (usuario o SPN) en el clúster de AKS.
Al registrar la aplicación Microsoft Entra, almacena información de configuración en microsoft Entra ID. Esta configuración permite que la aplicación representada por la aplicación Microsoft Entra se autentique en nombre del usuario (o SPN). Una vez autenticada, la aplicación puede usar el identificador de aplicación de Microsoft Entra para acceder a las API en nombre del usuario.
Creación de la aplicación de servidor y la aplicación cliente
Registre la aplicación de servidor y el secreto, y la aplicación cliente y el secreto mediante los pasos siguientes:
Nota:
Estos pasos le dirigen a las tareas clave en Uso de RBAC de Azure para clústeres de Kubernetes habilitados para Azure Arc necesarios para prepararse para la configuración de RBAC de Azure en AKS Arc.
Para realizar estos pasos, debe tener el rol de administrador de aplicaciones integrado en el identificador de Microsoft Entra. Para obtener instrucciones, consulte Asignación de roles de Microsoft Entra a los usuarios.
- Cree una aplicación de servidor y un secreto compartido.
- Cree una asignación de roles para la aplicación de servidor.
- Cree una aplicación cliente. Cuando use
kubectl
para conectarse dentro de la red, consulte la aplicación cliente.
Concesión de permisos para usuarios en el clúster
Asigne roles para conceder permisos a los usuarios de nombres de entidad de seguridad de servicio (SPN) en el clúster. Use el comando az role assignment
.
Para asignar roles en un clúster de Kubernetes, debe tener permiso de propietario en la suscripción, el grupo de recursos o el clúster.
En el ejemplo siguiente se usa az role assignment para asignar el rol Administrador de clústeres de Kubernetes de Azure Arc al grupo de recursos que contiene el clúster. Puede establecer el ámbito del grupo de recursos antes de crear el clúster:
az role assignment create --role "Azure Arc Kubernetes Cluster Admin" --assignee xyz@contoso.com --scope /subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Kubernetes/connectedClusters/<resource name, aka name of AKS cluster>
Para acceder al clúster a través del método proxy connectedk8s (una de las opciones para comunicarse con el servidor de API), debe tener el ámbito "Rol de usuario de clúster de Kubernetes habilitado para Azure Arc" en la suscripción, el grupo de recursos o el clúster.
El siguiente comando asigna un rol a un grupo en lugar de a un usuario específico (consulte el ejemplo anterior):
az role assignment create --assignee 00000000-0000-0000-0000-000000000000 --role "Azure Arc Kubernetes Cluster Admin" --scope $id
El asignado es el identificador de objeto del grupo Microsoft Entra.
Para obtener más información sobre el rol, consulte esta sección.
Para obtener el identificador de ámbito del clúster o el grupo de recursos, ejecute los siguientes comandos y use :"id":property
az connectedk8s show -g <name of resource group>
az connectedk8s show -n <name of cluster> -g <name of resource group>
Para ver otros ejemplos, consulte az role assignment.
Para obtener información sobre los roles RBAC de Azure pregenerados para clústeres de Kubernetes habilitados para Arc, consulte Creación de asignaciones de roles para que los usuarios accedan a un clúster. Para obtener una lista de todos los roles integrados disponibles, consulte Roles integrados de Azure.
Paso 1: Crear un SPN y asignar permisos
Use una entidad de servicio de Azure para configurar una cuenta de Automation con los permisos necesarios para crear un clúster de destino con Azure RBAC habilitado.
La creación de un clúster de destino solo requiere privilegios limitados en la suscripción. Se recomienda usar el rol Clúster de Kubernetes: incorporación de Azure Arc. También puede usar el rol Propietario o Colaborador . Para más información, consulte Roles integrados en Azure.
Use el comando de la az ad sp create-for-rbac
CLI de Azure para crear el SPN y configurarlo con los permisos necesarios.
En el ejemplo siguiente se asigna el rol Clúster de Kubernetes: incorporación de Azure Arc a la suscripción. Para obtener más información, consulte la referencia de az ad sp
comandos:
az ad sp create-for-rbac --role "Kubernetes Cluster - Azure Arc Onboarding" --scopes /subscriptions/<OID of the subscription ID>
Importante
La salida del comando para az ad sp
incluye las credenciales que debe proteger. No incluya estas credenciales en el código ni compruebe las credenciales en el control de código fuente. Para más información, consulte Creación de una entidad de servicio de Azure.
Para más información sobre cómo crear un SPN y asignarle un rol, consulte Creación de una entidad de servicio de Azure.
Paso 2: Crear el objeto de credencial
Para crear un objeto de credencial que se va a usar con el SPN, abra una ventana de PowerShell y ejecute el siguiente comando:
$Credential = Get-Credential
Este comando solicita una contraseña.
Para automatizar la creación del objeto de credencial sin necesidad de entrada manual de contraseña, vea Get-Credential, ejemplo 4. El script incluye una credencial de texto no cifrado, que podría infringir los estándares de seguridad en algunas empresas.
Paso 3: Creación de un clúster de AKS habilitado para RBAC de Azure
Puede crear un clúster habilitado para RBAC de Azure mediante un SPN (opción A) o crear el clúster de forma interactiva (opción B).
Opción A: Creación de un clúster de destino de AKS habilitado para RBAC de Azure mediante un SPN
Para crear un clúster de destino de AKS con Azure RBAC habilitado mediante un SPN:
Si aún no tiene un SPN para usarlo con el clúster de destino, cree el SPN ahora.
Tenga en cuenta que el nuevo SPN se usa una vez al crear el clúster y no requiere la administración de contraseñas.
Abra una ventana de PowerShell en el nodo Local de Azure o en el servidor de Windows donde implemente el clúster y ejecute el siguiente comando:
New-AksHciCluster -name "<cluster name>" -enableAzureRBAC -resourceGroup "<resource group name>" -subscriptionID "<subscription ID>" -tenantId "<tenant ID>" -credential $Credential -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool>
Opción B: Creación de un clúster de destino de AKS habilitado para RBAC de Azure de forma interactiva
Si prefiere crear el clúster de destino habilitado para RBAC de Azure de forma interactiva, siga estos pasos:
Abra una ventana de PowerShell en el nodo Local de Azure o en el servidor de Windows donde implemente el clúster.
Inicie sesión en Azure mediante la ejecución del comando siguiente
connect-azaccount -deviceauth
:connect-azaccount -deviceauth
El sistema solicita la autenticación a través del flujo de código del dispositivo.
Establezca el contexto de suscripción en la suscripción donde se va a crear el clúster de destino:
Set-AzContext -Subscription "subscriptionName"
Cree el clúster de destino de AKS, con RBAC de Azure habilitado:
New-AksHciCluster -name "<cluster name>" -enableAzureRBAC -resourceGroup "<name of resource group>" -location "eastus" -appId $SERVER_APP_ID -appSecret $SERVER_APP_SECRET -aadClientId $CLIENT_APP_ID -nodePoolName <name of node pool>
Paso 4: Conexión al clúster de AKS mediante RBAC de Azure
La configuración de RBAC de Azure en el clúster de AKS ya está completa. Para probar la configuración de Azure RBAC, conéctese al clúster de AKS. RBAC de Azure autentica las conexiones.
Los procedimientos de esta sección usan el connectedk8s
método proxy para conectarse a un clúster de AKS y conectarse a un clúster de AKS a través de una red privada.
Conexión al clúster de AKS a través de Internet mediante el connectedk8s
método proxy
Use el connectedk8s
método proxy para enviar una solicitud de autenticación o autorización desde cualquier lugar de Internet. Al usar este método, se limita a 200 grupos.
Para conectarse a un clúster de AKS mediante el connectedk8s
método proxy, realice los pasos siguientes:
Abra una ventana de la CLI de Azure y use
az login
para conectarse a Azure. Para obtener más información, consulte Inicio de sesión con la CLI de Azure.Establezca la suscripción de la cuenta de Azure en la suscripción que usó para crear el clúster de AKS si es necesario:
az account set -subscription "<mySubscription>"
Confirme que está conectado a Azure:
az account show
Inicie el proceso de proxy:
az connectedk8s proxy -n <cluster name> -g <resource group name>
Asegúrese de que la autenticación funciona correctamente mediante el envío de solicitudes al clúster. Deje el terminal que ha conectado desde abierto, abra otra pestaña y envíe las solicitudes al clúster. Debe obtener respuestas basadas en la configuración de RBAC de Azure.
Presione Ctrl+C para cerrar la
connectedk8s
conexión de proxy.
Conexión al clúster de AKS a través de una red privada
Al conectarse a un clúster de AKS a través de una red privada, no hay ningún límite en el número de grupos que puede usar.
Para recuperar el inicio de sesión kubeconfig de Microsoft Entra en el equipo local y local (por ejemplo, un clúster local de Azure), genere el kubeconfig de Microsoft Entra mediante el siguiente comando. Puede distribuir Microsoft Entra kubeconfig a los usuarios que se conectan desde su equipo cliente. Microsoft Entra kubeconfig no contiene ningún secreto.
Para conectarse a un clúster de AKS a través de una red privada, siga estos pasos:
Descargue el archivo kubeconfig :
Get-AksHciCredential -Name <cluster name> -aadauth
Para iniciar el envío de solicitudes al servidor de API de AKS, ejecute el
kubectl
comandoapi-server
. Se le pedirán sus credenciales de Microsoft Entra. Es posible que reciba un mensaje de advertencia, pero puede omitirlo.
Actualización al complemento de autenticación kubelogin
Nota:
La información de esta sección se aplica a la versión 1.0.17.10310 y posteriores de AKS. Consulte las notas de la versión para obtener información sobre la versión.
Para proporcionar tokens de autenticación para comunicarse con clústeres de AKS, los clientes kubectl requieren un complemento de autenticación.
Para generar un archivo kubeconfig que requiera el complemento de autenticación binaria de Azure kubelogin.exe, ejecute el siguiente comando de PowerShell:
Get-AksHciCredential -Name <cluster name> -aadauth
Este comando también descarga el archivo binario kubelogin.exe . Para buscar la ubicación del archivo kubelogin.exe , ejecute el siguiente comando:
$workingdir = (Get-AksHciConfig).Akshci.installationPackageDir
Este comando devuelve la ruta de acceso a la que se descarga kubelogin.exe . Copie el archivo kubelogin.exe en el nodo local de Azure o en la máquina cliente. Para Azure Local, copie el archivo en la ruta de acceso tal como se describe en el ejemplo siguiente. Para un equipo cliente, copie el archivo ejecutable en el equipo cliente y agréguelo a la ruta de acceso. Por ejemplo:
cp $workingdir\kubelogin.exe "c:\program files\akshci"
Como alternativa, para descargar kubelogin.exe en el equipo cliente, puede ejecutar el siguiente comando:
wget https://github.com/Azure/kubelogin/releases/download/v0.0.26/kubelogin-win-amd64.zip -OutFile kubelogin-win-amd64.zip
Para más información sobre cómo realizar la conversión al complemento de autenticación kubelogin , consulte la página kubelogin de Azure en GitHub.