Compartir a través de


Cifrar discos del sistema operativo con una clave administrada por el cliente en Red Hat OpenShift en Azure

De forma predeterminada, los discos de sistema operativo de las máquinas virtuales de un clúster de Red Hat OpenShift en Azure se cifran con claves generadas automáticamente administradas por Microsoft Azure. Para mayor seguridad, los clientes pueden cifrar los discos del sistema operativo con claves autoadministradas al implementar un clúster de Red Hat OpenShift en Azure. Esta característica proporciona un mayor control, ya que cifra los datos confidenciales con claves administradas por el cliente (CMK).

Los clústeres creados con claves administradas por el cliente tienen una clase de almacenamiento predeterminada habilitada con sus claves. Por lo tanto, estas claves cifran los discos del sistema operativo y los de datos. Las claves administradas por el cliente se almacenan en Azure Key Vault.

Para más información sobre el uso de Azure Key Vault para crear y mantener claves, consulte Cifrado del lado servidor de Azure Disk Storage en la documentación de Microsoft Azure.

Con el cifrado basado en host, los datos almacenados en el host de máquina virtual de las máquinas virtuales de los nodos de agente de Red Hat OpenShift en Azure se cifran en reposo y se transmiten cifrados al servido Storage. El cifrado basado en host significa que los discos temporales se cifran en reposo con claves administradas por la plataforma.

La caché de los discos de datos y del sistema operativo se cifra en reposo con claves administradas por la plataforma o por el cliente, en función del tipo de cifrado establecido en esos discos. De forma predeterminada, cuando se usa Red Hat OpenShift en Azure, los discos de datos y del sistema operativo se cifran en reposo con claves administradas por la plataforma, lo que significa que las memorias caché de estos discos también se cifran en reposo de forma predeterminada con claves administradas por la plataforma.

Puede especificar sus propias claves administradas siguiendo los pasos de cifrado siguientes. La caché de estos discos también se cifrará con la clave que especifique en este paso.

Limitación

Los clientes son los responsables del mantenimiento del almacén de claves y del conjunto de cifrado de disco en Azure. Si no se conservan las claves, se interrumpirán los clústeres de Red Hat OpenShift en Azure. Las máquinas virtuales dejarán de funcionar y, en consecuencia, todo el clúster de Red Hat OpenShift en Azure dejará de funcionar.

El equipo de ingeniería de Red Hat OpenShift en Azure no puede acceder a las claves. Por consiguiente, no pueden realizar copias de seguridad de las llaves, crear réplicas de ellas ni recuperarlas.

Para obtener más información sobre el uso de conjuntos de cifrado de disco para administrar las claves de cifrado, consulte Cifrado del lado servidor de Azure Disk Storage en la documentación de Microsoft Azure.

Requisitos previos

  • Comprobación de los permisos. Debe tener los permisos de colaborador y administrador de acceso de usuarios, o bien de permisos de propietario.

  • Si tiene varias suscripciones a Azure, registre los proveedores de recursos. Para obtener más detalles sobre el registro, consulte Registro de los proveedores de recursos.

  • Deberá tener habilitada la característica EncryptionAtHost en la suscripción. Puede habilitarla ejecutando:

    az feature register --namespace Microsoft.Compute --name EncryptionAtHost
    
  • Para comprobar el estado actual de la característica, ejecute lo siguiente:

    az feature show --namespace Microsoft.Compute --name EncryptionAtHost
    

Creación de una red virtual que contenga dos subredes vacías

Cree una red virtual con dos subredes vacías. Si ya tiene una red virtual adaptada a sus necesidades, puede omitir este paso. Para revisar el procedimiento de creación de una red virtual, consulte Creación de una red virtual con dos subredes vacías.

Creación de una instancia de Azure Key Vault

