Veritabanı düzeyinde müşteri tarafından yönetilen anahtarlarla TDE için kimlik ve anahtar yönetimi

Şunlar için geçerlidir:Azure SQL Veritabanı

Not

  • Veritabanı Düzeyi TDE CMK, Azure SQL Veritabanı (tüm SQL Veritabanı sürümleri) için kullanılabilir. Bu, Azure SQL Yönetilen Örnek, şirket içi SQL Server, Azure VM, ve Azure Synapse Analytics (ayrılmış SQL havuzları (eski adıyla SQL DW)) için kullanılamaz.
  • Aynı kılavuz, federasyon istemci kimliği parametresi hariç tutularak aynı kiracıda veritabanı düzeyinde müşteri tarafından yönetilen anahtarları yapılandırmak için de uygulanabilir. Veritabanı düzeyinde müşteri tarafından yönetilen anahtarlar hakkında daha fazla bilgi için bkz . Veritabanı düzeyinde müşteri tarafından yönetilen anahtarlarla saydam veri şifrelemesi (TDE).

Bu kılavuzda, Azure Key Vault'a erişmek için kullanıcı tarafından atanan yönetilen kimliği kullanarak veritabanı düzeyinde saydam veri şifrelemesi (TDE) ve müşteri tarafından yönetilen anahtarlar (CMK) içeren bir Azure SQL Veritabanı oluşturma, güncelleştirme ve alma adımlarını inceleyeceğiz. Azure Key Vault, Azure SQL Veritabanı'ndan farklı bir Microsoft Entra kiracısında bulunuyor. Daha fazla bilgi için bkz . Saydam veri şifrelemesi ile kiracılar arası müşteri tarafından yönetilen anahtarlar.

Not

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

Önkoşullar

İlk kiracıda gerekli kaynaklar

Bu öğreticinin amacı doğrultusunda, ilk kiracının bağımsız bir yazılım satıcısına (ISV) ait olduğunu ve ikinci kiracının da istemcisinden olduğunu varsayacağız. Bu senaryo hakkında daha fazla bilgi için bkz . Saydam veri şifrelemesi ile kiracılar arası müşteri tarafından yönetilen anahtarlar.

Azure SQL Veritabanı için TDE'yi kiracılar arası cmk ile yapılandırmadan önce, kullanıcı tarafından atanan yönetilen kimlikle yapılandırılmış çok kiracılı bir Microsoft Entra uygulamasının uygulama için federasyon kimliği olarak atanmış olması gerekir. Önkoşullar'daki kılavuzlardan birini izleyin.

  1. Azure SQL Veritabanı'nı oluşturmak istediğiniz ilk kiracıda çok kiracılı bir Microsoft Entra uygulaması oluşturun ve yapılandırın.

  2. Kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.

  3. Kullanıcıya atanmış yönetilen kimliği, çok kiracılı uygulama için federe kimlik kimlik bilgisi olarak yapılandırın.

  4. Uygulama adını ve uygulama kimliğini kaydedin. Bu bilgileri Azure portalında>bulun Microsoft Entra ID>Enterprise uygulamaları ve oluşturulan uygulamayı arayın.

İkinci kiracıda gerekli kaynaklar

Not

Azure AD ve MSOnline PowerShell modülleri 30 Mart 2024 itibarıyla kullanım dışı bırakılmıştır. Daha fazla bilgi edinmek için kullanımdan kaldırma güncelleştirmesini okuyun. Bu tarihten sonra bu modüllere yönelik destek, Microsoft Graph PowerShell SDK'sına geçiş yardımı ve güvenlik düzeltmeleriyle sınırlıdır. Kullanım dışı bırakılan modüller Mart 30 2025'e kadar çalışmaya devam edecektir.

