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

إلغاء التثبيت

ينطبق على:
SQL Server 2016+Administrator RequiredBackup Required

متى تلجأ إلى إلغاء التثبيت​

قد تحتاج إلى إلغاء تثبيت موفّر 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:

Find Encrypted DatabasesSQL
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 Current ConfigurationSQL
-- 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 Encrypted DatabaseSQL
BACKUP DATABASE <DatabaseName>
TO DISK = 'C:\Backups\<DatabaseName>_PreUninstall.bak'
WITH COMPRESSION, CHECKSUM;
GO

تنظيف SQL Server​

قم بإزالة كائنات SQL Server بهذا الترتيب: تعيينات بيانات الاعتماد أولاً، ثم تسجيلات الدخول، ثم بيانات الاعتماد، ثم المفتاح غير المتماثل، وأخيراً الموفّر. لا يمكن حذف الموفّر ما دام هناك مفتاح أو بيانات اعتماد لا يزال يشير إليه.

تحذير

إذا كانت أي قاعدة بيانات لا تزال مشفّرة، فقم بفك تشفيرها أولاً (راجع فك التشفير قبل إلغاء التثبيت). إن حذف المفتاح الرئيسي أو الموفّر بينما تكون قاعدة البيانات مشفّرة يجعل تلك القاعدة غير قابلة للاسترداد.

1

Remove Credential Mappings

قم بإزالة بيانات الاعتماد من كل تسجيل دخول مُعيَّنة إليه:

List and Drop Credential MappingsSQL
-- 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;
GO
2

Drop the Key Login

Drop Login Backed by the Asymmetric KeySQL
DROP LOGIN TDE_Master_Login;
GO
3

Drop the Credential

Drop CredentialSQL
DROP CREDENTIAL DkeEkmCredential;
GO
نصيحة

إذا فشل حذف بيانات الاعتماد، فتأكد من أنه تمت إزالة كل تعيين تسجيل دخول من الخطوة 1 أولاً.

4

Drop the Asymmetric Key

Drop Asymmetric KeySQL
USE master;
DROP ASYMMETRIC KEY TDE_Master;
GO
تنبيه

يؤدي هذا إلى إزالة مرجع SQL Server إلى المفتاح فقط. يبقى المفتاح نفسه في DuoKey ويمكن إعادة فتحه لاحقاً باستخدام OPEN_EXISTING.

5

Drop the Cryptographic Provider

Drop ProviderSQL
DROP CRYPTOGRAPHIC PROVIDER DkeEkm;
GO
تنبيه

لا يمكنك حذف موفّر التشفير ما دام هناك مفتاح غير متماثل أو بيانات اعتماد لا يزال يشير إليه. أكمِل الخطوات من 1 إلى 4 أولاً.

إزالة ملفات الموفّر​

بعد اختفاء كائنات SQL، قم بإزالة الملفات المنشورة من المضيف.

1

Stop SQL Server (if needed)

يتم تحميل مكتبة الموفّر بواسطة SQL Server. إذا كان الملف مقفلاً، فأوقف الخدمة قبل حذفه.

Stop the SQL Server ServicePOWERSHELL
Stop-Service MSSQLSERVER
2

Delete the Provider Library

Remove the Provider FolderPOWERSHELL
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 -Force
3

Remove the Configuration and Runtime Files

احذف مجلد ProgramData الذي يحتوي على config.toml وkeystore.json وdke-ekm.log.

Remove the ProgramData FolderPOWERSHELL
Remove-Item "C:\ProgramData\DKE\EKM" -Recurse -Force
تنبيه

هل ستُبقي قواعد البيانات مشفّرة؟ لا تحذف keystore.json. يحتاجه الموفّر لإعادة فتح قواعد البيانات المحمية بواسطة TDE بعد إعادة التشغيل.

4

Restart SQL Server

Start the SQL Server ServicePOWERSHELL
Start-Service MSSQLSERVER

التحقق بعد إلغاء التثبيت​

التحقق من إزالة الملفات​

الملفات المطلوب التحقق من إزالتها

dke_ekm_provider.dllC:\Program Files\DKE\EKM
config.tomlC:\ProgramData\DKE\EKM
keystore.jsonC:\ProgramData\DKE\EKM
dke-ekm.logC:\ProgramData\DKE\EKM
Optional registry key

إذا أُنشئ مفتاح السجل الاختياري HKLM\SOFTWARE\DKE\EKM لأجل الإعدادات المتقدمة، فيمكنك إزالته أيضاً. لا يُنشئ التثبيت القياسي أي إدخالات في السجل.

التحقق من حالة SQL Server​

Verify Provider RemovedSQL
-- 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 and DecryptSQL
-- 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

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

إلغاء التثبيت الطارئ​

تحذير

قد يترك إلغاء التثبيت الطارئ قواعد البيانات المشفّرة غير قابلة للوصول. استخدمه فقط في الحالات الحرجة مع وجود نسخ احتياطية مناسبة.

Quick Force Removal of SQL ObjectsSQL
-- Force remove references, then the provider
USE master;
DROP ASYMMETRIC KEY TDE_Master;
GO

DROP CREDENTIAL DkeEkmCredential;
GO

DROP CRYPTOGRAPHIC PROVIDER DkeEkm;
GO

ثم قم بإزالة ملفات الموفّر كما هو موضّح أعلاه.

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