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ğlan veya 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ğlan or'ı 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:

  1. Azure PowerShell’i yükleme
  2. Microsoft Entra kiracısı oluşturma
  3. Anahtar kasası oluşturma

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ündeekran 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.

    Application ID

  • 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.

    AAD secret

  • 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.

SQL Azure Key Vault Integration

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 altında Güvenlik'iseç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):

SQL Key Vault integration for existing VMs

İş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)

  1. 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
    
  2. 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

  1. 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
    
  2. 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.