Microsoft Entra ID (eski adıyla Azure AD) ile etkileşime geçmek için Microsoft Graph PowerShell'e geçiş yapmanızı öneririz. Sık sorulan geçiş soruları için Bkz. Geçiş hakkında SSS. Not: MSOnline'ın 1.0.x sürümleri 30 Haziran 2024'den sonra kesintiye neden olabilir.

  1. Azure Key Vault'un bulunduğu ikinci kiracıda, birinci kiracıdaki kayıtlı uygulamadan gelen uygulama kimliğini kullanarak bir hizmet prensibi (uygulama) oluşturun. İşte çoklu kiracı başvurusunun nasıl kaydedileceğine dair bazı örnekler. ve <TenantID> değerini, sırasıyla çok kiracılı uygulamadaki Microsoft Entra Kimliği ve <ApplicationID> istemci Kiracı Kimliği ile değiştirin:

    • PowerShell:

      Connect-Entra -TenantID <TenantID>
      New-EntraServicePrincipal  -AppId <ApplicationID>
      
    • Azure CLI:

      az login --tenant <TenantID>
      az ad sp create --id <ApplicationID>
      
  2. Azure portal>Microsoft Entra ID>Kurumsal uygulamalar kısmına gidin ve oluşturulan uygulamayı arayın.

  3. Anahtarınız yoksa bir Azure Key Vault oluşturun ve bir anahtar oluşturun.

  4. Erişim ilkesini oluşturun veya ayarlayın.

    1. Erişim ilkesini oluştururken Anahtar izinleri'nin altında Al, Anahtarı Sarmala, Anahtarı Kaldır izinlerini seçin.
    2. Erişim ilkesini oluştururken Sorumlu seçeneğinin ilk adımında oluşturulan çok kiracılı uygulamayı seçin.

    Azure portalında Azure Key Vault'un erişim ilkesi menüsünün ekran görüntüsü.

  5. Erişim politikası ve anahtarı oluşturduktan sonra, anahtarı Azure Key Vault'tan alın ve Anahtar Tanımlayıcısını kaydedin.

Veritabanı düzeyinde müşteri tarafından yönetilen anahtarlarla yeni bir Azure SQL Veritabanı oluşturma

