Inicio seguro (versión preliminar) para Azure Kubernetes Service (AKS)

Inicio seguro (versión preliminar) mejora la seguridad de las máquinas virtuales (VM) de generación 2 mediante la protección contra técnicas de ataque avanzadas y persistentes. Permite a los administradores implementar nodos de AKS, que contienen las máquinas virtuales subyacentes, con cargadores de arranque comprobados y firmados, kernels del sistema operativo y controladores. Mediante el arranque seguro y medido, los administradores obtienen información y confianza de la integridad de toda la cadena de arranque.

Este artículo le ayuda a comprender e implementar esta nueva característica.

Información general

El inicio seguro se compone de varias tecnologías de infraestructura coordinadas que se pueden habilitar de manera independiente. Cada tecnología proporciona otro nivel de defensa contra amenazas sofisticadas.

  • vTPM: el inicio seguro presenta una versión virtualizada de un módulo de plataforma segura de hardware (TPM), compatible con la especificación TPM 2.0. Sirve como almacén seguro dedicado para claves y medidas. El inicio seguro proporciona la máquina virtual con su propia instancia de TPM dedicada, que se ejecuta en un entorno seguro fuera del alcance de cualquier máquina virtual. vTPM permite la atestación midiendo la cadena de arranque completa de la máquina virtual (UEFI, SO, sistema y controladores). El inicio seguro usa vTPM para realizar la atestación remota por parte de la nube. Se usa para las comprobaciones de estado de la plataforma y para tomar decisiones basadas en confianza. Como comprobación de estado, el inicio seguro puede certificar criptográficamente que la máquina virtual se ha arrancado correctamente. Si hubiera un error en el proceso, posiblemente porque la máquina virtual ejecutase un componente no autorizado, Microsoft Defender for Cloud emitirá alertas de integridad. Las alertas incluyen detalles sobre los componentes que no superaron las comprobaciones de integridad.

  • Arranque seguro: en la raíz del inicio seguro se encuentra el Arranque seguro para la máquina virtual. Este modo, que se implementa en el firmware de la plataforma, protege frente a la instalación de rootkits y kits de arranque basados en malware. El arranque seguro funciona para asegurarse de que solo se puedan arrancar los sistemas operativos y controladores firmados. Establece una "raíz de confianza" para la pila de software en la máquina virtual. Con el arranque seguro habilitado, todos los componentes de arranque del sistema operativo (cargador de arranque, kernel y controladores de kernel) deben estar firmados por editores de confianza. Tanto Windows como las distribuciones de Linux seleccionadas admiten el arranque seguro. Si el arranque seguro no pudiera autenticar una imagen firmada por un publicador de confianza, la máquina virtual no arrancará. Para obtener más información, consulta Arranque seguro.

Antes de empezar

  • La CLI de Azure, versión 2.44.1 o posterior. Ejecute az --version para buscar la versión y ejecute az upgrade para actualizar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

  • La extensión de la CLI de Azure aks-preview versión 1.0.0b6 o posterior.

  • Registre la característica TrustedLaunchPreview en la suscripción de Azure.

  • AKS admite el inicio seguro (versión preliminar) en la versión 1.25.2 y versiones posteriores.

  • El inicio seguro solo admite máquinas virtuales de Generación 2 de Azure.

  • Arranque seguro requiere cargadores de arranque firmados, kernels del sistema operativo y controladores.

Instalación de la versión preliminar de la extensión de la CLI de Azure en versión preliminar de AKS

Importante

Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:

Ejecute el siguiente comando para instalar la extensión de versión preliminar de AKS:

az extension add --name aks-preview

Ejecute el siguiente comando para actualizar a la versión más reciente de la extensión publicada:

az extension update --name aks-preview

Registrar la marca de la característica TrustedLaunchPreview

Registre la marca de la característica TrustedLaunchPreview con el comando TrustedLaunchPreview, como se muestra en el siguiente ejemplo:

az feature register --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

