Risolvere i problemi comuni per Always Encrypted con enclave sicure
Si applica a: SQL Server 2019 (15.x) e versioni successive - Database SQL di Azure solo Windows
Questo articolo descrive come identificare e risolvere i problemi comuni che è possibile riscontrare quando si eseguono istruzioni Transact-SQL (TSQL) con Always Encrypted con enclave sicure.
Per informazioni su come eseguire le query usando le enclave sicure, vedere Eseguire istruzioni Transact-SQL con enclave sicure.
Errori di connessione del database
Per eseguire le istruzioni usando un'enclave sicura, è necessario abilitare Always Encrypted, specificare un protocollo di attestazione e, se applicabile, un URL di attestazione, per la connessione di database, come illustrato in Prerequisiti per l'esecuzione di istruzioni con enclave sicure. La connessione avrà tuttavia esito negativo se si specifica un protocollo di attestazione ma il database SQL di Azure o l'istanza di SQL Server di destinazione non supportano le enclave sicure oppure non sono configurati correttamente.
- Se si usa il database SQL di Azure con le enclave Intel SGX, controllare che il database usi la configurazione hardware della serie DC. Per ulteriori informazioni, vedere Abilitare le enclave Intel SGX per il database SQL di Azure.
- Se si usa il database SQL di Azure con enclave VBS, verificare che la proprietà di database preferredEnclaveType sia impostata su VBS. Per ulteriori informazioni, vedere Abilitare le enclave Intel SGX per il database SQL di Azure.
- Se si usa SQL Server 2019 (15.x) o versioni successive, verificare che l'enclave sicura sia configurata correttamente per l'istanza. Per altre informazioni, vedere Configurare l'enclave sicura in SQL Server.
Errori di attestazione quando si usa l'attestazione Microsoft Azure
Nota
Questa sezione si applica solo al database SQL di Azure con enclave Intel SGX.
Prima che un driver client invii un'istruzione T-SQL al server logico SQL di Azure per l'esecuzione, il driver attiva il flusso di lavoro di attestazione dell'enclave seguente usando l'attestazione di Microsoft Azure.
- Il driver client passa l'URL di attestazione, specificato nella connessione di database, al server logico SQL di Azure.
- Il server logico SQL di Azure raccoglie l'evidenza relativa all'enclave, l'ambiente di hosting e il codice in esecuzione all'interno dell'enclave. Il server invia quindi una richiesta di attestazione al provider di attestazioni, a cui si fa riferimento nell'URL di attestazione.
- Il provider di attestazioni convalida l'evidenza in base ai criteri configurati e rilascia un token di attestazione al server logico SQL di Azure. Il provider di attestazioni firma il token di attestazione con la chiave privata.
- Il server logico SQL di Azure invia il token di attestazione al driver client.
- Il client contatta il provider di attestazioni all'URL di attestazione specificato per recuperare la chiave pubblica e verifica la firma nel token di attestazione.
Possono verificarsi errori in vari passaggi del flusso di lavoro descritto in precedenza a causa di problemi di configurazione. Di seguito sono riportati gli errori di attestazione comuni, le cause radice e i passaggi consigliati per la risoluzione dei problemi:
- Il server logico SQL di Azure non riesce a connettersi al provider di attestazioni nell'attestazione di Azure (passaggio 2 del flusso di lavoro precedente), specificato nell'URL di attestazione. Il problema potrebbe essere dovuto alle cause seguenti:
- L'URL di attestazione non è corretto o non è completo. Per altre informazioni, vedere Determinare l'URL di attestazione per i criteri di attestazione.
- Il provider di attestazioni è stato eliminato accidentalmente.
- Il firewall è stato configurato per il provider di attestazioni, ma non consente l'accesso ai servizi Microsoft.
- Un errore di rete intermittente rende non disponibile il provider di attestazioni.
- Il server logico di Azure SQL non è autorizzato a inviare richieste di attestazione al provider di attestazioni. Assicurarsi che l'amministratore del provider di attestazioni abbia aggiunto il server di database al ruolo con autorizzazioni di lettura per le attestazioni.
- La convalida dei criteri di attestazione ha esito negativo (nel passaggio 3 del flusso di lavoro precedente).
- Un criterio di attestazione non corretto è la probabile causa radice. Assicurarsi di usare i criteri consigliati da Microsoft. Per altre informazioni, vedere Creare e configurare un provider di attestazioni.
- La convalida dei criteri può avere esito negativo anche a causa di una violazione della sicurezza che compromette l'enclave lato server.
- L'applicazione client non riesce a connettersi al provider di attestazioni e a recuperare la chiave di firma pubblica (nel passaggio 5). Il problema potrebbe essere dovuto alle cause seguenti:
- La configurazione dei firewall tra l'applicazione e il provider di attestazioni può bloccare le connessioni. Per risolvere i problemi relativi alla connessione bloccata, verificare che sia possibile connettersi all'endpoint OpenId del provider di attestazioni. Usare, ad esempio, un Web browser nel computer che ospita l'applicazione per verificare se è possibile connettersi all'endpoint OpenID. Per altre informazioni, vedere Configurazione dei metadati - Get.
Errori di attestazione quando si usa il servizio Sorveglianza host
Nota
Questa sezione si applica solo a SQL Server 2019 (15.x) e versioni successive.
Prima che un driver client invii un'istruzione T-SQL a SQL Server per l'esecuzione, il driver attiva il flusso di lavoro di attestazione dell'enclave seguente usando il servizio Sorveglianza host (HGS).
- Il driver client chiama SQL Server per avviare l'attestazione.
- SQL Server raccoglie le prove relative all'enclave, all'ambiente di hosting e al codice in esecuzione all'interno dell'enclave. SQL Server richiede un certificato di integrità all'istanza di HGS, per cui è stato registrato il computer che ospita SQL Server. Per altre informazioni, vedere Registrare il computer per il servizio Sorveglianza host.
- HGS convalida le prove e rilascia il certificato di integrità a SQL Server. Il servizio Sorveglianza host firma il certificato di integrità con la chiave privata.
- SQL Server invia il certificato di integrità al driver client.
- Il driver client contatta il servizio Sorveglianza host all'URL di attestazione, specificato per la connessione di database, per recuperare la chiave pubblica del servizio Sorveglianza host. Il driver client verifica la firma nel certificato di integrità.
Possono verificarsi errori in vari passaggi del flusso di lavoro descritto in precedenza a causa di problemi di configurazione. Di seguito sono riportati alcuni errori di attestazione comuni, le cause radice e i passaggi consigliati per la risoluzione dei problemi:
- SQL Server non riesce a connettersi a HGS (passaggio 2 del flusso di lavoro precedente) a causa di un errore di rete intermittente. Per risolvere il problema di connessione, l'amministratore del computer con SQL Server deve verificare che il computer riesca a connettersi al computer di HGS.
- La convalida nel passaggio 3 ha esito negativo. Per risolvere il problema di convalida:
- L'amministratore del computer con SQL Server deve collaborare con l'amministratore di applicazioni client per verificare che il computer con SQL Server sia registrato per la stessa istanza di HGS dell'istanza a cui si fa riferimento nell'URL di attestazione sul lato client.
- L'amministratore del computer con SQL Server deve verificare che il computer con SQL Server possa eseguire l'attestazione correttamente, seguendo le istruzioni riportate in Passaggio 5: Confermare che l'host può eseguire l'attestazione correttamente.
- L'applicazione client non riesce a connettersi al servizio Sorveglianza host e a recuperare la chiave di firma pubblica (nel passaggio 5). La probabile causa è:
- La configurazione di uno dei firewall tra l'applicazione e il provider di attestazioni può bloccare le connessioni. Verificare che il computer che ospita l'app possa connettersi al computer del servizio Sorveglianza host.
Errori di crittografia sul posto
Questa sezione elenca gli errori comuni che possono verificarsi quando si usa ALTER TABLE
/ALTER COLUMN
per la crittografia sul posto (oltre agli errori di attestazione descritti nelle sezioni precedenti). Per altre informazioni, vedere Configurare la crittografia delle colonne sul posto usando Always Encrypted con enclave sicure.
- La chiave di crittografia della colonna che si sta provando a usare per crittografare, decrittografare o crittografare nuovamente i dati non è una chiave abilitata per l'enclave. Per altre informazioni sui prerequisiti per la crittografia sul posto, vedere Prerequisiti. Per informazioni su come effettuare il provisioning delle chiavi abilitate per l'enclave, vedere Effettuare il provisioning delle chiavi abilitate per l'enclave.
- Always Encrypted e i calcoli dell'enclave non sono stati abilitati per la connessione di database. Vedere Prerequisiti per l'esecuzione di istruzioni con enclave sicure.
- L'istruzione
ALTER TABLE
/ALTER COLUMN
attiva un'operazione di crittografia e modifica il tipo di dati della colonna o imposta le regole di confronto con una tabella codici diversa dalla tabella codici delle regole di confronto corrente. Non è consentito combinare le operazioni di crittografia con le modifiche al tipo di dati o alla pagina delle regole di confronto. Per risolvere il problema, usare istruzioni separate: un'istruzione per modificare il tipo di dati o la tabella codici delle regole di confronto e un'altra istruzione per la crittografia sul posto.
Errori durante l'esecuzione di query DML riservate con enclave sicure
Questa sezione elenca gli errori comuni che possono verificarsi quando si eseguono query DML riservate con enclave sicure (oltre agli errori di attestazione descritti nelle sezioni precedenti).
- La chiave di crittografia configurata per la colonna su cui si esegue la query non è una chiave abilitata per l'enclave.
- Always Encrypted e i calcoli dell'enclave non sono stati abilitati per la connessione di database. Per altre informazioni, vedere Prerequisiti per l'esecuzione di istruzioni con enclave sicure.
- La colonna su cui si esegue la query usa la crittografia deterministica. Le query DML riservate che usano enclave sicure non sono supportate con la crittografia deterministica. Per altre informazioni su come modificare il tipo di crittografia in casuale, vedere Abilitare Always Encrypted con enclave sicure per le colonne crittografate esistenti.
- La colonna di stringhe su cui si esegue la query usa regole di confronto diverse da BIN2 o UTF-8. Cambiare le regole di confronto in BIN2 o UTF-8. Per altre informazioni, vedere Istruzioni DML con enclave sicure.
- La query attiva un'operazione non supportata. Per l'elenco di operazioni supportate all'interno delle enclave, vedere Istruzioni DML con enclave sicure.