Aşağıdaki örnekler, Azure SQL Veritabanı üzerinde kullanıcı tarafından atanan yönetilen bir kimlikle bir veritabanının nasıl oluşturulacağını ve veritabanı düzeyinde kiracılar arası müşteri tarafından yönetilen bir anahtarın nasıl ayarlanacağını göstermektedir. Veritabanı oluşturma aşamasında şeffaf veri şifreleme için müşteri tarafından yönetilen anahtar kurmak için kullanıcı tarafından atanan yönetilen kimlik gereklidir.

  1. aka.ms/azuresqlhub'da Azure SQL hub'ına gidin.

  2. Kaynak menüsünde Azure SQL Veritabanı'nı genişletin ve SQL veritabanları'nı seçin.

  3. + Oluştur açılır menüsünden SQL veritabanını seçin.

    SQL veritabanları sayfasını, Oluştur düğmesini ve SQL veritabanı seçeneğini gösteren Azure portalının ekran görüntüsü.

  4. SQL Veritabanı oluştur formunun Temel Bilgiler sekmesinde, Proje ayrıntıları'nın altında veritabanınız için istediğiniz Azure Aboneliğini, Kaynak grubunu ve Sunucuyu seçin. Ardından Veritabanı adınız için benzersiz bir ad kullanın. Azure SQL Veritabanı için bir mantıksal sunucu oluşturmadıysanız, tenantlar arası müşteri tarafından yönetilen anahtarla (CMK) TDE ile yapılandırılmış sunucu oluşturma bölümüne başvurun.

  5. Güvenlik sekmesine ulaştığınızda Veritabanı düzeyi anahtarı için saydam veri şifrelemesini yapılandır'ı seçin.

    Azure SQL Veritabanı oluştururken Azure portalının ve Güvenlik menüsünün ekran görüntüsü.

  6. Saydam veri şifreleme menüsünde Veritabanı düzeyinde müşteri tarafından yönetilen anahtar (CMK) öğesini seçin.

    Azure portalı saydam veri şifreleme menüsünün ekran görüntüsü.

  7. Kullanıcı Tarafından Atanan Yönetilen Kimlik için, Veritabanı kimliğini etkinleştirmek amacıyla Yapılandır'ı seçin ve istenen kimlik Kimlik menüsünde listelenmiyorsa kaynağa kullanıcı tarafından atanan bir yönetilen kimlik Ekle. Ardından Uygula'yı seçin.

    Azure portalı Kimlik menüsünün ekran görüntüsü.

    Not

    Federasyon içi istemci kimliğini burada yapılandırabilirsiniz, eğer TDE için kiracılar arası CMK yapılandırıyorsanız.

  8. Saydam veri şifreleme menüsünde Anahtarı değiştir'i seçin. TDE'de kullanılacak müşteri tarafından yönetilen anahtar için istenen Abonelik, Anahtar kasası, Anahtar ve Sürüm'ü seçin. Seçim düğmesini seçin. Bir anahtar seçtikten sonra, Saydam veri şifreleme menüsündeki Azure Key Vault URI'sini (nesne tanımlayıcısı)kullanarak gerektiğinde başka veritabanı anahtarları da ekleyebilirsiniz.

    Otomatik anahtar döndürme, Saydam veri şifreleme menüsündeki Anahtarı otomatik döndür onay kutusu kullanılarak veritabanı düzeyinde de etkinleştirilebilir.

    Azure portalında ek anahtar eklemeye başvuran saydam veri şifreleme menüsünün ekran görüntüsü.

  9. Veritabanını oluşturmaya devam etmek için Uygula'yı seçin.

  10. İleri: Ek ayarlar'ı seçin.

  11. İleri: Etiketler'i seçin.

  12. Azure etiketlerini kullanmayı göz önünde bulundurun. Örneğin, kaynağı kimin oluşturduğunu belirlemek için "Sahip" veya "CreatedBy" etiketi ve bu kaynağın Üretim, Geliştirme vb. içinde olup olmadığını belirlemek için Ortam etiketi. Daha fazla bilgi için bkz . Azure kaynakları için adlandırma ve etiketleme stratejinizi geliştirme.

  13. Seçin, gözden geçir ve oluştur.

  14. Gözden Geçir + oluştur sayfasında, gözden geçirdikten sonra Oluştur'u seçin.

Not

Kullanıcı tarafından atanan yönetilen kimlik anahtar kasasında doğru izinlere sahip değilse veritabanı oluşturma işlemi başarısız olur. Kullanıcı tarafından atanan yönetilen kimliğin anahtar kasasında Get, wrapKey ve unwrapKey izinlerine sahip olması gerekir. Daha fazla bilgi için, müşteri tarafından yönetilen anahtarla saydam veri şifrelemesi için yönetilen kimliklere bakın.

Mevcut Azure SQL Veritabanı veritabanı düzeyinde müşteri tarafından yönetilen anahtarlarla güncelleştirme

Aşağıdaki örnekler, Azure SQL Veritabanı'de mevcut bir veritabanının kullanıcı tarafından atanan yönetilen bir kimlik ile nasıl güncelleneceğini ve veritabanı düzeyinde çapraz kiracı müşteri tarafından yönetilen anahtar nasıl ayarlanacağını gösterir. Şeffaf veri şifreleme için müşteri tarafından yönetilen bir anahtar kurmak için kullanıcı tarafından atanan bir yönetilen kimlik gereklidir.

Azure CLI'nın geçerli sürümünü yükleme hakkında bilgi için Bkz . Azure CLI'yi yükleme makalesi.

az sql db create komutunu kullanarak kullanıcı tarafından atanan yönetilen kimlik ve kiracılar arası müşteri tarafından yönetilen TDE ile yapılandırılmış bir veritabanını güncelleştirin. İkinci kiracının Anahtar Tanımlayıcısıencryption-protector alanında kullanılabilir. Çok kiracılı uygulamanın Uygulama Kimliğifederated-client-id alanında kullanılabilir.

