Veritabanı Düzeyi TDE CMK, Azure SQL Veritabanı (tüm SQL Veritabanı sürümleri) için kullanılabilir. Azure SQL Yönetilen Örneği, şirket içi SQL Server, Azure VM'leri ve Azure Synapse Analytics (ayrılmış SQL havuzları (eski adı 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).
Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.
Önkoşullar
Bu kılavuzda iki Microsoft Entra kiracınız olduğu varsayılır.
İlki Azure SQL Veritabanı kaynağından, çok kiracılı bir Microsoft Entra uygulamasından ve kullanıcı tarafından atanan yönetilen kimliklerden oluşur.
İkinci kiracı Azure Key Vault'a evser.
Kiracılar arası CMK'yi ayarlama ve Microsoft Entra uygulamalarını ve Azure Key Vault'u yapılandırmak için gereken RBAC izinlerini ayarlama hakkında kapsamlı yönergeler için aşağıdaki kılavuzlardan birine bakın:
Veritabanı düzeyinde CMK için gereken RBAC izinleri, sunucu düzeyinde CMK için gereken izinlerle aynıdır. Özellikle, sunucu düzeyinde TDE için Azure Key Vault, yönetilen kimlikler ve kiracılar arası CMK kullanılırken geçerli olan RBAC izinleri veritabanı düzeyinde de geçerlidir. Anahtar yönetimi ve erişim ilkesi hakkında daha fazla bilgi için bkz . Anahtar yönetimi.
İ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.
Kiracılar arası CMK ile Azure SQL Veritabanı için TDE'yi yapılandırabilmek için önce, uygulama için federasyon kimliği kimlik bilgisi olarak atanmış kullanıcı tarafından atanan yönetilen kimlikle yapılandırılmış çok kiracılı bir Microsoft Entra uygulamasına sahip olmamız gerekir. Önkoşullar'daki kılavuzlardan birini izleyin.
Uygulama adını ve uygulama kimliğini kaydedin. Bu, Azure portalında >Microsoft Entra ID>Enterprise uygulamalarında bulunabilir ve oluşturulan uygulamayı arayabilir.
İ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.
Erişim ilkesini oluştururken Sorumlu seçeneğinin ilk adımında oluşturulan çok kiracılı uygulamayı seçin.
Erişim ilkesi ve anahtar oluşturulduktan sonra Anahtarı 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ğıda, kullanıcı tarafından atanan yönetilen kimlikle Azure SQL Veritabanı veritabanı oluşturma ve veritabanı düzeyinde kiracılar arası müşteri tarafından yönetilen anahtar ayarlama örnekleri verilmiştir. Kullanıcı tarafından atanan yönetilen kimlik, veritabanı oluşturma aşamasında saydam veri şifrelemesi için müşteri tarafından yönetilen bir anahtar ayarlamak için gereklidir.
Azure portalında henüz oturum açmadıysanız istendiğinde oturum açın.
SQL veritabanları'nın altında Kaynak türü'nü Tek veritabanı olarak bırakın ve Oluştur'u seçin.
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 mantıksal sunucu oluşturmadıysanız, başvuru için bkz. Kiracılar arası müşteri tarafından yönetilen anahtarla (CMK) TDE ile yapılandırılmış sunucu oluşturma.
Güvenlik sekmesine gittiğiniz zaman Saydam veri şifrelemesini yapılandır'ı seçin.
Saydam veri şifreleme menüsünde Veritabanı düzeyinde müşteri tarafından yönetilen anahtar (CMK) öğesini seçin.
Kullanıcı Tarafından Atanan Yönetilen Kimlik için, Veritabanı kimliğini etkinleştirmek için Yapılandır'ı seçin ve kimlik menüsünde istenen kimlik listelenmemişse kaynağa kullanıcı tarafından atanan yönetilen kimlik ekle'yi seçin. Ardından Uygula'yı seçin.
Saydam veri şifreleme menüsünde Anahtarı değiştir'i seçin. TDE için kullanılacak müşteri tarafından yönetilen anahtar için istenen Abonelik, Anahtar kasası, Anahtar ve Sürüm'e tıklayın. 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.
Veritabanını oluşturmaya devam etmek için Uygula'yı seçin.
Sayfanın alt kısmındaki Gözden geçir ve oluştur'u seçin
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 bkz . Müşteri tarafından yönetilen anahtarla saydam veri şifrelemesi için yönetilen kimlikler.
Azure CLI'nın geçerli sürümünü yükleme hakkında bilgi için Bkz . Azure CLI'yi yükleme makalesi.
Kullanıcı tarafından atanan yönetilen kimliğinizi 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 şöyle görünür /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
PowerShell kullanarak veritabanı düzeyinde 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ı oluşturun.
<ResourceGroupName>: Azure SQL mantıksal sunucunuz için kaynak grubunun adı
<DatabaseName>: Benzersiz bir Azure SQL veritabanı adı kullanın
<ServerName>: Benzersiz bir Azure SQL mantıksal sunucu adı kullanın
<UserAssignedIdentityId>: Sunucuya atanacak kullanıcı tarafından atanan yönetilen kimliklerin listesi (bir veya birden çok olabilir)
<CustomerManagedKeyId>: İkinci kiracı Key Vault'tan Anahtar Tanımlayıcısı
<FederatedClientId>: Çok kiracılı uygulamanın Uygulama Kimliği
-EncryptionProtectorAutoRotation: Veritabanı düzeyinde otomatik anahtar döndürmeyi etkinleştirmek için kullanılabilir
Kullanıcı tarafından atanan yönetilen kimliğinizi 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 şöyle görünür /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
Aşağıda, kullanıcı tarafından atanan yönetilen kimliğe ve veritabanı düzeyinde müşteri tarafından yönetilen TDE'ye sahip bir Azure SQL Veritabanı oluşturan ARM şablonu örneği verilmiştır. Kiracılar arası CMK için, ikinci kiracı anahtar kasasından Anahtar Tanımlayıcısı'nı ve çok kiracılı uygulamadan Uygulama Kimliği'ni kullanın.
Azure portalında özel dağıtım kullanın ve düzenleyicide kendi şablonunuzu oluşturun. Ardından, örnekte yapıştırdıktan sonra yapılandırmayı kaydedin .
Kullanıcı tarafından atanan yönetilen kimliğinizi 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 gibi /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>görünür.
Mevcut Azure SQL Veritabanı veritabanı düzeyinde müşteri tarafından yönetilen anahtarlarla güncelleştirme
Aşağıda, Azure SQL Veritabanı'daki mevcut veritabanını kullanıcı tarafından atanan yönetilen kimlikle güncelleştirme ve veritabanı düzeyinde kiracılar arası müşteri tarafından yönetilen anahtar ayarlama örnekleri verilmiştir. Kullanıcı tarafından atanan yönetilen kimlik, veritabanı oluşturma aşamasında saydam veri şifrelemesi için müşteri tarafından yönetilen bir anahtar ayarlamak için gereklidir.
Güvenlik'in altında Kimlik'i seçin. Bu veritabanı için Kullanıcı tarafından atanan yönetilen kimliği ekleyin ve kaydet'i seçin
Şimdi veritabanınız için Güvenlik'in altındaki Veri Şifreleme menüsüne gidin. Veritabanı düzeyinde müşteri tarafından yönetilen anahtar (CMK) seçeneğini belirleyin. Son adımda kimliği yapılandırdığınız için veritabanının Veritabanı Kimliği zaten Etkin olmalıdır.
Anahtarı değiştir'i seçin. TDE için kullanılacak müşteri tarafından yönetilen anahtar için istenen Abonelik, Anahtar kasası, Anahtar ve Sürüm'e tıklayın. Seçim düğmesini seçin. Bir anahtar seçtikten sonra, Veri Şifrelemesi menüsündeki Azure Key Vault URI'sini (nesne tanımlayıcısı)kullanarak gerektiğinde başka veritabanı anahtarları da ekleyebilirsiniz.
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ıdaki Anahtar Tanımlayıcısı alanda encryption-protector kullanılabilir. Çok kiracılı uygulamanın Uygulama Kimliği alanında federated-client-id kullanılabilir.
Kullanıcı tarafından atanan yönetilen kimliğinizi 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 gibi /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>görünür. parametresi, --encryption-protector-auto-rotation veritabanı düzeyinde otomatik anahtar döndürmeyi etkinleştirmek için kullanılabilir.
PowerShell 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ı veritabanı düzeyinde güncelleştirin.
-EncryptionProtectorAutoRotation: Veritabanı düzeyinde otomatik anahtar döndürmeyi etkinleştirmek için kullanılabilir
Kullanıcı tarafından atanan yönetilen kimliğinizi 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 gibi /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>görünür.
Veritabanı düzeyinde kullanıcı tarafından atanan yönetilen kimlik ve müşteri tarafından yönetilen TDE ile bir Azure SQL Veritabanı güncelleştiren ARM şablonu örneği aşağıda verilmiştır. Kiracılar arası CMK için, ikinci kiracı Anahtar Kasası'ndan Anahtar Tanımlayıcısı'nıve çok kiracılı uygulamadan Uygulama Kimliği'ni kullanın.
Azure portalında özel dağıtım kullanın ve düzenleyicide kendi şablonunuzu oluşturun. Ardından, örnekte yapıştırdıktan sonra yapılandırmayı kaydedin .
Kullanıcı tarafından atanan yönetilen kimliğinizi 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 gibi /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>görünür.
Bir anahtarı veritabanından kaldırmak için, belirli bir anahtarın anahtar sözlüğü değeri null olarak geçirilmelidir. Örneğin, "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
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, ve zaman değeri içindeki bir nokta (örneğin, 2023-01-01) gibi -KeysFilter "current" filtreler, kullanılan geçerli anahtarları ve geçmişte kullanılan anahtarları belirli bir zamanda almak için kullanılabilir. Bu filtreler yalnızca tek tek veritabanı sorguları için desteklenir, sunucu düzeyinde sorgular için desteklenmez.
Azure portalında veritabanı düzeyinde müşteri tarafından yönetilen anahtarları görüntülemek için SQL veritabanı kaynağının Veri Şifreleme menüsüne gidin.
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
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
Azure SQL Veritabanı için 2022-08-01-preview REST API'sini kullanın.
Bir veritabanından müşteri tarafından yönetilen temel veritabanı düzeyindeki anahtar ayarlarını alın.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
Bir veritabanından temel veritabanı düzeyi müşteri tarafından yönetilen anahtar ayarlarını ve eklenen tüm anahtarları alma
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
Veritabanından temel veritabanı düzeyi müşteri tarafından yönetilen anahtar ayarlarını ve kullanımdaki geçerli anahtarları alma
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
Bir veritabanından temel veritabanı düzeyi müşteri tarafından yönetilen anahtar ayarlarını ve belirli bir noktada kullanımda olan anahtarları alma
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('2023-02-04T01:57:42.49Z'))
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.
Bir Azure SQL Veritabanı veritabanı düzeyinde müşteri tarafından yönetilen anahtarı yeniden doğrulama
CMK ile Saydam Veri Şifrelemesi (TDE) içinde açıklandığı gibi erişilemez bir TDE koruyucusu söz konusu olduğunda, anahtar erişimi düzeltildikten sonra veritabanını erişilebilir hale getirmek için yeniden doğrulama anahtarı işlemi kullanılabilir. Örnekler için aşağıdaki yönergelere veya komutlara bakın.
Azure portalını kullanarak SQL veritabanı kaynağınızı bulun. SQL veritabanı kaynağınızı seçtikten sonra Güvenlik ayarları altındaki Veri Şifrelemesi menüsünün Saydam Veri Şifrelemesi sekmesine gidin. Veritabanı Azure Key Vault'a erişimi kaybettiyse, bir Yeniden Doğrulama tuşu düğmesi görüntülenir ve Var olan anahtarı yeniden dene'yi veya Yedek anahtarı seç'i seçerek başka bir anahtarı seçerek mevcut anahtarı yeniden doğrulama seçeneğiniz olur.
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ı için 2022-08-01-preview REST API'sini kullanın.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
bir Azure SQL Veritabanı veritabanı düzeyinde müşteri tarafından yönetilen anahtarı geri döndürme
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.
Veritabanı düzeyinde müşteri tarafından yönetilen anahtar ayarını Azure portalında sunucu düzeyinde şifreleme anahtarına döndürmek için SQL veritabanı kaynağının Veri Şifreleme menüsünün Saydam Veri Şifrelemesi sekmesine gidin. Ayarları kaydetmek için Sunucu düzeyinde şifreleme anahtarı'nı ve ardından Kaydet'i seçin.
Not
Tek tek veritabanları için Sunucu düzeyinde şifreleme anahtarı ayarını kullanmak için, Azure SQL Veritabanı mantıksal sunucusunun TDE için Hizmet tarafından yönetilen anahtarı kullanacak şekilde yapılandırılması gerekir.
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
Azure SQL Veritabanı için 2022-08-01-preview REST API'sini kullanın.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
Sonraki adımlar
Çeşitli veritabanı düzeyinde CMK işlemleriyle ilgili aşağıdaki belgeleri gözden geçirin: