Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Key Vault tarafından korunan asimetrik anahtar kullanan yaygın SQL Server şifreleme faaliyetleri aşağıdaki üç alana ayrılır:
- Azure Key Vault'tan asimetrik bir anahtar kullanılarak şeffaf veri şifreleme (TDE).
- Anahtar kasasından asimetrik bir anahtar kullanarak yedeklemeleri şifrelemek.
- Anahtar kasasından asimetrik bir anahtar kullanılarak sütun seviyesinde şifreleme.
Bu makaledeki adımları uygulamadan önce Set up Saydam Veri Şifrelemesi with Azure Key Vault for SQL Server içindeki 1'den 4'e kadar olan adımları tamamlayın.
Uyarı
1.0.0.440 ve daha eski sürümler yenisiyle değiştirildi ve üretim ortamlarında artık desteklenmiyor. 1.0.1.0 veya daha sonrasına yükseltin. Microsoft İndirme Merkezi'dan güncel sürümü indirin ve SQL Server Connector bakım ve sorun giderme bölümündeki "SQL Server Connector'ı Yükseltme" bölümündeki talimatları takip edin.
Uyarı
Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.
Azure Key Vault'tan asimetrik bir anahtar kullanılarak şeffaf veri şifreleme
SQL Server için Azure Key Vault ile Saydam Veri Şifrelemesini Ayarlama başlıklı makaledeki 1-4. adımları tamamladıktan sonra, veritabanı şifreleme anahtarını TDE ile şifrelemek için Azure Key Vault anahtarını kullanın. PowerShell kullanılarak anahtarları döndürmek hakkında daha fazla bilgi için PowerShell kullanarak Saydam Veri Şifrelemesi (TDE) koruyucusunu döndürme bölümüne bakınız.
Önemli
Anahtar yenileme işleminden sonra anahtarın önceki sürümlerini silmeyin. Anahtar değişimi yapıldığında, bazı veriler hâlâ önceki anahtarlarla şifrelenmiş olur; örneğin eski veritabanı yedeklemeleri, yedeklenmiş günlük dosyaları ve işlem günlüğü dosyaları.
Kimlik bilgileri ve bir oturum açma oluşturmanız ve veritabanındaki verileri ve günlükleri şifreleyen bir veritabanı şifreleme anahtarı oluşturmanız gerekir. Bir veritabanını şifrelemek için veritabanı üzerinde CONTROL izni gereklidir. Aşağıdaki grafik, Azure Key Vault kullandığınızda şifreleme anahtarının hiyerarşisini göstermektedir.
TDE için kullanılacak Veritabanı Altyapısı için bir SQL Server kimlik bilgisi oluşturma
Database Engine, veritabanı yüklenirken anahtar kasasına erişmek için Microsoft Entra uygulama kimlik bilgilerini kullanır. Verdiğiniz anahtar kasası izinlerini sınırlamak için, Database Engine için, Adım 1: Kimlik doğrulama modelini ayarlayın bölümünde açıklandığı gibi başka bir İstemci Kimliği ve Sır oluşturun.
Aşağıdaki Transact-SQL betiğini aşağıdaki yollarla değiştirin:
IDENTITYargümanını (ContosoDevKeyVault), Azure Key Vault'unuzu işaret edecek şekilde değiştirin.-
Global Azure kullanıyorsanız,
IDENTITYbağımsız değişkenini 2. Adım: Anahtar kasası oluşturma bölümünden Azure Key Vault’unuzun adıyla değiştirin. -
Özel bir Azure bulutu kullanıyorsanız, örneğin Azure Kamu, 21Vianet tarafından işletilen Azure veya Azure Almanya,
IDENTITYargümanını PowerShell kullanarak anahtar kasası ve anahtar oluşturma bölümünde döndürülen Vault URI'si ile değiştirin. Anahtar kasası URI'sine "https://" eklemeyin.
-
Global Azure kullanıyorsanız,
Argümanın
SECRETilk kısmını, Adım 1: Kimlik doğrulama modelini ayarlayın bölümündeki Microsoft Entra uygulamasının İstemci Kimliği ile değiştirin. Bu örnekte İstemci Kimliği şeklindedirEF5C8E094D2A4A769998D93440D8115D.Önemli
İstemci Kimliği'nden kısa çizgileri kaldırmanız gerekir.
Argümanın ikinci kısmını 1. adımdaki
SECRETClient Secret ile tamamla. Bu örnekte, İstemci SırrıReplaceWithAADClientSecret.SECRETargümanı için son dize, tire içermeyen uzun bir harf ve sayı dizisidir.
USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;TDE için Veritabanı Altyapısına yönelik bir SQL Server oturumu oluşturun
Bir SQL Server girişi oluşturun ve 1. adım'dan kimlik bilgilerini ona ekleyin. Bu Transact-SQL örnek, daha önce içeri aktarılan anahtarın aynısını kullanır.
USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it loads a database -- encrypted by TDE. CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the TDE Login to add the credential for use by the -- Database Engine to access the key vault ALTER LOGIN TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GOVeritabanı şifreleme anahtarını (DEK) oluşturun
DEK, veritabanı örneğindeki verilerinizi ve günlük dosyalarınızı şifreler ve kendisi de Azure Key Vault asimetrik anahtarı tarafından şifrelenir. DEK'i, SQL Server'ın desteklediği herhangi bir algoritma veya anahtar uzunluğuyla oluşturabilirsiniz.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOTDE'yi aç
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOManagement Studio kullanarak, Nesne Gezgini ile veritabanınıza bağlanarak TDE'nin açık olduğunu doğrulayın. Veritabanınıza sağ tıklayın, Görevler'e işaret edin ve ardından Veritabanı Şifrelemesini Yönet'i seçin.
>
Veritabanı Şifrelemesini Yönet iletişim kutusunda TDE'nin açık olduğunu ve DEK'yi hangi asimetrik anahtarın şifrelediğini onaylayın.
Alternatif olarak, aşağıdaki Transact-SQL betiğini yürütebilirsiniz. 3 şifreleme durumu şifrelenmiş bir veritabanını gösterir.
USE MASTER SELECT * FROM sys.asymmetric_keys -- Check which databases are encrypted using TDE SELECT d.name, dek.encryption_state FROM sys.dm_database_encryption_keys AS dek JOIN sys.databases AS d ON dek.database_id = d.database_id;Uyarı
Herhangi
tempdbbir veritabanı TDE'yi etkinleştirildiğinde veritabanı otomatik olarak şifrelenir.
Anahtar kasasından asimetrik bir anahtar kullanarak yedeklemeleri şifrelemek
Şifrelenmiş yedeklemeler SQL Server 2014 (12.x) ile başlayarak desteklenir. Aşağıdaki örnek, anahtar kasadaki asimetrik anahtarın koruduğu bir veri şifreleme anahtarıyla şifrelenmiş bir yedek oluşturur ve geri getirir.
Database Engine, veritabanı yüklenirken anahtar kasasına erişmek için Microsoft Entra uygulama kimlik bilgilerini kullanır. Verdiğiniz anahtar kasası izinlerini sınırlamak için, Database Engine için, Adım 1: Kimlik doğrulama modelini ayarlama bölümünde açıklandığı gibi başka bir İstemci Kimliği ve Sır oluşturun.
Yedek şifreleme için Database Engine için bir SQL Server kimlik bilgisi oluşturun
Aşağıdaki Transact-SQL betiğini aşağıdaki yollarla değiştirin:
IDENTITYargümanını (ContosoDevKeyVault), Azure Key Vault'unuzu işaret edecek şekilde değiştirin.-
Global Azure kullanıyorsanız,
IDENTITYbağımsız değişkenini 2. Adım: Anahtar kasası oluşturma bölümünden Azure Key Vault’unuzun adıyla değiştirin. -
Özel bir Azure bulutu kullanıyorsanız, örneğin Azure Kamu, 21Vianet tarafından işletilen Microsoft Azure veya Azure Almanya,
IDENTITYPowerShell kullanarak anahtar kasası ve anahtar oluşturma bölümünde döndürülen Vault URI'si ile argümanı değiştirin. Anahtar kasası URI'sine "https://" eklemeyin.
-
Global Azure kullanıyorsanız,
Argümanın
SECRETilk kısmını, Adım 1: Kimlik doğrulama modelini kurun bölümündeki Microsoft Entra uygulamasının İstemci Kimliği ile değiştirin. Bu örnekte İstemci Kimliği şeklindedirEF5C8E094D2A4A769998D93440D8115D.Önemli
İstemci Kimliği'nden kısa çizgileri kaldırmanız gerekir.
Argümanın ikinci kısmını
SECRETClient Secret ile 1. adımdaki tamamla. Bu örnekte, İstemci SırrıReplace-With-AAD-Client-Secretşudur.SECRETbağımsız değişkeni için son dize, tire içermeyen uzun bir harf ve sayı dizisidir.USE master; CREATE CREDENTIAL Azure_EKM_Backup_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Yedek şifrelemesi için Veritabanı Altyapısı'na bir SQL Server oturum açma hesabı oluşturun
Veritabanı Altyapısı tarafından şifreleme yedeklemeleri için kullanılacak bir SQL Server oturumu oluşturun ve 1. Adımdaki kimlik bilgilerini ekleyin. Bu Transact-SQL örnek, daha önce içeri aktarılan anahtarın aynısını kullanır.
Önemli
Eğer bu anahtarı zaten TDE için (önceki örnek) veya sütun seviyesi şifreleme için (aşağıdaki örnek) kullandıysanız, aynı asimetrik anahtarı yedekleme şifrelemesi için kullanamazsınız.
Bu örnek, 2. Adım: Anahtar kasası oluşturma bölümünde açıklandığı gibi,
masterveritabanı için daha önce içe aktarabileceğiniz veya oluşturabileceğiniz, anahtar kasasında depolananCONTOSO_KEY_BACKUPasimetrik anahtarı kullanır.USE master; -- Create a SQL Server login associated with the asymmetric key -- for the Database engine to use when it is encrypting the backup. CREATE LOGIN Backup_Login FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN Backup_Login ADD CREDENTIAL Azure_EKM_Backup_cred ; GOVeritabanını yedekleyin
Veritabanını yedekleyin, anahtar kasasında saklanan asimetrik anahtarı kullanarak şifrelemeyi belirtin.
Aşağıdaki örnekte, veritabanı zaten TDE ile şifrelenmişse ve asimetrik anahtar
CONTOSO_KEY_BACKUPTDE asimetrik anahtarından farklıysa, yedek hem TDE asimetrik anahtarı hemCONTOSO_KEY_BACKUPile şifrelenir. Hedef SQL Server örneği, yedeklemenin şifresini çözmek için her iki anahtara da ihtiyaç duyar.USE master; BACKUP DATABASE [DATABASE_TO_BACKUP] TO DISK = N'[PATH TO BACKUP FILE]' WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, ENCRYPTION(ALGORITHM = AES_256, SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]); GOVeritabanını geri yükle
TDE ile şifrelenmiş bir veritabanı yedeğini geri yüklemek için, hedef SQL Server örneğinin önce şifreleme için kullanılan asimetrik anahtar kasa anahtarının bir kopyasına sahip olması gerekir. Bu kopyayı sağlamak için:
TDE için kullanılan orijinal asimetrik anahtar artık anahtar kasasında değilse, anahtar kasası anahtarı yedeğini geri yükleyin veya anahtarı yerel bir HSM'den yeniden içeri aktarın. Anahtarın parmak izinin veritabanı yedeklemesinde kaydedilen parmak iziyle eşleşmesi için, anahtarın başlangıçta sahip olduğu aynı anahtar kasası anahtar adını kullanması gerekir.
Hedef SQL Server örneğinde 1. ve 2. adımları uygula.
Hedef SQL Server örneği, yedeklemeyi şifrelemek için kullanılan asimetrik anahtarlara eriştikten sonra, veritabanını sunucuda geri yükleyin.
Örnek geri yükleme kodu:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GOYedekleme seçenekleri hakkında daha fazla bilgi için bkz BACKUP . (Transact-SQL).
Anahtar kasasından asimetrik bir anahtar kullanılarak sütun düzeyinde şifreleme
Aşağıdaki örnek, anahtar kasasında asimetrik anahtar tarafından korunan bir simetrik anahtar oluşturur. Simetrik anahtar daha sonra veri tabanındaki verileri şifreler.
Önemli
Eğer yedek şifreleme için zaten kullanmışsanız, aynı asimetrik anahtarı sütun seviyesinde şifreleme için kullanamazsınız.
Bu örnek, CONTOSO_KEY_COLUMNS anahtar kasasında saklanan asimetrik anahtarı kullanır; bu anahtarı daha önce içe aktarabilir veya oluşturabilirsiniz, Adım 2: Anahtar kasası oluşturmak. Bu asimetrik anahtarı ContosoDatabase veritabanında kullanmak için, ContosoDatabase veritabanına anahtara başvuru vermek üzere CREATE ASYMMETRIC KEY ifadesini yeniden çalıştırın.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
DECLARE @DATA VARBINARY(MAX);
--Open the symmetric key for use in this session
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
--Encrypt syntax
SELECT @DATA = ENCRYPTBYKEY
(
KEY_GUID('DATA_ENCRYPTION_KEY'),
CONVERT(VARBINARY,'Plain text data to encrypt')
);
-- Decrypt syntax
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));
--Close the symmetric key
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;