قم بترحيل شهادة من قاعدة بيانات TDE المحمية إلى Azure SQL Managed Instance

ينطبق على: مثيل Azure SQL المُدار

عندما تقوم بترحيل قاعدة بيانات محمية بواسطة⁧⁩ تشفير البيانات الشفافة (TDE)⁧⁩ إلى Azure SQL المُدار باستخدام خيار الاستعادة الأصلي، يجب ترحيل الشهادة المقابلة من مثيل SQL Server قبل استعادة قاعدة البيانات. ترشدك هذه المقالة خلال عملية الترحيل اليدوي للشهادة إلى Azure SQL Managed Instance:

  • قم بتصدير الشهادة إلى ملف تبادل المعلومات الشخصية
  • استخرج الشهادة من ملف إلى سلسلة base-64
  • قم بتحميله باستخدام PowerShell cmdlet

للحصول على خيار بديل باستخدام خدمة مُدارة بالكامل للترحيل السلس لكل من قاعدة البيانات المحمية بـ TDE والشهادة المقابلة، راجع⁧⁩ كيفية ترحيل قاعدة البيانات المحلية الخاصة بك إلى Azure SQL Managed Instance باستخدام Azure Database Migration Service⁧⁩.

هام

يتم استخدام الشهادة التي تم ترحيلها لاستعادة قاعدة البيانات المحمية بـ TDE فقط. بعد وقت قصير من الانتهاء من الاستعادة، يتم استبدال الشهادة التي تم ترحيلها بواقي مختلف؛ إما شهادة مُدارة بواسطة الخدمة، أو مفتاح غير متماثل من خزنة المفاتيح، اعتمادًا على نوع TDE الذي قمت بتعيينه على المثيل.

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

لإكمال الخطوات الواردة في هذه المقالة، تحتاج إلى المتطلبات الأساسية التالية:

  • أداة سطر أوامر⁧⁩ Pvk2Pfx⁧⁩ مثبتة على الخادم الداخلي، أو كمبيوتر آخر مع إمكانية الوصول إلى الشهادة التي تم تصديرها كملف. تعد أداة Pvk2Pfx جزءًا من⁧⁩ Enterprise Windows Driver Kit⁧⁩، وهي بيئة سطر أوامر قائمة بذاتها.
  • ستحتاج إلى تثبيت الإصدار 5.0 أو الإصدار الأحدث من⁧⁩ Windows PowerShell⁧⁩.

تأكد من أن لديك ما يلي:

ملاحظة

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

هام

لا تزال الوحدة النمطية PowerShell Azure Resource Manager مدعومة من قبل Azure SQL Managed Instance؛ ولكن جميع التطوير المستقبلي مخصص للوحدة النمطية Az.Sql. بالنسبة إلى أوامر cmdlets، راجع AzureRM.Sql. الوسائط الخاصة بالأوامر الموجودة في الوحدة النمطية Az، وفي الوحدات النمطية AzureRM متطابقة إلى حد كبير.

قم بتشغيل الأوامر التالية في PowerShell لتثبيت / تحديث الوحدة النمطية:

Install-Module -Name Az.Sql
Update-Module -Name Az.Sql

تصدير شهادة TDE إلى ملف

يمكن تصدير الشهادة مباشرة من مثيل SQL Server المصدر، أو من مخزن الشهادات إذا تم الاحتفاظ بها هناك.

تصدير الشهادة من مثيل SQL Server المصدر

