Azure VM'lerinde SQL Server için Azure Key Vault tümleştirmesini yapılandırma (Resource Manager)
Şunlar için geçerlidir: Azure VM'de SQL Server
Saydam veri şifrelemesi (TDE), sütun düzeyinde şifreleme (CLE) ve yedekleme şifrelemesi gibi birden çok SQL Server şifreleme özelliği vardır. Bu şifreleme biçimleri, şifreleme için kullandığınız şifreleme anahtarlarını yönetmenizi ve depolamanızı gerektirir. Azure Key Vault hizmeti, bu anahtarların güvenliğini ve yönetimini güvenli ve yüksek oranda kullanılabilir bir konumda geliştirmek için tasarlanmıştır. SQL Server Bağlayıcısı, SQL Server'ın Azure Key Vault'tan bu anahtarları kullanmasını sağlar.
SQL Server'ı şirket içinde çalıştırıyorsanız, şirket içi SQL Server örneğinizden Azure Key Vault'a erişmek için izleyebileceğiniz adımlar vardır. Ancak Azure VM'lerindeki SQL Server için Azure Key Vault Tümleştirme özelliğini kullanarak zaman kazanabilirsiniz.
Not
Azure Key Vault tümleştirmesi yalnızca SQL Server'ın Enterprise, Developer ve Evaluation Edition sürümlerinde kullanılabilir. SQL Server 2019'dan başlayarak Standard sürümü de desteklenir.
Bu özellik etkinleştirildiğinde SQL Server Bağlayıcısı'nı otomatik olarak yükler, EKM sağlayıcısını Azure Key Vault'a erişecek şekilde yapılandırılır ve kasanıza erişmenizi sağlayacak kimlik bilgilerini oluşturur. Daha önce bahsedilen şirket içi belgelerindeki adımlara baktıysanız, bu özelliğin 2. ve 3. adımları otomatikleştirdiğini görebilirsiniz. Yine de el ile yapmanız gereken tek şey, anahtar kasasını ve anahtarları oluşturmaktır. Buradan, SQL Server VM'nizin tüm kurulumu otomatikleştirilmiştir. Bu özellik bu kurulumu tamamladıktan sonra, veritabanlarınızı veya yedeklemelerinizi normalde yaptığınız gibi şifrelemeye başlamak için Transact-SQL (T-SQL) deyimlerini yürütebilirsiniz.
Not
Şablon kullanarak Key Vault tümleştirmesi de yapılandırabilirsiniz. Daha fazla bilgi için bkz . Azure Key Vault tümleştirmesi için Azure hızlı başlangıç şablonu.
AKV Tümleştirmesi için hazırlanma
SQL Server VM'nizi yapılandırmak için Azure Key Vault Tümleştirmesi'ni kullanmak için birkaç önkoşul vardır:
Aşağıdaki bölümlerde bu önkoşullar ve daha sonra PowerShell cmdlet'lerini çalıştırmak için toplamanız gereken bilgiler açıklanmaktadır.
Not
Bu makalede, Azure ile etkileşim için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılır. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Azure PowerShell'i yükleme
En son Azure PowerShell modülünü yüklediğinizden emin olun. Daha fazla bilgi için bkz. Azure PowerShell’i yükleme ve yapılandırma.
Microsoft Entra Id'nize uygulama kaydetme
İlk olarak, aboneliğinizde bir Microsoft Entra kiracısı olmalıdır. Birçok avantajın arasında bu, belirli kullanıcılar ve uygulamalar için anahtar kasanıza izin vermenizi sağlar.
Ardından, bir uygulamayı Microsoft Entra Id ile kaydedin. Bu, vm'nizin ihtiyaç duyduğu anahtar kasanıza erişimi olan bir Hizmet Sorumlusu hesabı sağlar. Azure Key Vault makalesinde, bu adımları Microsoft Entra Id ile bir uygulamayı kaydetme bölümünde bulabilir veya bu blog gönderisinin Uygulama için kimlik alma bölümünde ekran görüntüleri içeren adımları görebilirsiniz. Bu adımları tamamlamadan önce, bu kayıt sırasında daha sonra SQL VM'nizde Azure Key Vault Tümleştirmesini etkinleştirirken gereken aşağıdaki bilgileri toplamanız gerekir.
Uygulama eklendikten sonra, Kayıtlı uygulama bölmesinde Uygulama Kimliği'ni (ClientID veya AppID olarak da bilinir) bulun. Uygulama kimliği daha sonra Azure Key Vault Tümleştirmesini etkinleştirmek için PowerShell betiğindeki $spName (Hizmet Sorumlusu adı) parametresine atanır.
Anahtarınızı oluştururken bu adımlar sırasında, aşağıdaki ekran görüntüsünde gösterildiği gibi anahtarınızın gizli dizisini kopyalayın. Bu anahtar gizli dizisi daha sonra PowerShell betiğindeki $spSecret (Hizmet Sorumlusu gizli dizisi) parametresine atanır.
Uygulama kimliği ve gizli dizi, SQL Server'da kimlik bilgisi oluşturmak için de kullanılır.
Şu erişim izinlerine sahip olmak için bu yeni uygulama kimliğini (veya istemci kimliğini) yetkilendirmeniz gerekir: get, wrapKey, unwrapKey. Bu, Set-AzKeyVaultAccessPolicy cmdlet'iyle yapılır. Daha fazla bilgi için bkz . Azure Key Vault'a genel bakış.
Anahtar kasası oluşturma
Vm'nizde şifreleme için kullanacağınız anahtarları depolamak için Azure Key Vault'un kullanılması için bir anahtar kasasına erişmeniz gerekir. Anahtar kasanızı henüz ayarlamadıysanız, Azure Key Vault'u Kullanmaya Başlama makalesindeki adımları izleyerek bir tane oluşturun. Bu adımları tamamlamadan önce, bu kurulum sırasında toplamanız gereken ve daha sonra SQL VM'nizde Azure Key Vault Tümleştirmesini etkinleştirdiğinizde gereken bazı bilgiler vardır.
New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'
Anahtar kasası oluşturma adımına gittiğiniz zaman, anahtar kasası URL'si olan döndürülen vaultUri özelliğini not edin. Bu adımda sağlanan örnekte, daha sonra gösterilen anahtar kasasının adı ContosoKeyVault olduğundan anahtar kasası URL'si olacaktır https://contosokeyvault.vault.azure.net/
.
Anahtar kasası URL'si daha sonra Azure Key Vault Tümleştirmesini etkinleştirmek için PowerShell betiğindeki $akvURL parametresine atanır.
Anahtar kasası oluşturulduktan sonra anahtar kasasına bir anahtar eklememiz gerekir; daha sonra SQL Server'da asimetrik anahtar oluşturma işlemi oluşturduğunuzda bu anahtara başvurulacaktır.
Not
Genişletilebilir Anahtar Yönetimi (EKM) Sağlayıcısı sürüm 1.0.4.0, HIZMET olarak SQL altyapısı (IaaS) uzantısı aracılığıyla SQL Server VM'sine yüklenir. SQL IaaS Aracısı uzantısının yükseltilmesi sağlayıcı sürümünü güncelleştirmez. Gerekirse EKM sağlayıcı sürümünü el ile yükseltmeyi (örneğin, bir SQL Yönetilen Örneği geçiş yaparken) göz önünde bulundurun.
Key Vault tümleştirmesini etkinleştirme ve yapılandırma
Sağlama sırasında Key Vault tümleştirmesini etkinleştirebilir veya mevcut VM'ler için yapılandırabilirsiniz.
Yeni VM'ler
Resource Manager ile yeni bir SQL sanal makinesi sağlıyorsanız, Azure portalı Azure Key Vault tümleştirmesini etkinleştirmenin bir yolunu sağlar.
Sağlama hakkında ayrıntılı bir kılavuz için bkz . Azure portalında SQL sanal makinesi sağlama.
Mevcut VM'ler
Mevcut SQL sanal makineleri için SQL sanal makineleri kaynağınızı açın ve Ayarlar'ın altında Güvenlik'i seçin. Azure Key Vault tümleştirmesini etkinleştirmek için Etkinleştir'i seçin.
Aşağıdaki ekran görüntüsünde, mevcut bir SQL Server VM için portalda Azure Key Vault'un nasıl etkinleştirileceği gösterilmektedir (bu SQL Server örneği varsayılan olmayan bir bağlantı noktası 1401 kullanır):
İşiniz bittiğinde, değişikliklerinizi kaydetmek için Güvenlik sayfasının alt kısmındaki Uygula düğmesini seçin.
Not
Burada oluşturduğumuz kimlik bilgisi adı daha sonra sql oturum açma bilgileriyle eşlenir. Bu, SQL oturum açma bilgilerinin anahtar kasasına erişmesini sağlar.
Azure Key Vault Tümleştirmesini etkinleştirdikten sonra SQL VM'nizde SQL Server şifrelemesini etkinleştirebilirsiniz. İlk olarak, anahtar kasanızda bir asimetrik anahtar ve VM'nizdeki SQL Server'da simetrik anahtar oluşturmanız gerekir. Ardından veritabanlarınız ve yedeklemeleriniz için şifrelemeyi etkinleştirmek üzere T-SQL deyimlerini yürütebileceksiniz.
Yararlanabileceğiniz çeşitli şifreleme biçimleri vardır:
Aşağıdaki Transact-SQL betikleri bu alanların her biri için örnekler sağlar.
Örnekler için önkoşullar
Her örnek iki önkoşulu temel alır: anahtar kasanızdan CONTOSO_KEY adlı bir asimetrik anahtar ve Azure_EKM_cred adlı AKV Tümleştirme özelliği tarafından oluşturulan kimlik bilgileri. Aşağıdaki Transact-SQL komutları, örnekleri çalıştırmak için bu önkoşulları ayarlar.
USE master;
GO
--create credential
--The <<SECRET>> here requires the <Application ID> (without hyphens) and <Secret> to be passed together without a space between them.
CREATE CREDENTIAL Azure_EKM_cred
WITH IDENTITY = 'keytestvault', --keyvault
SECRET = '<<SECRET>>'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
--Map the credential to a SQL login that has sysadmin permissions. This allows the SQL login to access the key vault when creating the asymmetric key in the next step.
ALTER LOGIN [SQL_Login]
ADD CREDENTIAL Azure_EKM_cred;
CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'KeyName_in_KeyVault', --The key name here requires the key we created in the key vault
CREATION_DISPOSITION = OPEN_EXISTING;
Saydam Veri Şifrelemesi (TDE)
TDE için Veritabanı Altyapısı tarafından kullanılacak bir SQL Server oturumu oluşturun ve ardından kimlik bilgilerini ekleyin.
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 EKM_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 EKM_Login ADD CREDENTIAL Azure_EKM_cred; GO
TDE için kullanılacak veritabanı şifreleme anahtarını oluşturun.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GO
Şifrelenmiş yedeklemeler
Yedeklemeleri şifrelemek için Veritabanı Altyapısı tarafından kullanılacak bir SQL Server oturumu oluşturun ve kimlik bilgilerini buna ekleyin.
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 EKM_Login FROM ASYMMETRIC KEY CONTOSO_KEY; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN EKM_Login ADD CREDENTIAL Azure_EKM_cred ; GO
Anahtar kasasında depolanan asimetrik anahtarla şifrelemeyi belirten veritabanını yedekleyin.
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]); GO
Sütun Düzeyi Şifrelemesi (CLE)
Bu betik, anahtar kasasında asimetrik anahtarla korunan bir simetrik anahtar oluşturur ve ardından veritabanındaki verileri şifrelemek için simetrik anahtarı kullanır.
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;
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;
--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;
Ek kaynaklar
Bu şifreleme özelliklerini kullanma hakkında daha fazla bilgi için bkz . EKM'yi SQL Server Şifreleme Özellikleri ile kullanma.
Bu makaledeki adımlarda, bir Azure sanal makinesinde sql server'ın zaten çalıştırıldığının varsayıldığını unutmayın. Aksi takdirde bkz . Azure'da SQL Server sanal makinesi sağlama. Azure VM'lerinde SQL Server çalıştırma hakkında diğer yönergeler için bkz. Azure Windows Sanal Makineler'da SQL Server'a genel bakış.
Sonraki adımlar
Daha fazla güvenlik bilgisi için Bkz . Azure VM'lerinde SQL Server için güvenlikle ilgili dikkat edilmesi gerekenler.