PowerShell e interfaccia della riga di comando di Azure: Abilitare Transparent Data Encryption con una chiave di Azure Key Vault gestita dal cliente

Si applica a:database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

Questo articolo illustra come usare una chiave di Azure Key Vault per Transparent Data Encryption (TDE) in database SQL di Azure o Azure Synapse Analytics. Per altre informazioni sull'integrazione di TDE con Azure Key Vault e sulla possibilità di usare chiavi personalizzate o BYOK (Bring Your Own Key), vedere TDE con chiavi gestite dal cliente in Azure Key Vault. portale di Azure Per istruzioni su come abilitare TDE con una chiave gestita dal cliente da Azure Key Vault, vedere Creare un server configurato con identità gestita assegnata dall'utente e TDE gestito dal cliente.

Questo articolo si applica a database SQL di Azure, Istanza gestita di SQL di Azure e Azure Synapse Analytics (pool SQL dedicati (in precedenza SQL Data Warehouse)). Per la documentazione su Transparent Data Encryption per pool SQL dedicati all'interno delle aree di lavoro di Synapse, vedere Crittografia di Azure Synapse Analytics.

Nota

SQL di Azure supporta ora l'uso di una chiave RSA archiviata in un modulo di protezione hardware gestito come protezione TDE. Il modulo di protezione hardware gestito di Azure Key Vault è un servizio cloud completamente gestito, a disponibilità elevata, a tenant singolo e conforme agli standard che consente di proteggere le chiavi crittografiche per le applicazioni cloud tramite moduli di protezione hardware convalidati in base agli standard FIPS 140-2 livello 3. Altre informazioni sui moduli di protezione hardware gestiti.

Nota

Microsoft Entra ID era precedentemente noto come Azure Active Directory (Azure AD).

Prerequisiti per PowerShell

  • È necessario disporre di una sottoscrizione di Azure e avere il ruolo di amministratore di tale sottoscrizione.
  • [Consigliata ma facoltativa] Disporre di un modulo di protezione hardware (HSM) o una chiave locale già archiviati a scopo di creazione di una copia locale del materiale della chiave di protezione TDE.
  • È necessario che Azure PowerShell sia installato ed eseguito.
  • Creare le chiavi e un Azure Key Vault per l'uso con TDE.
  • La chiave deve avere gli attributi seguenti da usare per TDE:
    • La data di attivazione (se impostata) deve essere una data e un'ora nel passato
    • La data di scadenza (se impostata) deve essere una data e un'ora future
    • La chiave deve essere nello stato Abilitato
    • In grado di eseguire le operazioni Ottieni, Esegui il wrapping della chiave, Annulla il wrapping della chiave
  • Per usare una chiave HSM gestita, seguire le istruzioni per creare e attivare un modulo di protezione hardware gestito tramite l'interfaccia della riga di comando di Azure

Per istruzioni sull'installazione del modulo Az, vedere Installare Azure PowerShell. Per cmdlet specifici, vedere AzureRM.Sql.

Per informazioni specifiche sull'insieme di credenziali delle chiavi, vedere Istruzioni di PowerShell da Key Vault e Come usare l'eliminazione temporanea di Key Vault con PowerShell.

Importante

Il modulo Azure Resource Manager di PowerShell è ancora supportato, ma tutte le attività di sviluppo future sono incentrate sul modulo Az.Sql. Il modulo AzureRM continuerà a ricevere correzioni di bug almeno fino a dicembre 2020. Gli argomenti per i comandi nei moduli Az e AzureRm sono sostanzialmente identici. Per altre informazioni sulla compatibilità, vedere Introduzione del nuovo modulo Az di Azure PowerShell.

Assegnare un'identità Microsoft Entra al server

Se si dispone di un server esistente, usare quanto segue per aggiungere un'identità Microsoft Entra al server:

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

Se si crea un server, usare il cmdlet New-AzSqlServer con il tag -Identity per aggiungere un'identità Microsoft Entra durante la creazione del server:

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

Concedere le autorizzazioni di Key Vault al server

Usare il cmdlet Set-AzKeyVaultAccessPolicy per concedere al server l'accesso all'insieme di credenziali delle chiavi prima di usare una chiave per TDE.

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

Per aggiungere autorizzazioni al server in un modulo di protezione hardware gestito, aggiungere il ruolo RBAC locale "Managed HSM Crypto Service Encryption User" al server. In questo modo il server potrà eseguire operazioni get, wrap key, unwrap key sulle chiavi nel modulo di protezione hardware gestito. Istruzioni per il provisioning dell'accesso al server nel modulo di protezione hardware gestito

Aggiungere la chiave di Key Vault al server e impostare la protezione TDE

Nota

Per le chiavi HSM gestite, usare az.sql 2.11.1 versione di PowerShell.

Nota

La lunghezza combinata per il nome dell'insieme di credenziali delle chiavi non può superare 94 caratteri.

Suggerimento

Un KeyId di esempio da Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

KeyId di esempio del modulo di protezione hardware gestito:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey

# add the key from Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>

# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
   -Type AzureKeyVault -KeyId <KeyVaultKeyId>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

Attivare la crittografia TDE

Usare il cmdlet Set-AzSqlDatabaseTransparentDataEncryption per attivare TDE.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

A questo punto il database o il data warehouse ha abilitato TDE con una chiave di crittografia in Key Vault.

Controllare lo stato della crittografia e l'attività di crittografia

Usare Get-AzSqlDatabaseTransparentDataEncryption per ottenere lo stato di crittografia per un database o un data warehouse.

# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

Cmdlet PowerShell utili

  • Usare il cmdlet Set-AzSqlDatabaseTransparentDataEncryption per disattivare TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Usare il cmdlet Get-AzSqlServerKeyVaultKey per restituire l'elenco delle chiavi di Key Vault aggiunte al server.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Usare Remove-AzSqlServerKeyVaultKey per rimuovere una chiave di Key Vault dal server.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

Risoluzione dei problemi

Se si verifica un problema, controllare quanto segue:

  • Se non è possibile trovare l'insieme di credenziali delle chiavi, assicurarsi di trovarsi nella sottoscrizione corretta.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Se non è possibile aggiungere la nuova chiave al server o non è possibile aggiornare la nuova chiave come protezione TDE, verificare quanto segue:
    • La chiave non deve avere una data di scadenza
    • La chiave deve avere le operazioni Ottieni, Esegui il wrapping della chiave, Annulla il wrapping della chiave.

Passaggi successivi