Tarda unos minutos en que el estado muestre Registrado. Para comprobar el estado de registro se usa el comandoaz feature show:

az feature show --namespace "Microsoft.ContainerService" --name "TrustedLaunchPreview"

Cuando aparezca el estado Registrado, actualice el registro del proveedor de recursos Microsoft.ContainerService mediante el comando az provider register:

az provider register --namespace "Microsoft.ContainerService"

Limitaciones

  • No se admiten los nodos de clúster que ejecuten el sistema operativo Windows Server.
  • El inicio seguro (versión preliminar) no admite grupos de nodos con FIPS habilitado o basados en ARM64.
  • No se admiten los conjuntos de disponibilidad, solo los conjuntos de escalado de máquinas virtuales.
  • Para habilitar Arranque seguro en grupos de nodos de GPU, deberá omitir la instalación del controlador de GPU. Para obtener más información, consulte Omitir la instalación de controladores de GPU.
  • Los discos de sistema operativo efímeros se pueden crear con el inicio seguro y se admiten todas las regiones. Sin embargo, no se admiten todos los tamaños de máquinas virtuales. Para obtener más información, consulte Tamaños de sistemas operativos efímeros de inicio seguro.

Implementación de un nuevo clúster

Siga los pasos siguientes para implementar clústeres de AKS mediante la CLI de Azure.

  1. Cree un clúster de AKS con el comando az aks create. Antes de ejecutar el comando, revise los parámetros siguientes:

    • --name: escriba un nombre único para el clúster de AKS, como myAKSCluster.
    • --resource-group: escriba el nombre de un grupo de recursos existente para hospedar el recurso de clúster de AKS.
    • --enable-secure-boot: habilita Arranque seguro para autenticar imágenes firmadas por publicadores de confianza.
    • --enable-vtpm: habilita vTPM y realiza la atestación mediante la medición de toda la cadena de arranque de la máquina virtual.

    Nota:

    Arranque seguro requiere cargadores de arranque firmados, kernels del sistema operativo y controladores. Si después de habilitar Arranque seguro los nodos no se iniciasen, compruebe qué componentes de arranque son los responsables de los errores de Arranque seguro dentro de una máquina virtual Linux de Azure. Consulte Comprobación de errores de Arranque seguro.

    En el siguiente ejemplo se crea un clúster denominado myAKSCluster con un nodo en myResourceGroup y se habilita Arranque seguro y vTPM:

    az aks create --name myAKSCluster --resource-group myResourceGroup --node-count 1 --enable-secure-boot --enable-vtpm --enable-managed-identity --generate-ssh-keys
    
  2. Ejecute el siguiente comando para obtener las credenciales de acceso del clúster de Kubernetes. Use el comando az aks get-credentials y reemplace los valores del nombre del clúster y el nombre del grupo de recursos.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Adición de grupos de nodos con el inicio seguro habilitado

Implemente un grupo de nodos con el inicio seguro habilitado mediante el comando az aks nodepool add. Antes de ejecutar el comando, revise los parámetros siguientes:

  • --cluster-name: escriba el nombre del clúster de AKS.
  • --resource-group: escriba el nombre de un grupo de recursos existente para hospedar el recurso de clúster de AKS.
  • --name: escriba un nombre único para el grupo de nodos. El nombre de un grupo de nodos solo puede contener caracteres alfanuméricos en minúsculas y debe comenzar con una letra minúscula. En el caso de los grupos de nodos de Linux, la longitud debe estar comprendida entre 1 y 11 caracteres.
  • --node-count: el número de nodos del grupo de agentes de Kubernetes. El valor predeterminado es 3.
  • --enable-secure-boot: habilita Arranque seguro para autenticar imágenes firmadas por publicadores de confianza.
  • --enable-vtpm: habilita vTPM y realiza la atestación mediante la medición de toda la cadena de arranque de la máquina virtual.

Nota:

