PowerShell en Azure CLI: Transparent Data Encryption inschakelen met door de klant beheerde sleutel vanuit Azure Key Vault

Van toepassing op:Azure SQL DatabaseAzure SQL Managed Instance

Dit artikel laat zien hoe je een sleutel uit Azure Key Vault kunt gebruiken voor transparante data-encryptie (TDE) in de Azure SQL Database. Ga naar TDE met door de klant beheerde sleutels in Azure Key Vaultvoor meer informatie over de TDE met Azure Key Vault-integratie - ByOk -ondersteuning (Bring Your Own Key). Als je Azure-portaalinstructies wilt over hoe je TDE inschakelt met een door de klant beheerde sleutel van Azure Key Vault, zie dan Server maken die is geconfigureerd met een door de gebruiker toegewezen beheerde identiteit en door de klant beheerde TDE.

Notitie

Azure SQL Database ondersteunt zowel asymmetrische (RSA) als symmetrische (AES) sleutels voor door klanten beheerde Transparent Data Encryption, afhankelijk van de configuratie. Ondersteuning voor AES-sleutels (symmetrische) is momenteel beschikbaar als openbare preview en is beperkt tot Azure SQL Database. Je kunt deze mogelijkheid in de loop van de tijd zien verschijnen, afhankelijk van je regio en de status van dienstuitrol. Voor details, zie Transparent Data Encryption with customer-managed keys (BYOK).

Vereisten voor PowerShell

  • U moet een Azure-abonnement hebben en een beheerder van dat abonnement zijn.
  • [Aanbevolen maar optioneel] Zorg voor een hardwarebeveiligingsmodule (HSM) of een lokaal sleutelarchief voor het maken van een lokale kopie van het TDE Protector-sleutelmateriaal.
  • U moet Azure PowerShell hebben geïnstalleerd en uitgevoerd.
  • Maak een Azure Key Vault en Sleutel die u voor TDE wilt gebruiken.
  • De sleutel moet de volgende kenmerken hebben die moeten worden gebruikt voor TDE:
    • De activeringsdatum (indien ingesteld) moet een datum en tijd in het verleden zijn
    • De vervaldatum (indien ingesteld) moet een toekomstige datum en tijd zijn
    • De sleutel moet de status Ingeschakeld hebben
    • In staat om op te halen, sleutel in te pakken, sleutel uit te pakken bewerkingen uit te voeren.
  • Als u een Azure Key Vault beheerde HSM-sleutel wilt gebruiken, volgt u de instructies voor het maken en activeren van een beheerde HSM met behulp van Azure CLI

Zie Azure PowerShell-installeren voor installatie-instructies voor Az PowerShell-module.

Zie voor specifieke informatie over Azure Key Vault de PowerShell-instructies van Azure Key Vault en hoe u soft-delete van Azure Key Vault met PowerShell kunt gebruiken.

Een Microsoft Entra-identiteit toewijzen aan uw server

Als je een bestaande server hebt, gebruik dan de volgende instructies om een Microsoft Entra-identiteit aan je server toe te voegen:

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

Als je een server maakt, gebruik dan de New-AzSqlServer-cmdlet met de -Identity tag om een Microsoft Entra-identiteit toe te voegen tijdens het serveraanmaken:

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

Azure Key Vault-machtigingen verlenen aan uw server

Gebruik de cmdlet Set-AzKeyVaultAccessPolicy om uw server toegang te verlenen tot de sleutelkluis voordat u een sleutel uit de sleutelkluis voor TDE gebruikt.

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

Om rechten toe te voegen aan je server op een Managed HSM, voeg je de lokale RBAC-rol Managed HSM Crypto Service Encryption User toe aan de server. Deze rol stelt de server in staat om wrap key, unwrap key en get bewerkingen uit te voeren op de sleutels in de Managed HSM. Zie Beheer van beheerde HSM-rollen voor meer informatie.

De Azure Key Vault-sleutel toevoegen aan de server en de TDE-beveiliging instellen

Notitie

Voor beheerde HSM-sleutels gebruikt u Az.Sql 2.11.1-versie van PowerShell of hoger.

Notitie

De gecombineerde lengte van de sleutelkluisnaam en sleutelnaam mag niet hoger zijn dan 94 tekens.

Advies

Versiegebonden en versieloze Azure Key Vault-sleutels gebruiken voor TDE

Bij het instellen van de TDE-beveiliging kun je een Azure Key Vault-sleutel refereren door een specifieke sleutelversie of een versieloze sleutelidentificatie te gebruiken.

In beide gevallen wordt in Azure SQL Database altijd de meest recente ingeschakelde versie van de sleutel in Azure Key Vault of Azure Key Vault Managed HSM opgelost en gebruikt. Gebruik versieloze sleutel-id's om te voorkomen dat een specifieke sleutelversie wordt ingesloten in de configuratie van de TDE-protector.

Versieloze sleutel-id's worden momenteel alleen ondersteund voor Azure SQL Database.

Voorbeelden:

  • Sleutel-id die een specifieke versie bevat

    https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>

  • Versieloze sleutel-id

    https://<key-vault-name>.vault.azure.net/keys/<key-name>

# add the key from Azure 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>

TDE inschakelen

Gebruik de cmdlet Set-AzSqlDatabaseTransparentDataEncryption om TDE in te schakelen.

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

Nu heeft de database TDE ingeschakeld met een encryptiesleutel in Azure Key Vault.

De versleutelingsstatus en versleutelingsactiviteit controleren

Gebruik de cmdlet Get-AzSqlDatabaseTransparentDataEncryption om de encryptiestatus van een database te verkrijgen.

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

Nuttige PowerShell-cmdlets

  • Gebruik de cmdlet Set-AzSqlDatabaseTransparentDataEncryption om TDE uit te schakelen.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Gebruik de cmdlet Get-AzSqlServerKeyVaultKey om de lijst met Azure Key Vault-sleutels te retourneren die aan de server zijn toegevoegd.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Gebruik de Remove-AzSqlServerKeyVaultKey om een Azure Key Vault-sleutel van de server te verwijderen.

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

Probleemoplossing

  • Als de sleutelkluis niet gevonden kan worden, zorg dan dat je in het juiste abonnement zit.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Als je de nieuwe sleutel niet aan de server kunt toevoegen, of als je de nieuwe sleutel niet kunt updaten als TDE Protector, controleer dan de volgende voorwaarden:

    • De sleutel zou geen vervaldatum moeten hebben.
    • De sleutel moet de ophalen, de sleutelverpakken, en de sleutel uitpakken.

TDE BYOK Azure Synapse Analytics

Zie Azure Synapse Analytics SQL documentation voor TDE BYOK-documentatie over Azure Synapse Analytics. Zie Azure Synapse Analytics-versleutelingvoor documentatie over Transparent Data Encryption voor toegewezen SQL-pools in Synapse-werkruimten.