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ı veya Azure Synapse Analytics'te saydam veri şifrelemesi (TDE) için Azure Key Vault'tan 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'ta müşteri tarafından yönetilen anahtarlarla TDE'yi ziyaret edin. Azure Key Vault'tan müşteri tarafından yönetilen anahtarla TDE'yi etkinleştirme hakkında Azure portalı yönergelerini arıyorsanız bkz . Kullanıcı tarafından atanan yönetilen kimlik ve müşteri tarafından yönetilen TDE ile yapılandırılmış sunucu oluşturma.

Bu makale Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics (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.

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ızı sağlayan, 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

Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.

PowerShell için ön koşullar

  • Bir Azure aboneliğinizin olması 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'in yüklü ve çalışır durumda olması gerekir.
  • 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:
    • Etkinleştirme tarihi (ayarlandıysa) geçmişteki bir tarih ve saat olmalıdır
    • Son kullanma tarihi (ayarlandıysa) gelecekteki bir tarih ve saat olmalıdır
    • Anahtar Etkin durumda olmalıdır
    • Alma, sarmalama anahtarı, anahtar kaldırma 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'tan PowerShell yönergeleri ve PowerShell ile Key Vault geçici silmeyi 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 Microsoft Entra kimliği atama

Mevcut bir sunucunuz varsa, sunucunuza bir Microsoft Entra 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 bir Microsoft Entra kimliği 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

Set-AzKeyVaultAccessPolicy cmdlet'ini kullanarak sunucunuza TDE için anahtar kullanmadan önce anahtar kasasına erişim izni verin.

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 alma, sarmalama, anahtar kaldırma 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'tan ö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'ta bir şifreleme anahtarı ile TDE'yi etkinleştirmiştir.

Şifreleme durumunu ve şifreleme etkinliğini denetleme

Veritabanı veya veri ambarı için şifreleme durumunu almak için Get-AzSqlDatabaseTransparentDataEncryption komutunu kullanın.

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

Yararlı PowerShell cmdlet'leri

Sorun giderme

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

  • Anahtar kasası bulunamazsa 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 anahtarı ve anahtar açma işlemlerinin etkinleştirilmesi gerekir.

Sonraki adımlar

  • Güvenlik gereksinimlerine uymak için sunucunun TDE Koruyucusu'nu döndürmeyi öğrenin: PowerShell kullanarak Saydam Veri Şifrelemesi koruyucuyu döndürme.
  • Güvenlik riski söz konusu olduğunda, güvenliği aşılmış olabilecek bir TDE Koruyucusu'nun nasıl kaldırılacağını öğrenin: Güvenliği aşılmış olabilecek bir anahtarı kaldırma.