إلغاء التثبيت
إلغاء تثبيت موفّر EKM
إزالة موفّر DuoKey SQL EKM من خادم SQL Server لديك بشكل صحيح
متى تلجأ إلى إلغاء التثبيت
قد تحتاج إلى إلغاء تثبيت موفّر EKM في هذه السيناريوهات:
استكشاف الأخطاء وإصلاحها
حل مشكلات التثبيت أو التهيئة
الترقية
تثبيت إصدار أحدث من الموفّر
إيقاف التشغيل
إزالة SQL EKM من الخادم
الترحيل
الانتقال إلى حل تشفير مختلف
إذا كانت لديك قواعد بيانات مشفّرة، فإن إزالة موفّر EKM ستمنع الوصول إلى تلك القواعد ما لم تقم بفك تشفيرها أولاً أو تحافظ على تهيئة المفاتيح. قم بفك التشفير أولاً، أو أبقِ الموفّر وبيانات الاعتماد والمفتاح الرئيسي في مكانها.
المتطلبات المسبقة
- Backup all encrypted databases
- Document current configuration (credentials, keys, etc.)
- Administrator privileges on the server
- Verify no active encrypted databases (or plan for re-encryption)
خطوات ما قبل إلغاء التثبيت
جرد قواعد البيانات المشفّرة
أولاً، حدّد جميع قواعد البيانات المحمية بواسطة TDE:
SELECT
d.name AS DatabaseName,
d.is_encrypted,
dek.encryption_state,
dek.encryptor_type
FROM sys.databases d
LEFT JOIN sys.dm_database_encryption_keys dek
ON d.database_id = dek.database_id
WHERE d.is_encrypted = 1;
GOتوثيق التهيئة
سجّل تفاصيل الموفّر والمفتاح وبيانات الاعتماد الحالية قبل إلغاء التثبيت:
-- Document cryptographic providers
SELECT
name AS ProviderName,
guid,
is_enabled,
dll_path
FROM sys.cryptographic_providers;
GO
-- Document asymmetric keys and the provider they are bound to
USE master;
SELECT
ak.name AS KeyName,
ak.algorithm_desc,
ak.thumbprint,
cp.name AS ProviderName
FROM sys.asymmetric_keys ak
LEFT JOIN sys.cryptographic_providers cp
ON ak.cryptographic_provider_guid = cp.guid;
GO
-- Document credentials
SELECT
name AS CredentialName,
credential_identity
FROM sys.credentials
WHERE name LIKE '%Dke%' OR name LIKE '%EKM%';
GOالنسخ الاحتياطي لقواعد البيانات
احرص دائماً على أخذ نسخة احتياطية من جميع قواعد البيانات المشفّرة قبل الشروع في إلغاء التثبيت.
BACKUP DATABASE <DatabaseName>
TO DISK = 'C:\Backups\<DatabaseName>_PreUninstall.bak'
WITH COMPRESSION, CHECKSUM;
GOتنظيف SQL Server
قم بإزالة كائنات SQL Server بهذا الترتيب: تعيينات بيانات الاعتماد أولاً، ثم تسجيلات الدخول، ثم بيانات الاعتماد، ثم المفتاح غير المتماثل، وأخيراً الموفّر. لا يمكن حذف الموفّر ما دام هناك مفتاح أو بيانات اعتماد لا يزال يشير إليه.
إذا كانت أي قاعدة بيانات لا تزال مشفّرة، فقم بفك تشفيرها أولاً (راجع فك التشفير قبل إلغاء التثبيت). إن حذف المفتاح الرئيسي أو الموفّر بينما تكون قاعدة البيانات مشفّرة يجعل تلك القاعدة غير قابلة للاسترداد.
Remove Credential Mappings
قم بإزالة بيانات الاعتماد من كل تسجيل دخول مُعيَّنة إليه:
-- List logins with the EKM credential mapped
SELECT
l.name AS LoginName,
c.name AS CredentialName
FROM sys.server_principals l
INNER JOIN sys.credentials c
ON l.credential_id = c.credential_id
WHERE c.name LIKE '%Dke%';
GO
-- Drop the mappings
ALTER LOGIN [sa]
DROP CREDENTIAL DkeEkmCredential;
GO
ALTER LOGIN [TDE_Master_Login]
DROP CREDENTIAL DkeEkmCredential;
GODrop the Key Login
DROP LOGIN TDE_Master_Login;
GODrop the Credential
DROP CREDENTIAL DkeEkmCredential;
GOإذا فشل حذف بيانات الاعتماد، فتأكد من أنه تمت إزالة كل تعيين تسجيل دخول من الخطوة 1 أولاً.
Drop the Asymmetric Key
USE master;
DROP ASYMMETRIC KEY TDE_Master;
GOيؤدي هذا إلى إزالة مرجع SQL Server إلى المفتاح فقط. يبقى المفتاح نفسه في DuoKey ويمكن إعادة فتحه لاحقاً باستخدام OPEN_EXISTING.
Drop the Cryptographic Provider
DROP CRYPTOGRAPHIC PROVIDER DkeEkm;
GOلا يمكنك حذف موفّر التشفير ما دام هناك مفتاح غير متماثل أو بيانات اعتماد لا يزال يشير إليه. أكمِل الخطوات من 1 إلى 4 أولاً.
إزالة ملفات الموفّر
بعد اختفاء كائنات SQL، قم بإزالة الملفات المنشورة من المضيف.
Stop SQL Server (if needed)
يتم تحميل مكتبة الموفّر بواسطة SQL Server. إذا كان الملف مقفلاً، فأوقف الخدمة قبل حذفه.
Stop-Service MSSQLSERVERDelete the Provider Library
Remove-Item "C:\Program Files\DKE\EKM\dke_ekm_provider.dll" -Force
# Optionally remove the folder if now empty
Remove-Item "C:\Program Files\DKE\EKM" -Recurse -ForceRemove the Configuration and Runtime Files
احذف مجلد ProgramData الذي يحتوي على config.toml وkeystore.json وdke-ekm.log.
Remove-Item "C:\ProgramData\DKE\EKM" -Recurse -Forceهل ستُبقي قواعد البيانات مشفّرة؟ لا تحذف keystore.json. يحتاجه الموفّر لإعادة فتح قواعد البيانات المحمية بواسطة TDE بعد إعادة التشغيل.
Restart SQL Server
Start-Service MSSQLSERVERالتحقق بعد إلغاء التثبيت
التحقق من إزالة الملفات
الملفات المطلوب التحقق من إزالتها
إذا أُنشئ مفتاح السجل الاختياري HKLM\SOFTWARE\DKE\EKM لأجل الإعدادات المتقدمة، فيمكنك إزالته أيضاً. لا يُنشئ التثبيت القياسي أي إدخالات في السجل.
التحقق من حالة SQL Server
-- Should return no rows
SELECT name, guid, is_enabled
FROM sys.cryptographic_providers
WHERE name = 'DkeEkm';
GOالتعامل مع قواعد البيانات المشفّرة
الخيار 1: الإبقاء على قواعد البيانات مشفّرة
إذا كنت تخطط لإعادة التثبيت أو الحفاظ على التشفير:
احتفظ بالنسخ الاحتياطية
حافظ على النسخ الاحتياطية لقواعد البيانات المشفّرة
احتفظ بمخزن المفاتيح
أبقِ على config.toml وkeystore.json حتى يمكن إعادة فتح المفتاح
خطّط لإعادة التثبيت
أعد نشر الموفّر وأعد فتح المفتاح الرئيسي عندما تكون جاهزاً
الخيار 2: فك التشفير قبل إلغاء التثبيت
إذا كنت ترغب في إزالة التشفير بالكامل، فقم بفك تشفير كل قاعدة بيانات قبل حذف أي كائنات SQL أو حذف الملفات:
-- Disable TDE
ALTER DATABASE <DatabaseName>
SET ENCRYPTION OFF;
GO
-- Monitor decryption progress
SELECT
DB_NAME(database_id) AS DatabaseName,
encryption_state,
percent_complete
FROM sys.dm_database_encryption_keys;
GO
-- Wait until encryption_state = 1 (Unencrypted)
-- Drop the Database Encryption Key
USE <DatabaseName>;
DROP DATABASE ENCRYPTION KEY;
GO
-- Verify decryption
SELECT
name,
is_encrypted
FROM sys.databases
WHERE name = '<DatabaseName>';
GOاستكشاف الأخطاء وإصلاحها
إلغاء التثبيت الطارئ
قد يترك إلغاء التثبيت الطارئ قواعد البيانات المشفّرة غير قابلة للوصول. استخدمه فقط في الحالات الحرجة مع وجود نسخ احتياطية مناسبة.
-- Force remove references, then the provider
USE master;
DROP ASYMMETRIC KEY TDE_Master;
GO
DROP CREDENTIAL DkeEkmCredential;
GO
DROP CRYPTOGRAPHIC PROVIDER DkeEkm;
GOثم قم بإزالة ملفات الموفّر كما هو موضّح أعلاه.