Configurare l'attestazione per Always Encrypted con l'attestazione di Azure
Si applica a: Database SQL di Azure
L’attestazione di Microsoft Azure è una soluzione per l’attestazione di ambienti di esecuzione attendibili (Trusted Execution Environments, TEE), incluse le enclavi Intel Software Guard Extensions (Intel SGX).
Per usare attestazione di Azure per attestare le enclavi Intel SGX usate per Always Encrypted con enclavi sicure nel database SQL di Azure, è necessario:
Creare un provider di attestazioni e configurarlo con il criterio di attestazione consigliato.
Definire l’URL di attestazione e condividerlo con gli amministratori dell’applicazione.
Importante
Con le enclavi di Intel SGX nel database SQL di Azure, l’attestazione è obbligatoria e richiede l’attestazione di Microsoft Azure. Le enclave VBS nel database SQL di Azure non supportano l’attestazione. Questo articolo si applica solo alle enclavi Intel SGX.
Nota
La configurazione dell’attestazione è responsabilità del suo amministratore. Vedere Ruoli e responsabilità per la configurazione dell’attestazione con enclave Intel SGX.
Creare e configurare un provider di attestazioni
Un provider di attestazioni è una risorsa in attestazione di Azure che valuta le richieste di attestazione rispetto ai criteri di attestazione e rilascia i token di attestazione.
I criteri di attestazione vengono specificati usando la grammatica delle regole di attestazione.
Importante
Viene creato un provider di attestazioni con i criteri predefiniti per le enclavi Intel SGX, che non convalida il codice in esecuzione all’interno dell’enclave. Microsoft consiglia vivamente di impostare il criterio consigliato usato nell’output seguente e di non usare il criterio predefinito per Always Encrypted con enclavi sicure.
Microsoft consiglia il criterio seguente per attestare le enclavi Intel SGX usate per Always Encrypted nel database SQL di Azure:
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();
[ 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=="a0f8e7f72092fb6a5d5752ffccd47fb3af7027ffb589b24e921e81f5703f3a9a"]
=> permit();
};
Verifiche del criterio:
L’enclave all’interno del database SQL di Azure non supporta il debug.
Le enclave possono essere caricate con il debug abilitato o disabilitato. Il supporto per il debug è progettato in modo da consentire agli sviluppatori di risolvere i problemi relativi al codice in esecuzione in una enclave. In un sistema di produzione, il debug potrebbe consentire a un amministratore di esaminare il contenuto dell’enclave, riducendo così il livello di protezione fornito dall’enclave. Il criterio consigliato disabilita il debug. In questo modo, se un amministratore malintenzionato tenta di attivare il supporto di debug prendendo il controllo del computer enclave, l’attestazione avrà esito negativo.
L’ID prodotto dell’enclave corrisponde all’ID prodotto assegnato a Always Encrypted con enclavi sicure.
Ogni enclave ha un ID prodotto univoco che differenzia le enclavi l’una dall’altra. L’ID prodotto assegnato all’enclave Always Encrypted è 4639.
Il numero di versione di sicurezza (SVN) della libreria è maggiore o uguale a 2.
L’SVN consente a Microsoft di rispondere a potenziali bug di sicurezza rilevati nel codice dell’enclave. Nel caso in cui venga individuato e risolto un problema di sicurezza, Microsoft distribuisce una nuova versione dell’enclave con un nuovo SVN (incrementato). Il criterio consigliato viene aggiornato per riflettere il nuovo SVN. Aggiornando il criterio in modo che corrisponda a quello consigliato, si garantisce che se un amministratore malintenzionato tenta di caricare una enclave meno recente e non sicura l’attestazione avrà esito negativo.
La libreria nell’enclave è stata firmata usando la chiave di firma Microsoft (il valore dell’attestazione x-ms-sgx-mrsigner è l’hash della chiave di firma).
Uno degli obiettivi principali dell’attestazione è convincere i client che il file binario in esecuzione nell’enclave è il file binario di cui è prevista l’esecuzione. I criteri di attestazione forniscono due meccanismi a questo scopo. Uno è l’attestazione mrenclave ovvero l’hash del file binario la cui esecuzione è prevista in una enclave. Il problema con mrenclave è che l’hash binario cambia anche con modifiche semplici al codice, il che rende difficile revocare il codice in esecuzione nell’enclave. È quindi consigliabile usare mrsigner ovvero un hash di una chiave usata per firmare il file binario dell’enclave. Quando Microsoft revoca l’enclave, mrsigner rimane invariato, purché la chiave di firma non cambi. In questo modo, si riesce a distribuire file binari aggiornati senza interrompere le applicazioni dei clienti.
Importante
Pur trattandosi di un evento raro, Microsoft potrebbe dover ruotare la chiave usata per firmare il file binario dell’enclave Always Encrypted. Prima che una nuova versione del file binario dell’enclave, firmata con una nuova chiave, venga distribuita nel database SQL di Azure, questo articolo verrà aggiornato per fornire un nuovo criterio di attestazione consigliato e istruzioni su come aggiornare il criterio nei provider di attestazioni così da garantire che le applicazioni continuino a funzionare senza interruzioni.
Per istruzioni su come creare un provider di attestazioni e configurare con un criterio di attestazione:
- Guida introduttiva: configurare Attestazione di Azure con portale di Azure
Importante
Al momento di configurare i criteri di attestazione con il portale di Azure, impostare Tipo di attestazione su
SGX-IntelSDK
. - Guida introduttiva: configurare Attestazione di Azure con Azure PowerShell
Importante
Al momento di configurare i criteri di attestazione con Azure PowerShell, impostare il parametro
Tee
suSgxEnclave
. - Guida introduttiva: configurare Attestazione di Azure con l’interfaccia della riga di comando di Azure
Importante
Al momento di configurare i criteri di attestazione con l’interfaccia della riga di comando di Azure, impostare il parametro
attestation-type
suSGX-IntelSDK
.
Determinare l’URL di attestazione per i criteri di attestazione
Una volta configurato un criterio di attestazione, è necessario condividere l’URL di attestazione con gli amministratori di applicazioni che usano Always Encrypted con enclavi sicure nel database SQL di Azure. L’URL di attestazione è il Attest URI
del provider di attestazioni contenente i criteri di attestazione e ha un aspetto simile al seguente: https://MyAttestationProvider.wus.attest.azure.net
.
Usare portale di Azure per stabilire l’URL di attestazione
Nel riquadro Panoramica per il provider di attestazioni copiare il valore della proprietà Attest URI
negli Appunti.
Usare PowerShell per stabilire l’URL di attestazione
Usare il cmdlet Get-AzAttestation
per recuperare le proprietà del provider di attestazione, incluso AttestURI.
Get-AzAttestation -Name $attestationProviderName -ResourceGroupName $attestationResourceGroupName
Per altre informazioni, consultare Creare e gestire un provider di attestazioni.