استخدم الخطوات التالية لتصدير الشهادة باستخدام Management Studio، وتحويلها إلى تنسيق .pfx. يتم استخدام الأسماء العامة⁧⁩ TDE_Cert⁧⁩، و⁧⁩ full_path⁧⁩ لأسماء الشهادات والملفات والمسارات من خلال الخطوات. يجب استبدالها بالأسماء الفعلية.

  1. في Management Studio، افتح نافذة استعلام جديدة، واتصل بمثيل SQL Server المصدر.

  2. استخدم البرنامج النصي التالي لسرد قواعد البيانات المحمية بـ TDE، والحصول على اسم الشهادة التي تحمي تشفير قاعدة البيانات المراد ترحيلها:

    USE master
    GO
    SELECT db.name as [database_name], cer.name as [certificate_name]
    FROM sys.dm_database_encryption_keys dek
    LEFT JOIN sys.certificates cer
    ON dek.encryptor_thumbprint = cer.thumbprint
    INNER JOIN sys.databases db
    ON dek.database_id = db.database_id
    WHERE dek.encryption_state = 3
    

    List of TDE certificates

  3. نفِّذ النص التالي لتصدير الشهادة إلى زوج من الملفات (.cer و .pvk)، مع الاحتفاظ بمعلومات المفتاح العام والخاص:

    USE master
    GO
    BACKUP CERTIFICATE TDE_Cert
    TO FILE = 'c:\full_path\TDE_Cert.cer'
    WITH PRIVATE KEY (
      FILE = 'c:\full_path\TDE_Cert.pvk',
      ENCRYPTION BY PASSWORD = '<SomeStrongPassword>'
    )
    

    Backup TDE certificate

  4. استخدم وحدة تحكم PowerShell؛ لنسخ معلومات الشهادة من زوج من الملفات التي تم إنشاؤها حديثًا إلى ملف .pfx، باستخدام أداة Pvk2Pfx:

    .\pvk2pfx -pvk c:/full_path/TDE_Cert.pvk  -pi "<SomeStrongPassword>" -spc c:/full_path/TDE_Cert.cer -pfx c:/full_path/TDE_Cert.pfx
    

تصدير الشهادة من مخزن الشهادات

إذا تم الاحتفاظ بالشهادة في مخزن شهادات الجهاز المحلي لـ Microsoft SQL Server، يمكن تصديرها باستخدام الخطوات التالية:

  1. افتح وحدة تحكم PowerShell، وقم بتنفيذ الأمر التالي لفتح الأداة الإضافية للشهادات في Microsoft Management Console:

    certlm
    
  2. في أداة MMC الإضافية الخاصة بالشهادات، قم بتوسيع مسار الشهادات > الشخصية لرؤية قائمة الشهادات.

  3. انقر بزر الماوس الأيمن فوق الشهادة، وانقر فوق ⁧⁩تصدير⁧⁩.

  4. اتبع المعالج لتصدير الشهادة والمفتاح الخاص إلى تنسيق .

قم بتحميل الشهادة إلى المثيل المدار Azure SQL المُدار باستخدام Azure PowerShell cmdlet

  1. ابدأ بخطوات التحضير في PowerShell:

    # import the module into the PowerShell session
    Import-Module Az
    # connect to Azure with an interactive dialog for sign-in
    Connect-AzAccount
    # list subscriptions available and copy id of the subscription target the managed instance belongs to
    Get-AzSubscription
    # set subscription for the session
    Select-AzSubscription <subscriptionId>
    
  2. بمجرد الانتهاء من جميع خطوات الإعداد، قم بتشغيل الأوامر التالية لتحميل شهادة مشفرة base-64 إلى مثيل الهدف المُدار:

    # If you are using PowerShell 6.0 or higher, run this command:
    $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -AsByteStream
    # If you are using PowerShell 5.x, uncomment and run this command instead of the one above:
    # $fileContentBytes = Get-Content 'C:/full_path/TDE_Cert.pfx' -Encoding Byte
    $base64EncodedCert = [System.Convert]::ToBase64String($fileContentBytes)
    $securePrivateBlob = $base64EncodedCert  | ConvertTo-SecureString -AsPlainText -Force
    $password = "<password>"
    $securePassword = $password | ConvertTo-SecureString -AsPlainText -Force
    Add-AzSqlManagedInstanceTransparentDataEncryptionCertificate -ResourceGroupName "<resourceGroupName>" `
        -ManagedInstanceName "<managedInstanceName>" -PrivateBlob $securePrivateBlob -Password $securePassword
    

الشهادة متاحة الآن للمثيل المُدار المحدد، ويمكن استعادة النسخة الاحتياطية لقاعدة البيانات المحمية من TDE بنجاح.

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

في هذه المقالة، تعلمت كيفية ترحيل شهادة تحمي مفتاح التشفير لقاعدة البيانات باستخدام تشفير البيانات الشفاف، من مثيل Microsoft SQL Server المحلي، أو IaaS إلى مثيل Azure SQL المُدار.

راجع⁧⁩ استعادة نسخة احتياطية لقاعدة البيانات إلى مثيل مُدار من Azure SQL⁧⁩ لمعرفة كيفية استعادة نسخة احتياطية لقاعدة البيانات إلى مثيل Azure SQL المُدار.