Compartir a través de


Obtención de acceso seguro a los recursos de Azure en Azure Kubernetes Service mediante Acceso de confianza

En este artículo se muestra cómo obtener acceso seguro desde los servicios de Azure a un servidor de API Kubernetes en Azure Kubernetes Service (AKS) mediante Acceso de confianza.

La característica Acceso de confianza proporciona a los servicios acceso seguro al servidor de API AKS mediante el back-end de Azure sin necesidad de un punto de conexión privado. En lugar de utilizar las identidades con permisos de Microsoft Entra, esta característica puede usar su identidad administrada asignada por el sistema para autenticarse en los servicios administrados y las aplicaciones que dese usar con los clústeres de AKS.

Nota:

La API de Acceso de confianza está disponible con carácter general. Ofrecemos compatibilidad con disponibilidad general para la CLI de Azure, pero aún está en versión preliminar y requiere el uso de la extensión aks-preview.

IInformación general sobre la característica Acceso de confianza

Acceso de confianza aborda los escenarios siguientes:

  • Si se establece un intervalo de IP autorizadas en un clúster privado, es posible que los servicios de Azure no puedan acceder al servidor de API Kubernetes, a menos que se implemente un modelo de acceso mediante punto de conexión privado.
  • Proporcionar acceso de administrador a un servicio de Azure a API Kubernetes no sigue el procedimiento recomendado de acceso con privilegios mínimos, lo que podría provocar la elevación de privilegios o el riesgo de pérdida de credenciales. Por ejemplo, puede que tenga que implementar permisos de servicio a servicio con privilegios elevados, algo que no es lo más apropiado en las revisiones de auditoría.

Puede usar Acceso de confianza para dar consentimiento explícito a su identidad administrada asignada por el sistema de los recursos permitidos para acceder a los clústeres de AKS mediante un recurso de Azure denominado enlace de roles. Los recursos de Azure acceden a los clústeres de AKS a través de la puerta de enlace regional de AKS por medio de la autenticación de identidades administradas asignadas por el sistema. Los permisos de Kubernetes adecuados se asignan mediante un recurso de Azure denominado rol. Acceso de confianza le permite acceder a los clústeres de AKS con diferentes configuraciones, incluidos, entre otros, los clústeres privados, los que tienen cuentas locales desactivadas, los de Microsoft Entra o los de intervalos de IP autorizadas.

Requisitos previos

Conexión al clúster

Configure kubectl para conectarse al clúster ejecutando el comando az aks get-credentials.

export RESOURCE_GROUP_NAME="myResourceGroup"
export CLUSTER_NAME="myClusterName"

az aks get-credentials --resource-group ${RESOURCE_GROUP_NAME} --name ${CLUSTER_NAME} --overwrite-existing

Compruebe la conexión al clúster con el comando kubectl get.

kubectl get nodes

Selección de los roles de Acceso de confianza necesarios

Los roles que seleccione dependen de los servicios de Azure que desee que accedan al clúster de AKS. Los servicios de Azure ayudan a crear roles y enlaces de rol que crean la conexión desde el servicio de Azure hasta AKS.

Para buscar los roles que necesita, consulte la documentación del servicio de Azure que desea conectar a AKS. También puede usar la CLI de Azure para enumerar los roles que están disponibles para el servicio de Azure mediante el comando az aks trustedaccess role list --location <location>.

Creación de un enlace de red de Acceso de confianza

Después de confirmar el rol que se va a usar, recurra a la CLI de Azure para crear un enlace de roles de Acceso de confianza en el clúster de AKS. El enlace de roles asocia cualquier rol que se seleccione al servicio de Azure.

export ROLE_BINDING_NAME="myRoleBindingName"
export SOURCE_RESOURCE_ID="mySourceResourceID"
export ROLE_NAME_1="myRoleName1"
export ROLE_NAME_2="myRoleName2"

az aks trustedaccess rolebinding create --resource-group ${RESOURCE_GROUP_NAME} --cluster-name ${CLUSTER_NAME} --name ${ROLE_BINDING_NAME} --source-resource-id ${SOURCE_RESOURCE_ID} --roles ${ROLE_NAME_1},${ROLE_NAME_2}

Resultados:

{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/${RESOURCE_GROUP_NAME}/providers/Microsoft.ContainerService/managedClusters/${CLUSTER_NAME}/trustedAccessRoleBindings/${ROLE_BINDING_NAME}",
  "name": "${ROLE_BINDING_NAME}",
  "provisioningState": "Succeeded",
  "resourceGroup": "${RESOURCE_GROUP_NAME}",
  "roles": [
    "${ROLE_NAME_1}",
    "${ROLE_NAME_2}"
  ],
  "sourceResourceId": "${SOURCE_RESOURCE_ID}",
  "systemData": null,
  "type": "Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings"
}

Actualización de cualquier enlace de roles de Acceso de confianza existente

Los enlaces de roles existentes con un servicio de origen asociado se puede actualizar con nuevos roles mediante el comando az aks trustedaccess rolebinding update --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --roles $ROLE_NAME_3,$ROLE_NAME_4. Este comando actualiza el enlace de roles con los nuevos roles que especifique.

Nota:

El administrador de complementos actualiza los clústeres cada cinco minutos, por lo que el nuevo enlace de roles puede tardar hasta cinco minutos en surtir efecto. Hasta que el nuevo enlace de roles surta efecto, seguirá funcionando el existente.

Puede usar el comando az aks trusted access rolebinding list para comprobar el enlace de roles actual.

Mostrar un enlace de roles de Acceso seguro

Para mostrar un enlace de roles de Acceso de confianza concreto, utilice el comando az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME.

Enumeración de todos los enlaces de roles de Acceso de confianza de un clúster

Enumere todos los enlaces de rol de Acceso de confianza para un clúster mediante el comando az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME.