PowerShell ve Azure CLI: Azure Key Vault'tan müşteri tarafından yönetilen anahtarla Saydam Veri Şifrelemesini etkinleştirme

Şunlar için geçerlidir: Azure SQL Veritabanı Azure SQL Yönetilen Örneği Azure Synapse Analytics

Bu makalede, Azure SQL Veritabanında veya Azure Synapse Analytics'te Saydam Veri Şifrelemesi (TDE) için Azure Key Vault'den bir anahtarın nasıl kullanılacağı açıklanmaktadır. Azure Key Vault tümleştirmesi - Kendi Anahtarını Getir (BYOK) Desteği ile TDE hakkında daha fazla bilgi edinmek için Azure Key Vault'de müşteri tarafından yönetilen anahtarlarla TDE'yi ziyaret edin.

Not

Azure SQL artık Yönetilen HSM'de TDE Koruyucusu olarak depolanan bir RSA anahtarının kullanılmasını destekliyor. Azure Key Vault Yönetilen HSM, FIPS 140-2 Düzey 3 doğrulanmış HSM'leri kullanarak bulut uygulamalarınız için şifreleme anahtarlarını korumanıza olanak tanıyan, tam olarak yönetilen, yüksek oranda kullanılabilir, tek kiracılı, standartlara uyumlu bir bulut hizmetidir. Yönetilen HSM'ler hakkında daha fazla bilgi edinin.

Not

Bu makale Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analizi (ayrılmış SQL havuzları (eski adı SQL DW) için geçerlidir. Synapse çalışma alanlarındaki ayrılmış SQL havuzları için Saydam Veri Şifrelemesi belgeleri için bkz. Azure Synapse Analytics şifrelemesi.

PowerShell önkoşulları

  • Bir Azure aboneliğine sahip olmanız ve bu abonelikte yönetici olmanız gerekir.
  • [Önerilen ama İsteğe Bağlı] TDE Koruyucusu anahtar malzemesinin yerel kopyasını oluşturmak için bir donanım güvenlik modülüne (HSM) veya yerel anahtar deposuna sahip olun.
  • Azure PowerShell yüklü ve çalışır durumda olmalıdır.
  • TDE için kullanılacak bir Azure Key Vault ve Anahtarı oluşturun.
  • Anahtar, TDE için kullanılacak aşağıdaki özniteliklere sahip olmalıdır:
    • Son kullanma tarihi yok
    • Devre dışı bırakılmadı
    • Alma, sarmalama anahtarı, anahtaraçma işlemleri gerçekleştirebilir
  • Yönetilen HSM anahtarı kullanmak için Azure CLI kullanarak Yönetilen HSM oluşturma ve etkinleştirme yönergelerini izleyin

Az modülü yükleme yönergeleri için bkz. Azure PowerShell'i yükleme. Belirli cmdlet'ler için bkz. AzureRM.Sql.

Key Vault ile ilgili ayrıntılar için bkz. Key Vault'dan PowerShell yönergeleri ve PowerShell ile geçici silme Key Vault kullanma.

Önemli

PowerShell Azure Resource Manager (RM) modülü hala desteklenmektedir ancak gelecekteki tüm geliştirmeler Az.Sql modülüne yöneliktir. AzureRM modülü en az Aralık 2020'ye kadar hata düzeltmeleri almaya devam edecektir. Az modülündeki ve AzureRm modüllerindeki komutların bağımsız değişkenleri önemli ölçüde aynıdır. Uyumlulukları hakkında daha fazla bilgi için bkz. Yeni Azure PowerShell Az modülüne giriş.

Sunucunuza Azure Active Directory (Azure AD) kimliği atama

Mevcut bir sunucunuz varsa, sunucunuza bir Azure Active Directory (Azure AD) kimliği eklemek için aşağıdakileri kullanın:

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

Sunucu oluşturuyorsanız, sunucu oluşturma sırasında Azure AD kimlik eklemek için -Identity etiketiyle New-AzSqlServer cmdlet'ini kullanın:

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

Sunucunuza Key Vault izinleri verme

Sunucunuza TDE için anahtar kullanmadan önce anahtar kasasına erişim vermek için Set-AzKeyVaultAccessPolicy cmdlet'ini kullanın.

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

Yönetilen HSM'de sunucunuza izin eklemek için sunucuya 'Yönetilen HSM Şifreleme Hizmeti Şifreleme Kullanıcısı' yerel RBAC rolünü ekleyin. Bu, sunucunun Yönetilen HSM'deki anahtarlarda anahtar alma, sarmalama ve anahtar açma işlemlerini gerçekleştirmesini sağlar. Yönetilen HSM'de sunucu erişimi sağlama yönergeleri

Key Vault anahtarını sunucuya ekleyin ve TDE Koruyucusu'nu ayarlayın

Not

Yönetilen HSM anahtarları için PowerShell'in Az.Sql 2.11.1 sürümünü kullanın.

Not

Anahtar kasası adı ve anahtar adı için birleşik uzunluk 94 karakteri aşamaz.

İpucu

Key Vault örnek bir KeyId:https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

Yönetilen HSM'den örnek bir KeyId:
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>

TDE'i açma

TDE'yi açmak için Set-AzSqlDatabaseTransparentDataEncryption cmdlet'ini kullanın.

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

Artık veritabanı veya veri ambarı, Key Vault şifreleme anahtarıyla TDE'yi etkinleştirmiştir.

Şifreleme durumunu ve şifreleme etkinliğini denetleme

Şifreleme durumunu almak için Get-AzSqlDatabaseTransparentDataEncryption ve veritabanı veya veri ambarı için şifreleme ilerleme durumunu denetlemek için Get-AzSqlDatabaseTransparentDataEncryptionActivity kullanın.

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

# check the encryption progress for a database or data warehouse
Get-AzSqlDatabaseTransparentDataEncryptionActivity -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName>  

Yararlı PowerShell cmdlet'leri

  • TDE'yi kapatmak için Set-AzSqlDatabaseTransparentDataEncryption cmdlet'ini kullanın.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Sunucuya eklenen Key Vault anahtarlarının listesini döndürmek için Get-AzSqlServerKeyVaultKey cmdlet'ini kullanın.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Sunucudan bir Key Vault anahtarı kaldırmak için Remove-AzSqlServerKeyVaultKey kullanın.

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

Sorun giderme

Bir sorun oluştuğunda aşağıdakileri denetleyin:

  • Anahtar kasası bulunamıyorsa doğru abonelikte olduğunuzdan emin olun.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Yeni anahtar sunucuya eklenemiyorsa veya yeni anahtar TDE Koruyucusu olarak güncelleştirilemiyorsa aşağıdakileri denetleyin:
    • Anahtarın son kullanma tarihi olmamalıdır
    • Anahtarın alma, sarmalama ve anahtar açma işlemlerinin etkin olması gerekir.

Sonraki adımlar