البدء
البدء مع SQL EKM
دليل البدء السريع لتشفير قاعدة بياناتك الأولى باستخدام DuoKey EKM
نظرة عامة
يوفّر DuoKey SQL EKM إدارة مفاتيح خارجية لتشفير البيانات الشفاف (TDE) في Microsoft SQL Server. يرشدك هذا الدليل عبر الخطوات الأساسية لتشفير قاعدة بياناتك الأولى.
المتطلبات المسبقة
- Microsoft SQL Server 2016 أو أحدث (إصدار Enterprise أو Developer على نظام Windows)
- Windows Server 2012 R2 أو أحدث (أو Windows 10/11 للتطوير)
- امتيازات المسؤول على جهاز SQL Server
- تثبيت SQL Server Management Studio (SSMS)
- الوصول إلى منصة DuoKey السحابية
- اتصال شبكي (منفذ HTTPS 443) بمنصة DuoKey
- أن يكون مزوّد EKM على هيئة DLL موقّع بتوقيع Authenticode وأن تكون سلسلة توقيعه موثوقة على الجهاز
- وجود ملف تكوين المزوّد config.toml في المسار C:\ProgramData\DKE\EKM\config.toml
خطوات البدء السريع
إنشاء تطبيق SQL EKM في منصة DuoKey
أنشئ تطبيق SQL EKM الخاص بك في منصة DuoKey:
- سجّل الدخول إلى منصة DuoKey السحابية
- انتقل إلى قسم Apps
- انقر على "Create New APP"
- حدد "DuoKey for SQL" وانقر على "Install Now"
- املأ التفاصيل المطلوبة وعيّن الأدوار
- حدد خزنة (vault) لمفاتيحك
- نزّل ملف الإعداد
- احفظ مفتاح الوكيل المُسجَّل (enrolled agent key) المرفق مع ملف الإعداد
حافظ على أمان ملف الإعداد ومفتاح الوكيل المُسجَّل الخاص به - فمفتاح الوكيل هو القيمة الوحيدة التي يستخدمها SQL Server للمصادقة لدى DuoKey.
تثبيت مزوّد EKM على SQL Server
انشر مزوّد DuoKey EKM على SQL Server الخاص بك. المزوّد عبارة عن ملف DLL واحد موقّع بتوقيع Authenticode، وهو dke_ekm_provider.dll، يُسلَّم عبر ملف الإعداد من تطبيق DuoKey.
- شغّل ملف الإعداد من تطبيق DuoKey لنشر المزوّد
- ضع
dke_ekm_provider.dllفي مجلد يمكن لخدمة SQL Server قراءته، على سبيل المثالC:\Program Files\DKE\EKM(وليسC:\Windows\System32) - تأكد من وجود ملف تكوين المزوّد
config.tomlفي المسارC:\ProgramData\DKE\EKM\config.toml - تأكد من أن ملف DLL موقّع وأن سلسلة توقيعه موثوقة على الجهاز
يرفض SQL Server تحميل ملف DLL خاص بـ EKM غير موقّع. يجب أن يكون المزوّد موقّعًا بتوقيع Authenticode وأن تكون سلسلة توقيعه موثوقة على جهاز SQL Server قبل أن يتسنى تسجيله.
المزوّد عبارة عن ملف DLL واحد. لا توجد مكتبات مساعدة منفصلة لتثبيتها، ولا مفاتيح تسجيل (registry) لتكوينها - إذ تُوجد جميع إعدادات الاتصال في config.toml الذي يسلّمه ملف الإعداد.
تكوين SQL Server
كوّن SQL Server لاستخدام مزوّد DuoKey EKM:
-- Enable advanced options
sp_configure 'show advanced', 1;
GO
RECONFIGURE;
GO
-- Enable EKM provider
sp_configure 'EKM provider enabled', 1;
GO
RECONFIGURE;
GOCREATE CRYPTOGRAPHIC PROVIDER DuoKeyProvider
FROM FILE = 'C:\Program Files\DKE\EKM\dke_ekm_provider.dll';
GO-- Create provider credential (SECRET is the enrolled agent key from the setup file)
CREATE CREDENTIAL DuoKeyCredential
WITH IDENTITY = 'dke-ekm-service',
SECRET = '<agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GO
-- Map credential to login
ALTER LOGIN [sa]
ADD CREDENTIAL DuoKeyCredential;
GOقيمة SECRET هي مفتاح الوكيل المُسجَّل الوحيد من ملف الإعداد الخاص بك - استبدل <agent-key> بتلك القيمة. أما IDENTITY فهي مجرد تسمية؛ يمكن أن تكون أي اسم تختاره.
-- Open the pre-provisioned RSA-2048 master key that lives in the DuoKey vault.
-- PROVIDER_KEY_NAME must match the master key name provisioned for your app.
USE master;
CREATE ASYMMETRIC KEY SQL_EKM_Key
FROM PROVIDER DuoKeyProvider
WITH PROVIDER_KEY_NAME = 'TDE_MASTER',
CREATION_DISPOSITION = OPEN_EXISTING;
GOالمفتاح الرئيسي RSA-2048 مُهيّأ مسبقًا في خزنة DuoKey ولا يغادرها أبدًا. استخدم CREATION_DISPOSITION = OPEN_EXISTING للإشارة إلى المفتاح الموجود - لا تنشئ مفتاحًا جديدًا.
-- Create a login mapped to the asymmetric key (used by TDE)
CREATE LOGIN SQL_EKM_Login
FROM ASYMMETRIC KEY SQL_EKM_Key;
GO
-- Create the TDE credential (SECRET is again the enrolled agent key)
CREATE CREDENTIAL SQL_EKM_TdeCred
WITH IDENTITY = 'dke-ekm-tde',
SECRET = '<agent-key>'
FOR CRYPTOGRAPHIC PROVIDER DuoKeyProvider;
GO
-- Map the TDE credential to the key login
ALTER LOGIN SQL_EKM_Login
ADD CREDENTIAL SQL_EKM_TdeCred;
GOتشفير قاعدة بياناتك الأولى
-- Create a test database
CREATE DATABASE TestDB;
GO
USE TestDB;
CREATE TABLE Employees (
ID INT PRIMARY KEY,
Name VARCHAR(100),
SSN VARCHAR(11)
);
GO-- Create Database Encryption Key
USE TestDB;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER ASYMMETRIC KEY SQL_EKM_Key;
GO
-- Enable encryption
ALTER DATABASE TestDB
SET ENCRYPTION ON;
GOSELECT
DB_NAME(database_id) AS DatabaseName,
encryption_state,
CASE encryption_state
WHEN 3 THEN 'Encrypted'
WHEN 2 THEN 'Encryption in progress'
ELSE 'Other'
END AS Status,
percent_complete
FROM sys.dm_database_encryption_keys
WHERE DB_NAME(database_id) = 'TestDB';
GOالاختبار والتحقق
-- Insert test data
USE TestDB;
INSERT INTO Employees (ID, Name, SSN)
VALUES (1, 'John Doe', '123-45-6789');
GO
-- Query data (works transparently)
SELECT * FROM Employees;
GO
-- Final verification
SELECT
d.name AS DatabaseName,
d.is_encrypted,
dek.encryption_state
FROM sys.databases d
LEFT JOIN sys.dm_database_encryption_keys dek
ON d.database_id = dek.database_id
WHERE d.name = 'TestDB';
GOعندما تكون encryption_state = 3، تكون قاعدة بياناتك مشفّرة بالكامل ومحمية بواسطة DuoKey.
مرجع سريع لاستكشاف الأخطاء وإصلاحها
المشكلات الشائعة والحلول
| المشكلة | الحل السريع |
|---|---|
| EKM غير مُمكّن | sp_configure 'EKM provider enabled', 1; RECONFIGURE; |
| تعذّر فتح المفتاح | تحقق من أن PROVIDER_KEY_NAME يطابق المفتاح الرئيسي المُهيّأ واستخدم CREATION_DISPOSITION = OPEN_EXISTING |
| فشل تحميل المزوّد | تأكد من أن ملف DLL موقّع وموثوق، وأن المسار في FROM FILE قابل للقراءة من قِبل خدمة SQL Server |
| لم يُعثر على DLL | تحقق من وجود dke_ekm_provider.dll في مجلد التثبيت، مثل C:\Program Files\DKE\EKM |
| خطأ في الاتصال | تحقق من الاتصال الشبكي بـ DuoKey (المنفذ 443) ومن ملف config.toml في C:\ProgramData\DKE\EKM |
| خطأ في بيانات الاعتماد | تأكد من أن SECRET هو مفتاح الوكيل المُسجَّل من ملف الإعداد |
ما التالي؟
النسخ الاحتياطي والاستعادة
أنشئ نسخًا احتياطية لقواعد البيانات المشفّرة واستعدها إلى خوادم أخرى
تدوير المفاتيح
دوّر مفاتيح التشفير لتعزيز الأمان
إلغاء التثبيت
أزل مزوّد EKM بشكل صحيح