Configuración de la atestación para Always Encrypted mediante Azure Attestation

Se aplica a:Azure SQL Database

Microsoft Azure Attestation es una solución para la atestación de entornos de ejecución de confianza (TEE), incluidos los enclaves de Intel Software Guard Extensions (Intel SGX).

Para usar Azure Attestation para la atestación de enclaves de Intel SGX usados para Always Encrypted con enclaves seguros en Azure SQL Database, debe:

  1. Crear un proveedor de atestación y configurarlo con la directiva de atestación recomendada.

  2. Determine la dirección URL de atestación y compártala con los administradores de aplicaciones.

Importante

Con enclaves de Intel SGX en Azure SQL Database, la atestación es obligatoria y requiere Microsoft Azure Attestation. Los enclaves de VBS en Azure SQL Database no admiten la atestación. Este artículo solo se aplica a los enclaves de Intel SGX.

Nota:

La configuración de la atestación es responsabilidad del administrador de atestación. Consulte Roles y responsabilidades al configurar la atestación y los enclaves de Intel SGX.

Creación y configuración de un proveedor de atestación

Un proveedor de atestación es un recurso de Azure Attestation que evalúa solicitudes de atestación con directivas de atestación y emite tokens de atestación.

Las directivas de atestación se especifican mediante la gramática de reglas de notificaciones.

Importante

Se crea un proveedor de atestación con la directiva predeterminada para enclaves de Intel SGX, lo cual no valida el código que se ejecuta dentro de enclave. Microsoft recomienda encarecidamente establecer la directiva recomendada utilizada en la siguiente salida y no usar la directiva predeterminada para Always Encrypted con enclaves seguros.

Microsoft recomienda la siguiente directiva para la atestación de enclaves de Intel SGX que se usa para Always Encrypted en Azure SQL Database:

version= 1.0;
authorizationrules 
{
       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 2 ]
        && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
    => permit();
};

La directiva comprueba lo siguiente:

  • El enclave de Azure SQL Database no admite la depuración.

    Los enclaves se pueden cargar con la depuración deshabilitada o habilitada. La compatibilidad con la depuración está diseñada para permitir a los desarrolladores solucionar problemas del código que se ejecuta en un enclave. En un sistema de producción, la depuración podría permitir a un administrador examinar el contenido de enclave, lo que reduciría el nivel de protección que proporciona el enclave. La directiva recomendada deshabilita la depuración para asegurarse de que si un administrador malintencionado intenta activar la compatibilidad con la depuración mediante el uso de la máquina de enclave, se producirá un error en la atestación.

  • El id. del producto del enclave coincide con el id. del producto asignado a Always Encrypted con enclaves seguros.

    Cada enclave tiene un id. del producto único que diferencia el enclave de otros enclaves. El id. del producto asignado al enclave de Always Encrypted es 4639.

  • El número de versión de seguridad (SVN) de la biblioteca es mayor o igual que 2.

    SVN permite a Microsoft responder a posibles errores de seguridad identificados en el código enclave. En caso de que se detecte y corrija una incidencia de seguridad, Microsoft implementará una nueva versión de enclave con un nuevo SVN (incrementado). La directiva recomendada se actualiza para reflejar el nuevo SVN. Cuando actualiza la directiva para que coincida con la directiva recomendada, se asegura de que si un administrador malintencionado intenta cargar un enclave anterior e inseguro, se producirá un error en la atestación.

  • La biblioteca del enclave se ha firmado con la clave de firma de Microsoft (el valor de la notificación x-ms-sgx-mrsigner es el hash de la clave de firma).

    Uno de los principales objetivos de la atestación es convencer a los clientes de que el binario que se ejecuta en el enclave es el binario que se supone que se ejecuta. Las directivas de atestación proporcionan dos mecanismos para este fin. Uno es la notificación de mrenclave, que es el hash del archivo binario que se supone que se va a ejecutar en un enclave. El problema con mrenclave es que el hash binario cambia incluso con cambios triviales en el código, lo que dificulta la revisión del código que se ejecuta en el enclave. Por lo tanto, se recomienda el uso de mrsigner, que es un hash de una clave que se usa para firmar el binario del enclave. Cuando Microsoft revierte el enclave, mrsigner permanece igual, siempre y cuando la clave de firma no cambie. De esta manera, es factible implementar archivos binarios actualizados sin interrumpir las aplicaciones de los clientes.

Importante

De forma poco frecuente, es posible que Microsoft tenga que rotar la clave que se usa para firmar el binario del enclave Always Encrypted. Antes de que se implemente en Azure SQL Database una nueva versión del binario del enclave firmada con una nueva clave, este artículo se actualizará para proporcionar una nueva directiva de atestación recomendada e instrucciones sobre cómo debe actualizar la directiva en los proveedores de atestación para asegurarse de que las aplicaciones sigan funcionando sin interrupciones.

Para obtener instrucciones sobre cómo crear un proveedor de atestación y configurar con una directiva de atestación, consulte:

Determinación de la dirección URL de atestación de la directiva de atestación

Después de configurar una directiva de atestación, debe compartir la dirección URL de atestación con los administradores de aplicaciones que usan Always Encrypted con enclaves seguros en Azure SQL Database. La dirección URL de atestación es la propiedad Attest URI del proveedor de atestación que contiene la directiva de atestación, que es así: https://MyAttestationProvider.wus.attest.azure.net.

Uso de Azure Portal para determinar la dirección URL de atestación

En el panel de información general del proveedor de atestación, copie el valor de la propiedad Attest URI en el Portapapeles.

Uso de PowerShell para determinar la dirección URL de atestación

Use el cmdlet Get-AzAttestation para recuperar las propiedades del proveedor de atestación, incluida AttestURI.

Get-AzAttestation -Name $attestationProviderName -ResourceGroupName $attestationResourceGroupName

Para más información, consulte Creación y administración de un proveedor de atestación.

Pasos siguientes

Consulte también