Kullanıcı tarafından atanan yönetilen kimliğinizin Kaynak Kimliği'ni almak için, Azure portalı'nda Yönetilen Kimlikler'i arayın. Yönetilen kimliğinizi bulun ve Özellikler'e gidin. UMI Kaynak Kimliğinizin bir örneği şöyledir /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. parametresi, --encryption-protector-auto-rotation veritabanı düzeyinde otomatik anahtar döndürmeyi etkinleştirmek için kullanılabilir.

az sql db update --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --keys $keys --keys-to-remove $keysToRemove --encryption-protector-auto-rotation True

Liste $keys , veritabanına eklenecek anahtarların boşlukla ayrılmış listesidir ve $keysToRemove veritabanından kaldırılması gereken anahtarların boşlukla ayrılmış listesidir

$keys = '"https://yourvault.vault.azure.net/keys/yourkey1/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey2/ fd021f84a0d94d43b8ef33154bca0000"'

$keysToRemove = '"https://yourvault.vault.azure.net/keys/yourkey3/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey4/fd021f84a0d94d43b8ef33154bca0000"'

Azure SQL Veritabanı veritabanı düzeyinde müşteri tarafından yönetilen anahtar ayarlarını görüntüleme

Aşağıda, bir veritabanı için veritabanı düzeyinde müşteri tarafından yönetilen anahtarları alma örnekleri verilmiştir. ARM kaynağı Microsoft.Sql/servers/databases varsayılan olarak yalnızca veritabanında yapılandırılan TDE koruyucusu ve yönetilen kimliği gösterir. Anahtarların tam listesini genişletmek için parametresini -ExpandKeyListkullanın. Ayrıca, -KeysFilter "current" gibi filtreler ve zamandaki bir nokta değeri (örneğin, 2023-01-01), kullanılan geçerli anahtarları ve geçmişte belirli bir zamanda kullanılan anahtarları almak için kullanılabilir. Bu filtreler yalnızca tek tek veritabanı sorguları için desteklenir, sunucu düzeyinde sorgular için desteklenmez.

Azure CLI'nın geçerli sürümünü yükleme hakkında bilgi için Bkz . Azure CLI'yi yükleme makalesi.

# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase

# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys

# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current

# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015

# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName

Mantıksal sunucudaki tüm anahtarları listeleme

Sunucu altındaki her veritabanı tarafından kullanılan tüm anahtarların (yalnızca birincil koruyucunun değil) listesini getirmek için anahtar filtreleri ile ayrı ayrı sorgulanmalıdır. Aşağıda, mantıksal sunucunun altındaki her anahtarı listelemek için bir PowerShell sorgusu örneği verilmiştir.

Get-AzSqlDatabase cmdlet'ini kullanın.

$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}

Bir Azure SQL Veritabanı veritabanı düzeyinde müşteri tarafından yönetilen anahtarı yeniden doğrulama

Eğer TDE koruyucusu, müşteri tarafından yönetilen anahtarla Azure SQL şeffaf veri şifrelemesinde tanımlandığı gibi erişilemezse, veritabanı erişilmez hale gelir. Anahtar erişimini düzelttikten sonra, veritabanını tekrar erişilebilir hale getirmek için anahtarı yeniden doğrulama işlemini kullanın. Aşağıdaki komutlar örnekler sunar.

Azure CLI'nın geçerli sürümünü yükleme hakkında bilgi için Bkz . Azure CLI'yi yükleme makalesi.

az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase

Azure SQL Veritabanı'nda veritabanı düzeyinde müşteri tarafından yönetilen anahtarı geri yükleme

Veritabanı düzeyinde CMK ile yapılandırılmış bir veritabanı, sunucu aşağıdaki komutlar kullanılarak hizmet tarafından yönetilen bir anahtarla yapılandırılırsa sunucu düzeyinde şifrelemeye geri döndürülebilir.

Azure CLI'nın geçerli sürümünü yükleme hakkında bilgi için Bkz . Azure CLI'yi yükleme makalesi.

az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase