إنتقل إلى المحتوى الرئيسي

تشفير قاعدة البيانات

ينطبق على:
SQL Server 2016+TDE مُفعّليتطلب Sysadmin

نظرة عامة​

يشفّر تشفير البيانات الشفاف (TDE) تخزين قاعدة بيانات بأكملها باستخدام مفتاح تشفير قاعدة البيانات (DEK). مع DuoKey EKM، يكون هذا المفتاح DEK محميًا بمفتاح غير متماثل مخزّن في منصة DuoKey السحابية، مما يوفّر طبقة أمان إضافية.

المتطلبات المسبقة

  • SQL Server مكوّن مع مزوّد DuoKey EKM
  • مفتاح غير متماثل مُنشأ والتشفير مُمكّن في DuoKey
  • تثبيت SQL Server Management Studio (SSMS)
  • امتيازات Sysadmin على SQL Server

التسلسل الهرمي للتشفير​

منصة DuoKey السحابية

مفتاح التشفير الرئيسي (MEK)

محمي بواسطة MPC
يحمي

SQL Server (قاعدة بيانات master)

مفتاح غير متماثل (EKM)

RSA-2048
يحمي

قاعدة بيانات المستخدم

مفتاح تشفير قاعدة البيانات (DEK)

AES-256
يشفّر

ملفات البيانات

.mdf, .ndf, .ldf

مشفّرة أثناء التخزين

إنشاء قاعدة البيانات وتفعيل TDE​

1

إنشاء أو تحديد قاعدة بيانات

أنشئ قاعدة بيانات جديدة أو استخدم قاعدة موجودة:

إنشاء قاعدة بياناتSQL
-- Create a new database
CREATE DATABASE EmployeeDB;
GO

USE EmployeeDB;
CREATE TABLE Employees (
  EmployeeID INT PRIMARY KEY,
  FirstName VARCHAR(128),
  LastName VARCHAR(128),
  Salary DECIMAL(10, 2),
  SSN VARCHAR(11)
);
GO
2

إنشاء مفتاح تشفير قاعدة البيانات

أنشئ DEK محميًا بالمفتاح غير المتماثل في DuoKey:

إنشاء DEKSQL
USE EmployeeDB;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER ASYMMETRIC KEY SQL_EKM_Key;
GO
الخوارزميةحجم المفتاحالتوصية
AES_128128-بتأمان جيد
AES_192192-بتأمان أفضل
AES_256256-بتموصى به - الأقوى
Triple DES168-بتغير موصى به
نصيحة

استخدم AES_256 للحصول على أقوى تشفير. فهو يوفّر أمانًا ممتازًا مع تأثير ضئيل على الأداء في الأجهزة الحديثة.

3

تفعيل التشفير

فعّل TDE على قاعدة البيانات:

تفعيل TDESQL
ALTER DATABASE EmployeeDB
SET ENCRYPTION ON;
GO
ملاحظة

يُنفَّذ التشفير بشكل غير متزامن. بالنسبة لقواعد البيانات الكبيرة، قد تستغرق هذه العملية بعض الوقت.

مراقبة تقدّم التشفير​

التحقق من حالة التشفيرSQL
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  CASE encryption_state
      WHEN 0 THEN 'No database encryption key present'
      WHEN 1 THEN 'Unencrypted'
      WHEN 2 THEN 'Encryption in progress'
      WHEN 3 THEN 'Encrypted'
      WHEN 4 THEN 'Key change in progress'
      WHEN 5 THEN 'Decryption in progress'
      WHEN 6 THEN 'Protection change in progress'
  END AS Status,
  percent_complete,
  encryptor_type
FROM sys.dm_database_encryption_keys;
GO

مرجع حالات التشفير​

الحالةالقيمةالوصفالإجراء المطلوب
0لا يوجد DEKلا يوجد مفتاح تشفير لقاعدة البياناتإنشاء DEK باستخدام CREATE DATABASE ENCRYPTION KEY
1غير مشفّرمفتاح DEK موجود لكن التشفير غير مُفعَّلالتفعيل باستخدام ALTER DATABASE SET ENCRYPTION ON
2قيد التشفيرالتشفير قيد التقدّمانتظر اكتمال العملية، وراقب percent_complete
3مشفَّرةقاعدة البيانات مشفَّرة بالكامللا شيء - تشغيل طبيعي
4تغيير المفتاحتدوير المفتاح قيد التنفيذانتظر اكتمال العملية
5قيد فك التشفيرفك التشفير قيد التنفيذانتظر اكتمال العملية
6تغيير الحمايةتغيير أداة الحماية قيد التنفيذانتظر اكتمال العملية

التحقق من التشفير​

التحقق من تشفير قاعدة البياناتSQL
SELECT
  d.name AS DatabaseName,
  d.is_encrypted,
  dek.encryption_state,
  dek.percent_complete,
  dek.key_algorithm,
  dek.key_length
FROM sys.databases d
LEFT JOIN sys.dm_database_encryption_keys dek
  ON d.database_id = dek.database_id
WHERE d.name = 'EmployeeDB';
GO
التحقق من استخدام المفتاح غير المتماثلSQL
USE master;
SELECT
  ak.name AS AsymmetricKeyName,
  ak.algorithm_desc,
  ak.key_length,
  cp.name AS CryptoProviderName
FROM sys.asymmetric_keys ak
INNER JOIN sys.cryptographic_providers cp
  ON ak.provider_id = cp.provider_id;
GO

اختبار عمليات البيانات​

بعد تفعيل التشفير، اختبر أن عمليات البيانات تعمل بشفافية:

اختبار قاعدة بيانات مشفّرةSQL
USE EmployeeDB;

-- Insert test data
INSERT INTO Employees (EmployeeID, FirstName, LastName, Salary, SSN)
VALUES
  (1, 'John', 'Doe', 75000.00, '123-45-6789'),
  (2, 'Jane', 'Smith', 82000.00, '987-65-4321'),
  (3, 'Bob', 'Johnson', 68000.00, '555-12-3456');
GO

-- Query data (works transparently)
SELECT * FROM Employees;
GO
نصيحة

تُشفّر البيانات تلقائيًا أثناء السكون مع بقائها شفافة للتطبيقات.

اعتبارات الأداء​

التشفير الأولي

  • وحدة المعالجة المركزية: زيادة معتدلة
  • الإدخال/الإخراج: نشاط كبير
  • السرعة: ~1-5 جيجابايت/دقيقة
  • تبقى قاعدة البيانات متصلة

التأثير المستمر

  • عمليات القراءة: 3-5% عبء إضافي
  • عمليات الكتابة: 5-10% عبء إضافي
  • استخدام وحدة المعالجة المركزية: زيادة 1-3%
  • AES-NI يقلل التأثير
نصائح الأداء
  • جدول التشفير الأولي خلال نوافذ الصيانة
  • راقب وحدة المعالجة المركزية والإدخال/الإخراج أثناء التشفير
  • استخدم معالجات تدعم AES-NI للحصول على أفضل أداء
  • تأكد من وجود مساحة كافية في tempdb

تشفير قواعد بيانات متعددة​

استخدم برنامجًا نصيًا لتشفير قواعد بيانات متعددة دفعة واحدة:

برنامج نصي للتشفير الجماعيSQL
DECLARE @dbname NVARCHAR(128);
DECLARE @sql NVARCHAR(MAX);

DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')
AND is_encrypted = 0;

OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @dbname;

WHILE @@FETCH_STATUS = 0
BEGIN
  SET @sql = N'USE [' + @dbname + '];
               CREATE DATABASE ENCRYPTION KEY
               WITH ALGORITHM = AES_256
               ENCRYPTION BY SERVER ASYMMETRIC KEY SQL_EKM_Key;
               ALTER DATABASE [' + @dbname + '] SET ENCRYPTION ON;';

  EXEC sp_executesql @sql;
  PRINT 'Encrypted database: ' + @dbname;

  FETCH NEXT FROM db_cursor INTO @dbname;
END;

CLOSE db_cursor;
DEALLOCATE db_cursor;
GO

تعطيل التشفير​

تحذير

سيؤدي تعطيل التشفير إلى فك تشفير قاعدة البيانات، وهو ما قد يستغرق وقتًا كبيرًا لقواعد البيانات الكبيرة.

تعطيل TDESQL
-- Disable encryption
ALTER DATABASE EmployeeDB
SET ENCRYPTION OFF;
GO

-- Monitor decryption progress
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  percent_complete
FROM sys.dm_database_encryption_keys
WHERE DB_NAME(database_id) = 'EmployeeDB';
GO

-- After decryption completes (encryption_state = 1)
USE EmployeeDB;
DROP DATABASE ENCRYPTION KEY;
GO

أفضل الممارسات​

الأمان

شفّر قواعد البيانات مبكرًا، احمِ مفاتيح النسخ الاحتياطي، دقّق الوصول إلى المفاتيح

العمليات

اختبر قبل الإنتاج، راقب الأداء، خطط للنمو

الصيانة

نسخ احتياطية منتظمة، اختبر الاستعادات، أبقِ DuoKey قابلًا للوصول

استكشاف الأخطاء وإصلاحها​

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