تمكين تشفير البيانات الشفاف على مثيل SQL المدار الذي تم تمكينه بواسطة Azure Arc (معاينة)

توضح هذه المقالة كيفية تمكين وتعطيل تشفير البيانات الشفاف (TDE) الثابتة على مثيل SQL المدار الذي تم تمكينه بواسطة Azure Arc. في هذه المقالة، يشير مصطلح المثيل المدار إلى نشر مثيل SQL المدار الذي تم تمكينه بواسطة Azure Arc وسيتم تطبيق تمكين/تعطيل TDE على جميع قواعد البيانات التي تعمل على مثيل مدار.

لمزيد من المعلومات حول TDE، يرجى الرجوع إلى تشفير البيانات الشفاف.

يؤدي تشغيل ميزة TDE إلى ما يلي:

  • سيتم الآن تشفير جميع قواعد البيانات الموجودة تلقائيا.
  • سيتم تشفير جميع قواعد البيانات التي تم إنشاؤها حديثا تلقائيا.

إشعار

كميزة معاينة، تخضع التقنية المقدمة في هذه المقالة إلى شروط الاستخدام التكميلية لمعاينات Microsoft Azure.

تتوفر آخر التحديثات في ملاحظات حول الإصدار.

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

قبل المتابعة في هذه المقالة، يجب أن يكون لديك مثيل مدار SQL ممكن بواسطة مورد Azure Arc تم إنشاؤه والاتصال به.

القيود

تنطبق القيود التالية عند تمكين TDE التلقائي:

  • يتم دعم مستوى الأغراض العامة فقط.
  • مجموعات تجاوز الفشل غير مدعومة.

إنشاء مثيل مدار مع تمكين TDE (Azure CLI)

ينشئ المثال التالي مثيل SQL المدار الذي تم تمكينه بواسطة Azure Arc مع نسخة متماثلة واحدة، تمكين TDE:

az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s

تشغيل TDE على المثيل المدار

عند تمكين TDE على SQL Managed Instance الذي يدعم Arc، تقوم خدمة البيانات تلقائيا بالمهام التالية:

  1. إضافة المفتاح الرئيسي لقاعدة البيانات المدارة بواسطة الخدمة في master قاعدة البيانات.
  2. إضافة أداة حماية الشهادة المدارة بواسطة الخدمة.
  3. إضافة مفاتيح تشفير قاعدة البيانات المقترنة (DEK) على جميع قواعد البيانات على المثيل المدار.
  4. تمكين التشفير على جميع قواعد البيانات على المثيل المدار.

يمكنك تعيين مثيل SQL المدار الذي تم تمكينه بواسطة Azure Arc TDE في أحد الوضعين:

  • مدار بواسطة الخدمة
  • يديرها العميل

في الوضع المدار بواسطة الخدمة، يتطلب TDE المثيل المدار لاستخدام مفتاح رئيسي لقاعدة بيانات مدارة بواسطة الخدمة بالإضافة إلى شهادة الخادم المدارة بواسطة الخدمة. يتم إنشاء بيانات الاعتماد هذه تلقائيا عند تمكين TDE المدار بواسطة الخدمة.

في الوضع الذي يديره العميل، يستخدم TDE مفتاحا رئيسيا لقاعدة البيانات المدارة بواسطة الخدمة ويستخدم المفاتيح التي توفرها لشهادة الخادم. لتكوين الوضع المدار من قبل العميل:

  1. إنشاء شهادة.
  2. تخزين الشهادة كبيانات سرية في نفس مساحة اسم Kubernetes مثل المثيل.

Enable

يشرح القسم التالي كيفية تمكين TDE في الوضع المدار بواسطة الخدمة.

لتمكين TDE في الوضع المدار للخدمة، قم بتشغيل الأمر التالي:

az sql mi-arc update --tde-mode ServiceManaged

إيقاف تشغيل TDE على المثيل المدار

عند تعطيل TDE على SQL Managed Instance الذي يدعم Arc، تقوم خدمة البيانات تلقائيا بالمهام التالية:

  1. تعطيل التشفير على جميع قواعد البيانات على المثيل المدار.
  2. إسقاط DEKs المقترنة على جميع قواعد البيانات على المثيل المدار.
  3. إسقاط أداة حماية الشهادة المدارة بواسطة الخدمة.
  4. إسقاط المفتاح الرئيسي لقاعدة البيانات المدارة بواسطة الخدمة في master قاعدة البيانات.

لتعطيل TDE:

az sql mi-arc update --tde-mode Disabled

النسخ الاحتياطي لبيانات اعتماد TDE

عند نسخ نسخة احتياطية من بيانات الاعتماد من المثيل المدار، يتم تخزين بيانات الاعتماد داخل الحاوية. لتخزين بيانات الاعتماد على وحدة تخزين ثابتة، حدد مسار الإدخال في الحاوية. على سبيل المثال، var/opt/mssql/data يقوم المثال التالي بنسخ نسخة احتياطية من شهادة من المثيل المدار:

إشعار

إذا تم تشغيل الأمر kubectl cp من Windows، فقد يفشل الأمر عند استخدام مسارات Windows المطلقة. استخدم المسارات النسبية أو الأوامر المحددة أدناه.

  1. قم بعمل نسخة احتياطية من الشهادة من الحاوية إلى /var/opt/mssql/data.

    USE master;
    GO
    
    BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    

    مثال:

    USE master;
    GO
    
    BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    
  2. انسخ الشهادة من الحاوية إلى نظام الملفات الخاص بك.

    kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>
    

    مثال:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
    

  1. انسخ المفتاح الخاص من الحاوية إلى نظام الملفات الخاص بك.

     kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>
    

    مثال:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
    

  1. احذف الشهادة والمفتاح الخاص من الحاوية.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    مثال:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

استعادة بيانات اعتماد TDE إلى مثيل مدار

على غرار ما ورد أعلاه، لاستعادة بيانات الاعتماد، قم بنسخها في الحاوية وقم بتشغيل T-SQL المقابل بعد ذلك.

إشعار

إذا تم تشغيل الأمر kubectl cp من Windows، فقد يفشل الأمر عند استخدام مسارات Windows المطلقة. استخدم المسارات النسبية أو الأوامر المحددة أدناه. لاستعادة النسخ الاحتياطية لقاعدة البيانات التي تم أخذها قبل تمكين TDE، ستحتاج إلى تعطيل TDE على مثيل SQL المدار واستعادة النسخ الاحتياطي لقاعدة البيانات وتمكين TDE مرة أخرى.

  1. انسخ الشهادة من نظام الملفات الخاص بك إلى الحاوية.

    type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>
    

    مثال:

    type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
    

  1. انسخ المفتاح الخاص من نظام الملفات إلى الحاوية.

    type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>
    

    مثال:

    type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
    
  2. قم بإنشاء الشهادة باستخدام مسارات الملفات من /var/opt/mssql/data.

    USE master;
    GO
    
    CREATE CERTIFICATE <certicate-name>
    FROM FILE = '<certificate-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    

    مثال:

    USE master;
    GO
    
    CREATE CERTIFICATE MyServerCertRestored
    FROM FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    
  3. احذف الشهادة والمفتاح الخاص من الحاوية.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    مثال:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

تشفير البيانات الشفافة