Arranque seguro requiere cargadores de arranque firmados, kernels del sistema operativo y controladores. Si después de habilitar Arranque seguro los nodos no se iniciasen, compruebe qué componentes de arranque son los responsables de los errores de Arranque seguro dentro de una máquina virtual Linux de Azure. Consulte Comprobación de errores de Arranque seguro.

En el ejemplo siguiente se implementa un grupo de nodos con vTPM habilitado en un clúster denominado myAKSCluster con tres nodos:

az aks nodepool add --resource-group myResourceGroup -–cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm  

En el ejemplo siguiente se implementa un grupo de nodos con vTPM y Arranque seguro habilitados en un clúster denominado myAKSCluster con tres nodos:

az aks nodepool add --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-count 3 --enable-vtpm --enable-secure-boot

Actualización del clúster y habilitación del inicio seguro

Actualice un grupo de nodos con el inicio seguro habilitado mediante el comando az aks nodepool update. Antes de ejecutar el comando, revise los parámetros siguientes:

  • --resource-group: escriba el nombre de un grupo de recursos existente que hospeda el clúster de AKS existente.
  • --cluster-name: Escriba un nombre único para el clúster de AKS, como myAKSCluster.
  • --name: escriba el nombre del grupo de nodos, como mynodepool.
  • --enable-secure-boot: habilita Arranque seguro para autenticar que las imágenes se firmaron por publicadores de confianza.
  • --enable-vtpm: habilita vTPM y realiza la atestación mediante la medición de toda la cadena de arranque de la máquina virtual.

Nota:

El grupo de nodos existente debe usar una imagen de inicio seguro para habilitar en un grupo de nodos existente. Por lo tanto, para los grupos de nodos creados antes de registrar la característica TrustedLaunchPreview, no se pueden actualizar con el inicio de confianza habilitado.

De forma predeterminada, la creación de grupos de nodos con una configuración compatible con TL y la marca de características registrada dará como resultado una imagen de inicio seguro. Sin especificar los parámetros --enable-vtpm o --enable-secure-boot, se deshabilitarán de forma predeterminada y se podrán habilitar más adelante con el comando az aks nodepool update.

Nota:

Arranque seguro requiere cargadores de arranque firmados, kernels del sistema operativo y controladores. Si después de habilitar Arranque seguro los nodos no se iniciasen, compruebe qué componentes de arranque son los responsables de los errores de Arranque seguro dentro de una máquina virtual Linux de Azure. Consulte Comprobación de errores de Arranque seguro.

En el ejemplo siguiente se actualiza el grupo de nodos mynodepool en myAKSCluster de myResourceGroup y se habilitan Arranque seguro y vTPM:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --enable-secure-boot --enable-vtpm 

Asignación de pods a nodos con el inicio seguro habilitado

Es posible restringir pods y restringirlos para que se ejecuten en un nodo o nodos concretos, o dar preferencia a los nodos con el inicio seguro habilitado. Es posible controlarlo mediante el siguiente selector de grupos de nodos en el manifiesto de pod.

Para grupos de nodos que ejecuten vTPM, aplique lo siguiente:

spec:
  nodeSelector:
        kubernetes.azure.com/trusted-launch: true

Para grupos de nodos que ejecuten Arranque seguro, aplique lo siguiente:

spec:
  nodeSelector:
        kubernetes.azure.com/secure-boot: true

Deshabilita arranque seguro.

Para deshabilitar Arranque seguro en clústeres de AKS, ejecute el siguiente comando:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-secure-boot 

Nota:

Las actualizaciones restablecen la imagen inicial de un nodo automáticamente y esta operación podría tardar varios minutos por nodo.

Deshabilitar vTPM

Para deshabilitar vTPM en clústeres de AKS, ejecute el siguiente comando:

az aks nodepool update --cluster-name myCluster --resource-group myResourceGroup --name mynodepool --disable-vtpm

Pasos siguientes

En este artículo, aprendió a habilitar el inicio seguro. Más información sobre el inicio seguro.