تكوين تكامل Azure Key Vault لـ SQL Server على أجهزة Azure الظاهرية (إدارة الموارد)

ينطبق على: Microsoft SQL Server على Azure VM

هناك العديد من ميزات التشفير في SQL Server، مثل تشفير البيانات الشفاف (TDE) وتشفير مستوى العمود (CLE) وتشفير النسخ الاحتياطي. تتطلب هذه النماذج من التشفير إدارة وتخزين مفاتيح التشفير التي تستخدمها للتشفير. تم تصميم خدمة Azure Key Vault لتحسين أمان وإدارة هذه المفاتيح في موقع آمن ومتاح بصورة مرتفعة. يمكّن موصل SQL Server لـ SQL Server من استخدام هذه المفاتيح من Azure Key Vault.

إذا كنت تقوم بتشغيل SQL Server محلياً، فهناك خطوات يمكنك اتباعها من أجل الوصول إلى Azure Key Vault من مثيل SQL Server الداخلي. ولكن بالنسبة لـ SQL Server على أجهزة Azure الظاهرية، يمكنك توفير الوقت باستخدام ميزة تكامل Azure Key Vault.

ملاحظة

يتوفر تكامل Azure Key Vault فقط لإصدارات Enterprise وDeveloper وEvaluation of SQL Server. بدءاً من SQL Server 2019، يتم دعم الإصدار القياسي أيضاً.

عند تمكين هذه الميزة، تقوم تلقائياً بتثبيت موصل خادم SQL، وتكوين موفر EKM للوصول إلى Azure Key Vault، وإنشاء بيانات الاعتماد للسماح لك بالوصول إلى المخزن الخاص بك. إذا نظرت إلى الخطوات الواردة في الوثائق المحلية المذكورة سابقاً، يمكنك أن ترى أن هذه الميزة تعمل تلقائياً على تنفيذ الخطوتين 2 و3. الشيء الوحيد الذي ما زلت بحاجة إلى القيام به يدوياً هو إنشاء خزنة المفاتيح والمفاتيح. من هناك، يتم تلقائياً إعداد جهاز SQL Server ظاهري بالكامل. بمجرد اكتمال هذه الميزة هذا الإعداد، يمكنك تنفيذ عبارات Transact-SQL (T-SQL) لبدء تشفير قواعد البيانات أو النسخ الاحتياطية كما تفعل عادةً.

ملاحظة

يمكنك أيضا تكوين تكامل "Key Vault" باستخدام قالب. لمزيد من المعلومات، راجع نموذج Azure للتشغيل السريع لتكامل Azure Key Vault .

استعد لدمج Azure Key Vault

لاستخدام Azure Key Vault Integration لتكوين SQL Server VM، هناك عدة متطلبات أساسية:

  1. تثبيت برنامج Azure PowerShell
  2. إنشاء Microsoft Azure Active Directory
  3. إنشاء مخزن رئيسي

تصف الأقسام التالية هذه المتطلبات الأساسية والمعلومات التي تحتاج إلى تجميعها لتشغيل أوامر cmdlets في PowerShell لاحقاً.

ملاحظة

تستخدم هذه المقالة الوحدة النمطية Azure Az PowerShell، وهي الوحدة النمطية PowerShell الموصى بها للتفاعل مع Azure. لبدء استخدام الوحدة النمطية Az PowerShell، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

قم بتثبيت Azure PowerShell

تأكد من تثبيت أحدث وحدة Azure PowerShell. لمزيد من المعلومات، راجع ⁧⁩ كيفية تثبيت Azure PowerShell وتكوينه ⁧⁩.

قم بتسجيل تطبيق في Microsoft Azure Active Directory الخاص بك

أولاً، يجب أن يكون لديك Azure Active Directory (AAD) في اشتراكك. من بين العديد من الفوائد، يتيح لك ذلك منح الإذن لخزينة المفاتيح الخاصة بك لمستخدمين وتطبيقات معينة.

بعد ذلك، قم بتسجيل طلب مع AAD (دليل Azure النشط). سيمنحك هذا حساباً رئيسياً للخدمة يمكنه الوصول إلى خزنة المفاتيح الخاصة بك، والتي سيحتاجها جهازك الظاهري VM. في مقالة Azure Key Vault، يمكنك العثور على هذه الخطوات في قسم Register an application with Microsoft Azure Active Directory، أو يمكنك الاطلاع على الخطوات مع لقطات الشاشة في Get an identity for the application section من مشاركة المدونة هذه. قبل إكمال هذه الخطوات، تحتاج إلى جمع المعلومات التالية أثناء هذا التسجيل المطلوب لاحقاً عند تمكين Azure Key Vault Integration على SQL VM.

  • بعد إضافة التطبيق، ابحث عن Application ID (المعروف أيضاً باسم Microsoft Azure Active Directory ClientID أو معرف التطبيق) في شفرة التطبيق المسجل. تم تعيين معرف التطبيق لاحقاً إلى المعلمة $ spName (الاسم الأساسي للخدمة) في البرنامج النصي PowerShell لتمكين تكامل Azure Key Vault.

    Application ID

  • أثناء هذه الخطوات عند إنشاء مفتاحك، انسخ البيانات السرية لمفتاحك كما هو موضح في لقطة الشاشة التالية. تم تعيين سر المفتاح هذا لاحقاً إلى المعلمة spSecret (البيانات السرية الرئيسية للخدمة) في البرنامج النصي PowerShell.

    AAD secret

  • سيتم أيضاً استخدام معرف التطبيق والبيانات السرية لإنشاء بيانات اعتماد في SQL Server.

  • يجب عليك تفويض معرّف التطبيق الجديد (أو معرّف العميل) للحصول على أذونات الوصول التالية: الحصول على، wrapKey، unsrapKey. يتم ذلك باستخدام الأمر cmdlet Set-AzKeyVaultAccessPolicy. لمزيد من المعلومات، راجع نظرة عامة على Azure Key Vault.

إنشاء مخزن رئيسي

لاستخدام Azure Key Vault لتخزين المفاتيح التي ستستخدمها للتشفير في الجهاز الظاهري، تحتاج إلى الوصول إلى خزنة المفاتيح. إذا لم تكن قد أعددت بالفعل خزنة المفاتيح، فأنشئ واحدة باتباع الخطوات الواردة في مقالة Getting Started with Azure Key Vault . قبل إكمال هذه الخطوات، هناك بعض المعلومات التي تحتاج إلى جمعها أثناء هذا الإعداد والمطلوبة لاحقاً عند تمكين Azure Key Vault Integration على SQL VM.

New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'

عندما تصل إلى خطوة إنشاء مخزن مفاتيح، لاحظ خاصية vaultUri التي تم إرجاعها، وهي عنوان URL لمخزن المفاتيح. في المثال المتوفر في هذه الخطوة، الموضح أدناه، اسم مخزن المفاتيح هو ContosoKeyVault، وبالتالي سيكون عنوان URL للمخزن الرئيسي هو https://contosokeyvault.vault.azure.net/.

تم تعيين عنوان URL لمخزن المفاتيح لاحقاً إلى المعلمة $ akvURL في البرنامج النصي PowerShell لتمكين تكامل Azure Key Vault.

بعد إنشاء خزنة المفاتيح، نحتاج إلى إضافة مفتاح إلى خزنة المفاتيح، وستتم إحالة هذا المفتاح عندما نقوم بإنشاء مفتاح غير متماثل تم إنشاؤه في SQL Server لاحقاً.

ملاحظة

يتم تثبيت الإصدار 1.0.4.0 من موفر إدارة المفاتيح القابلة للتوسيع (EKM) على SQL Server VM من خلال ملحق البنية التحتية لـ SQL كخدمة (IaaS). لن تؤدي ترقية ملحق SQL IaaS إلى تحديث إصدار الموفر. يرجى التفكير في ترقية إصدار موفر EKM يدوياً إذا لزم الأمر (على سبيل المثال، عند الترحيل إلى مثيل مُدار من SQL).

تمكين وتكوين تكامل Key Vault

يمكنك تمكين تكامل Key Vault أثناء التوفير أو تهيئته لأجهزة VM الموجودة.

لأجهزة الظاهرية الجديدة

إذا كنت تقوم بتزويد جهاز ظاهري SQL جديد باستخدام Resource Manager، فإن مدخل Microsoft Azure توفر طريقة لتمكين تكامل Azure Key Vault.

SQL Azure Key Vault Integration

للحصول على جولة تفصيلية حول التوفير، راجع تزويد جهاز SQL ظاهري في مدخل Microsoft Azure .

الأجهزة الظاهرية الحالية

بالنسبة للأجهزة SQL الظاهرية الحالية، افتح SQL virtual machines resource وحدد Security ضمن Settings. حدد Enable لتمكين تكامل Azure Key Vault.

SQL Key Vault integration for existing VMs

عند الانتهاء، حدد الزر Apply في أسفل صفحة Security لحفظ التغييرات.

ملاحظة

سيتم تعيين اسم بيانات الاعتماد الذي أنشأناه هنا لتسجيل الدخول إلى SQL لاحقاً. وهذا يسمح لـ SQL بالدخول للوصول إلى مخزن المفتاح.

الخطوات التالية

بعد تمكين Azure Key Vault Integration، يمكنك تمكين تشفير SQL Server على جهاز SQL الظاهري. أولاً، ستحتاج إلى إنشاء مفتاح غير متماثل داخل خزنة المفاتيح ومفتاح متماثل داخل SQL Server على الجهاز الظاهري الخاص بك. بعد ذلك، ستتمكن من تنفيذ عبارات T-SQL لتمكين التشفير لقواعد البيانات والنسخ الاحتياطية.

هناك عدة أشكال من التشفير يمكنك الاستفادة منها:

توفر البرامج النصية التالية لـ Transact-SQL أمثلة لكل مجال من هذه المجالات.

المتطلبات الأساسية للأمثلة

يعتمد كل مثال على شرطين أساسيين: مفتاح غير متماثل من خزنة المفاتيح يسمى CONTOSO_KEY وبيانات اعتماد تم إنشاؤها بواسطة ميزة تكامل AKV والتي تسمى Azure_EKM_cred. تقوم أوامر Transact-SQL التالية بإعداد هذه المتطلبات الأساسية لتشغيل الأمثلة.

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;

Transparent Data Encryption (TDE)

  1. قم بإنشاء تسجيل دخول إلى SQL Server ليستخدمه مشغل قاعدة البيانات لـ TDE، ثم أضف بيانات الاعتماد إليه.

    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.

    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
    

النسخ الاحتياطية المشفرة

  1. قم بإنشاء تسجيل دخول إلى SQL Server ليستخدمه مشغل قاعدة البيانات لتشفير النسخ الاحتياطية، وإضافة بيانات الاعتماد إليها.

    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. قم بعمل نسخة احتياطية من قاعدة البيانات التي تحدد التشفير باستخدام المفتاح غير المتماثل المخزن في خزنة المفاتيح.

    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
    

التشفير على مستوى العمود (CLE)

ينشئ هذا البرنامج النصي مفتاحاً متماثلاً محمياً بواسطة المفتاح غير المتماثل في خزنة المفاتيح، ثم يستخدم المفتاح المتماثل لتشفير البيانات في قاعدة البيانات.

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;

الموارد الإضافية

لمزيد من المعلومات حول كيفية استخدام ميزات التشفير هذه، راجع استخدام EKM مع ميزات تشفيرMicrosoft SQL Server.

لاحظ أن الخطوات الواردة في هذه المقالة تفترض أن لديك بالفعل SQL Server قيد التشغيل على جهاز Azure الظاهري. إذا لم يكن كذلك، فراجع توفير جهاز ظاهري لـ SQL Server في Azure. للحصول على إرشادات أخرى حول تشغيل SQL Server على Azure VMs، راجع نظرة عامة على SQL Server على Azure Virtual Machines.