Debe usar una instancia de Azure Key Vault para almacenar las claves. Cree una nueva instancia de Key Vault con la protección de purga habilitada. A continuación, cree una nueva clave Key Vault para almacenar su propia clave personalizada.

  1. Establezca más permisos de entorno:
    export KEYVAULT_NAME=$USER-enckv
    export KEYVAULT_KEY_NAME=$USER-key
    export DISK_ENCRYPTION_SET_NAME=$USER-des
    
  2. Cree una instancia de Key Vault y una clave en Key Vault:
    az keyvault create -n $KEYVAULT_NAME \
                   -g $RESOURCEGROUP \
                   -l $LOCATION \
                   --enable-purge-protection true
    
    az keyvault key create --vault-name $KEYVAULT_NAME \
                           -n $KEYVAULT_KEY_NAME \
                           --protection software
    
    KEYVAULT_ID=$(az keyvault show --name $KEYVAULT_NAME --query "[id]" -o tsv)
    
    KEYVAULT_KEY_URL=$(az keyvault key show --vault-name $KEYVAULT_NAME \
                                            --name $KEYVAULT_KEY_NAME \
                                            --query "[key.kid]" -o tsv)
    

Creación de un conjunto de cifrado de disco de Azure

El conjunto de cifrado de disco de Azure se usa como punto de referencia para los discos en los clústeres de Red Hat OpenShift en Azure. Está conectado a la instancia de Azure Key Vault que creó en el paso anterior y extrae las claves administradas por el cliente de esa ubicación.

az disk-encryption-set create -n $DISK_ENCRYPTION_SET_NAME \
                              -l $LOCATION \
                              -g $RESOURCEGROUP \
                              --source-vault $KEYVAULT_ID \
                              --key-url $KEYVAULT_KEY_URL

DES_ID=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME -g $RESOURCEGROUP --query 'id' -o tsv)

DES_IDENTITY=$(az disk-encryption-set show -n $DISK_ENCRYPTION_SET_NAME \
                                           -g $RESOURCEGROUP \
                                           --query "[identity.principalId]" \
                                           -o tsv)

Concesión de permisos para que el conjunto de cifrado de disco acceda a Key Vault

Use el conjunto de cifrado de disco que creó en el paso anterior y conceda permiso para que dicho conjunto pueda acceder a Azure Key Vault y usarlo.

az keyvault set-policy -n $KEYVAULT_NAME \
                       -g $RESOURCEGROUP \
                       --object-id $DES_IDENTITY \
                       --key-permissions wrapkey unwrapkey get

Creación de un clúster de Red Hat OpenShift en Azure

Cree un clúster de Red Hat OpenShift en Azure para usar las claves administradas por el cliente.

Nota:

Habilitar CMK en clústeres de ARO existentes solo es posible para los nodos de trabajo, no para los nodos maestros. Esto se puede lograr mediante machine-API a través de CR del conjunto de máquinas. Vea Habilitación de claves de cifrado administradas por el cliente para un conjunto de máquinas y Modificación de un conjunto de máquinas de proceso para obtener más información.

az aro create --resource-group $RESOURCEGROUP \
              --name $CLUSTER  \
              --vnet aro-vnet  \
              --master-subnet master-subnet \
              --worker-subnet worker-subnet \
              --disk-encryption-set $DES_ID

Después de crear el clúster de Red Hat OpenShift en Azure, todas las máquinas virtuales se cifran con las claves de cifrado administradas por el cliente.

Para comprobar que ha configurado las claves correctamente, ejecute los siguientes comandos:

  1. Obtenga el nombre del grupo de recursos de clúster donde se encuentran las VM, los discos, etc.:
    CLUSTERRESOURCEGROUP=$(az aro show --resource-group $RESOURCEGROUP --name $CLUSTER --query 'clusterProfile.resourceGroupId' -o tsv | cut -d '/' -f 5)
    
  2. Compruebe que los discos tienen asociado el conjunto de cifrado de disco correcto:
    az disk list -g $CLUSTERRESOURCEGROUP --query '[].encryption'
    
    El campo diskEncryptionSetId de la salida debe apuntar al conjunto de cifrado de disco que especificó al crear el clúster de Red Hat OpenShift en Azure.