Risolvere i problemi comuni per Always Encrypted con enclave sicure

Si applica a: SQL Server 2019 (15.x) e versioni successive nel database SQL di Windows Azure

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.

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.

  1. Il driver client passa l'URL di attestazione, specificato nella connessione di database, al server logico SQL di Azure.
  2. 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.
  3. 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.
  4. Il server logico SQL di Azure invia il token di attestazione al driver client.
  5. 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 fornitore di attestazioni è stato accidentalmente eliminato.
    • Il firewall è stato configurato per il provider di attestazioni, ma non consente l'accesso ai servizi Microsoft.
    • Un errore di rete intermittente provoca l'indisponibilità del provider di attestazione.
  • Il server logico di Azure SQL non è autorizzato a inviare richieste di attestazione al provider di attestazioni. Verificare che l'amministratore del provider di attestazione abbia aggiunto il server di database al ruolo Attestation Reader.
  • 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 durante l'uso di Host Guardian Service

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).

  1. Il driver client chiama SQL Server per avviare l'attestazione.
  2. 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à dall'istanza di HGS con cui è stato registrato il computer che ospita SQL Server. Per altre informazioni, vedi Registrare il computer con Host Guardian Service.
  3. HGS convalida le prove e rilascia il certificato di integrità a SQL Server. HGS firma il certificato di stato di integrità con la propria chiave privata.
  4. SQL Server invia il certificato di integrità al driver client.
  5. Il driver del client contatta HGS all'URL di attestazione specificato per la connessione al database per recuperare la chiave pubblica di HGS. Il driver del client verifica la firma nel certificato di stato 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 a HGS e a recuperare la chiave pubblica di firma (nel passaggio 5). La probabile causa è:
    • La configurazione di uno dei firewall tra l'applicazione e il provider di attestazioni può bloccare le connessioni. Verifica che la macchina che ospita l'app possa connettersi alla macchina HGS.

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.
  • Non hai abilitato Always Encrypted e i calcoli nell'enclave per la connessione al database. Vedere Prerequisiti per eseguire 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).

Passo successivo