PowerShell وAzure CLI: تمكين تعليم برمجة البيانات الشفاف باستخدام المفتاح المُدار بواسطة العميل من Azure Key Vault

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

تستعرض هذه المقالة كيفية استخدام مفتاح من Azure Key Vault لتعليم برمجة البيانات الشفاف (TDE) في قاعدة بيانات Azure SQL أو Azure Synapse Analytics. لمعرفة المزيد حول TDE مع تكامل Azure Key Vault - أحضر دعم المفتاح الخاص بك (BYOK)، تفضل بزيارة TDE باستخدام المفاتيح المُدارة بواسطة العميل في Azure Key Vault.

ملاحظة

يدعم Azure SQL الآن استخدام مفتاح RSA مخزن في HSM مُدار كحامي TDE. Azure Key Vault Managed HSM عبارة عن خدمة سحابية مُدارة بالكامل، ومتاحة للغاية، ومستأجر فردي، ومتوافقة مع المعايير التي تمكّنك من حماية مفاتيح التشفير لتطبيقات السحابة الخاصة بك، باستخدام FIPS 140-2 Level 3 HSMs المصادق عليها. تعرف على المزيد حول HSMs المُدارة.

ملاحظة

تنطبق هذه المقالة على قاعدة بيانات Azure SQL ومثيل SQL Azure المدار وAzure Synapse Analytics (تجمعات SQL المخصصة ( المعروفة سابقًا بـ SQL DW)). للحصول على وثائق حول تشفير البيانات الشفاف لتجمعات SQL المخصصة داخل مساحات عمل Synapse، راجع تشفير Azure Synapse Analytics.

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

  • يجب أن يكون لديك اشتراك Azure وأن تكون مسؤولاً في هذا الاشتراك.
  • [موصى به ولكنه اختياري] امتلك وحدة أمان للأجهزة (HSM) أو مخزن مفاتيح محلي لإنشاء نسخة محلية من مادة مفتاح حامي TDE.
  • يجب أن يكون Azure PowerShell مثبتاً وقيد التشغيل.
  • قم بإنشاء Azure Key Vault and Key لاستخدامهما مع TDE.
  • يجب أن يحتوي المفتاح على السمات التالية لاستخدامه في TDE:
    • لا تاريخ لانتهاء الصلاحية
    • لا المعاقين
    • قادر على تنفيذ عمليات الحصول على ومفتاح التفاف وإلغاء تغليف المفتاح
  • لاستخدام مفتاح HSM مُدار، اتبع الإرشادات لإنشاء وتفعيل HSM مُدار باستخدام Azure CLI

للحصول على إرشادات تثبيت وحدة Az، راجع تثبيت Azure PowerShell. للحصول على أوامر cmdlets معينة، راجع AzureRM.Sql.

للحصول على تفاصيل حول Key Vault، راجع إرشادات PowerShell من Key Vault وكيفية استخدام Key Vault soft-delete with PowerShell.

هام

لا تزال الوحدة النمطيةPowerShell Azure Resource Manager مدعومة، ولكن جميع التطويرات المستقبلية تكون للوحدة النمطية Az.Sql. ستستمر الوحدة النمطية AzureRM في تلقي إصلاحات الأخطاء حتى ديسمبر 2020 على الأقل. تتطابق وسائط الأوامر في الوحدة النمطية Az وفي الوحدات النمطية AzureRm بشكل كبير. لمعرفة المزيد حول تطابقها، اطّلع على تقديم الوحدة النمطية Azure PowerShell Az الجديدة.

قم بتعيين هوية Azure Active Directory (Microsoft Azure Active Directory) إلى الخادم الخاص بك

إذا كان لديك خادم موجود، فاستخدم ما يلي لإضافة هوية Azure Active Directory (Microsoft Azure Active Directory) إلى الخادم الخاص بك:

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

إذا كنت تقوم بإنشاء خادم، فاستخدم الأمر cmdlet New-AzSqlServer مع العلامة -Identity لإضافة هوية Microsoft Azure Active Directory أثناء إنشاء الخادم:

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

منح أذونات Key Vault إلى الخادم الخاص بك

استخدم الأمر cmdlet Set-AzKeyVaultAccessPolicy لمنح خادمك حق الوصول إلى مخزن المفاتيح قبل استخدام مفتاح منه لـ TDE.

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

لإضافة أذونات إلى الخادم الخاص بك على HSM مُدار، أضف دور RBAC المحلي "مستخدم برمجة خدمة تعليم برمجة HSM المُدار" إلى الخادم. سيمكّن هذا الخادم من إجراء عمليات الحصول على المفتاح ولف المفتاح وإلغاء تغليفه على المفاتيح في HSM المُدار. إرشادات لتوفير وصول الخادم في HSM المُدار

أضف مفتاح Key Vault إلى الخادم وقم بتعيين واقي TDE

ملاحظة

بالنسبة لمفاتيح HSM المُدارة، استخدم إصدار Az.Sql 2.11.1 من PowerShell.

ملاحظة

لا يمكن أن يتجاوز الطول المجمّع لاسم مخزن المفاتيح واسم المفتاح 94 حرفاً.

تلميح

مثال KeyId من Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

مثال KeyId من Managed HSM:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey

# add the key from Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>

# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
   -Type AzureKeyVault -KeyId <KeyVaultKeyId>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

قم بتشغيل TDE

استخدم الأمر cmdlet Set-AzSqlDatabaseTransparentDataEncryption لتشغيل TDE.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

الآن تم تمكين TDE لقاعدة البيانات أو مستودع البيانات بمفتاح تشفير في Key Vault.

تحقق من حالة التعليمات البرمجية ونشاط التعليمات البرمجية

استخدم Get-AzSqlDatabaseTransparentDataEncryption للحصول على حالة التشفير وGet-AzSqlDatabaseTransparentDataEncryptionActivity للتحقق من تقدم التشفير لقاعدة بيانات أو مستودع بيانات.

# get the encryption state
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

# check the encryption progress for a database or data warehouse
Get-AzSqlDatabaseTransparentDataEncryptionActivity -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName>  

أوامر cmdlets مفيدة من PowerShell

  • استخدم الأمر cmdlet Set-AzSqlDatabaseTransparentDataEncryption لإيقاف تشغيل TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • استخدم الأمر cmdlet Get-AzSqlServerKeyVaultKey لإعادة قائمة مفاتيح Key Vault المضافة إلى الخادم.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • استخدم Remove-AzSqlServerKeyVaultKey لإزالة مفتاح Key Vault من الخادم.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

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

تحقق مما يلي في حالة حدوث مشكلة:

  • إذا تعذر العثور على خزينة المفاتيح، فتأكد من الاشتراك الصحيح.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • إذا تعذرت إضافة المفتاح الجديد إلى الخادم، أو تعذر تحديث المفتاح الجديد باعتباره حامي TDE، فتحقق مما يلي:
    • يجب ألا يكون للمفتاح تاريخ انتهاء صلاحية
    • يجب أن يتم تمكين عمليات الحصول على ومفتاح الالتفاف ومفتاح إلغاء التغليف.

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