كيفية تكوين المفاتيح التي يديرها العميل لتشفير بيانات Azure Service Bus الثابتة

توفر Azure Service Bus تشفير البيانات الثابتة باستخدام تشفير خدمة تخزين Azure (Azure SSE). تستخدم خدمة Service Bus تخزين Azure لتخزين البيانات. يتم تشفير جميع البيانات المخزنة في Azure Storage باستخدام مفاتيح مُدارة من Microsoft. إذا كنت تستخدم المفتاح الخاص بك (يشار إليه أيضا باسم إحضار المفتاح الخاص بك (BYOK) أو المفتاح المدار من قبل العميل)، فلا تزال البيانات مشفرة باستخدام المفتاح المدار من قبل Microsoft، ولكن بالإضافة إلى ذلك يتم تشفير المفتاح المدار من قبل Microsoft باستخدام المفتاح المدار من قبل العميل. تمكنك هذه الميزة من إنشاء، تدوير، تعطيل، وإبطال الوصول إلى المفاتيح التي يديرها العميل والمستخدمة لتشفير المفاتيح التي تديرها Microsoft. تمكين ميزة BYOK هي عملية إعداد لمرة واحدة على مساحة الاسم الخاصة بك.

هناك بعض التحذيرات إلى مفتاح العميل المُدار لتشفير جانب الخدمة.

  • تُدعم هذه الميزة من خلال مستوى Azure Service Bus. لا يمكن تمكينه لمساحات أسماء ناقل خدمة Microsoft Azure من المستوى القياسي.
  • يمكن تمكين التشفير لمساحات الأسماء الجديدة أو الفارغة فقط. إذا كانت مساحة الاسم تحتوي على أي قوائم انتظار أو مواضيع، فستفشل عملية التشفير.

يمكنك استخدام Azure Key Vault لإدارة المفاتيح الخاصة بك وتدقيق استخدامك للمفاتيح. يمكنك إما إنشاء المفاتيح الخاصة بك وتخزينها في قبو المفاتيح، أو يمكنك استخدام واجهات برمجة تطبيقات Azure Key Vault لإنشاء المفاتيح. لمزيد من المعلومات حول Azure Key Vault، راجع ما هو Azure Key Vault؟

تمكين المفاتيح المُدارة بواسطة العميل (مدخل Microsoft Azure)

لتمكين المفاتيح المُدارة بواسطة العميل في مدخل Microsoft Azure، اتبع هذه الخطوات.

  1. قم بالانتقال إلى مساحة اسم Service Bus.

  2. في صفحة «Settings» لمساحة اسم Service Bus، حدد «»Encryption».

  3. حدد تشفير المفتاح المُدار بواسطة العميل في وضع الراحة كما هو موضح في الصورة التالية.

    Enable customer managed key

قم بإعداد خزنة مفاتيح بالمفاتيح

بعد تمكين المفاتيح المُدارة بواسطة العميل، تحتاج إلى ربط المفتاح المُدار بواسطة العميل بمساحة اسم Service Bus. تدعم Service Bus فقط Azure Key Vault. إذا قمت بتمكين الخيار التشفير باستخدام المفتاح المُدار بواسطة العميل في القسم السابق، فستحتاج إلى استيراد المفتاح إلى Azure Key Vault. أيضًا، يجب أن يتم تكوين المفتاحين Soft Delete و Do Not Purge للمفتاح. يمكن تكوين هذه الإعدادات باستخدام PowerShell أو CLI .

  1. لإنشاء key vault جديد، اتبع «Quickstart» Azure Key Vault. لمزيدٍ من المعلومات حول استيراد المفاتيح الحالية، راجع «About» المفاتيح والأسرار والشهادات .

    هام

    يتطلب استخدام المفاتيح التي يديرها العميل مع Azure Service Bus أن يحتوي مخزن المفاتيح على خاصيتين مطلوبتين تم تكوينهما. وهما: حذف مبدئي وعدم إزالة. يتم تمكين خاصية الحذف المبدئي بشكل افتراضي عند إنشاء مخزن مفاتيح جديد في مدخل Microsoft Azure بينما تكون حماية المسح اختيارية، لذا تأكد من تحديدها عند إنشاء Key Vault. ومع ذلك، إذا كنت بحاجة إلى تمكين هذه الخصائص في مخزن مفاتيح حالي، فيجب عليك استخدام PowerShell أو Azure CLI.

  2. لتشغيل الحماية من الحذف الناعم والمسح عند إنشاء قبو، استخدم الأمر az keyvault create .

    az keyvault create --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --location westus --enable-soft-delete true --enable-purge-protection true
    
  3. لإضافة حماية من المسح إلى مخزن موجود (تم تمكين الحذف الناعم بالفعل)، استخدم الأمر « az keyvault update» .

    az keyvault update --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --enable-purge-protection true
    
  4. أنشئ مفاتيح باتباع الخطوات التالية:

    1. لإنشاء مفتاح جديد، حدد «Generate/Import» من قائمة «Keys» ضمن «Settings».

      Select Generate/Import button

    2. عيّن «Options» على إنشاء وقم بتسمية المفتاح.

      Create a key

    3. يمكنك الآن تحديد هذا المفتاح لربطه بمساحة Service Bus للتشفير من القائمة المنسدلة.

      Select key from key vault

      إشعار

      للتكرار، يمكنك إضافة ما يصل إلى 3 مفاتيح. في حالة انتهاء صلاحية أحد المفاتيح، أو تعذر الوصول إليه، سيتم استخدام المفاتيح الأخرى للتشفير.

    4. املأ التفاصيل الخاصة بالمفتاح وانقر على «Select». وهذا يمكن تشفير المفتاح المدار من قبل Microsoft باستخدام المفتاح الخاص بك (المفتاح المدار من قبل العميل).

    هام

    إذا كنت تبحث عن استخدام مفتاح مُدار من قِبل العميل إلى جانب استرداد البيانات الجغرافية بعد الكوارث، يُرجى مراجعة هذا القسم.

    لتمكين تشفير المفتاح المُدار من قِبل Microsoft باستخدام مفتاح مُدار من قِبل العميل، تم إعداد نهج وصول للهوية المُدارة من خلال Service Bus على Azure KeyVault المحدد. يضمن ذلك الوصول المتحكم فيه إلى Azure KeyVault من مساحة اسم Service Bus.

    ونتيجة لهذا:

    • إذا تم تمكين استرداد الكوارث الجغرافية بالفعل لمساحة اسم Service Bus وكنت تتطلع إلى تمكين المفتاح المُدار بواسطة العميل، فحينئذٍ

      • كسر الاقتران.
      • قم بإعداد سياسة الوصول للهوية المُدارة المعينة من قِبل النظام لكل من مساحات الأسماء الأساسية والثانوية لـ key vault.
      • قم بإعداد التشفير على مساحة الاسم الأساسية.
      • أعد إقران مساحات الأسماء الأساسية والثانوية.
    • إذا كنت تبحث عن تمكين Geo-DR في مساحة اسم Service Bus حيث تم بالفعل إعداد المفتاح المُدار بواسطة العميل، فاتبع الخطوات التالية:

      • قم بإعداد سياسة الوصول للهوية المدارة لمساحة الاسم الثانوية لمخزن المفاتيح.
      • قم بإقران مساحات الأسماء الأساسية والثانوية.
    • بمجرد الاقتران، ستستخدم مساحة الاسم الثانوية مخزن المفاتيح الذي تم تكوينه لمساحة الاسم الأساسية. إذا كان مخزن المفاتيح لكلا مساحات الأسماء مختلفا قبل إقران Geo-DR، يجب على المستخدم تفويض نهج وصول أو دور RBAC للهوية المدارة لمساحة الاسم الثانوية في خزنة المفاتيح المقترنة بمساحة الاسم الأساسية.

الهويات المُدارة

هناك نوعان من الهويات المُدارة التي يمكنك تعيينها إلى مساحة اسم Service Bus

  • تسمح لك بعض خدمات Azure المعينة من قِبل النظام بتمكين هوية مُدارة على Service Bus بشكل مباشر. عند تمكين هوية مدارة معينة من قبل النظام، يتم إنشاء هوية في Microsoft Entra مرتبطة لدورة حياة مساحة اسم ناقل الخدمة هذه. لذلك عندما يتم حذف مساحة الاسم، يقوم Azure تلقائياً بحذف الهوية نيابة عنك. حسب التصميم، يمكن لمورد Azure (مساحة الاسم) فقط استخدام هذه الهوية لطلب الرموز المميزة من معرف Microsoft Entra.

  • معين من قبل المستخدم : يمكنك أيضاً إنشاء هوية مُدارة كمورد Azure مستقل، وهو ما يسمى بالهوية المعينة من قبل المستخدم. يمكنك إنشاء هوية مُدارة يعينها المستخدم وتعيينها إلى واحد أو أكثر من مساحات أسماء Service Bus. عند استخدام الهويات المدارة المعينة من قبل المستخدم، تتم إدارة الهوية بشكل منفصل عن الموارد التي تستخدمها. وهي غير مرتبطة لدورة حياة مساحة الاسم. يمكنك حذف الهوية المعينة من قِبل المستخدم بشكل صريح عندما لم تعد بحاجة إليها.

    لمزيد من المعلومات، راجع ما الهويات المدارة لموارد Azure؟.

التشفير باستخدام الهويات المعينة من قِبل النظام (قالب)

يوضح كيفية القيام بالمهام التالية:

  1. أنشئ مساحة اسم Service Bus المتميزة بهوية خدمة مُدارة.
  2. أنشئ خزنة مفاتيح وامنح هوية الخدمة حق الوصول إلى خزنة المفاتيح.
  3. يمكنك تحديث مساحة اسم ناقل خدمة Azure بمعلومات مخزن المفاتيح (مفتاح/قيمة).

أنشئ مساحة اسم Service Bus المتميزة بهوية خدمة مُدارة.

يوضح لك هذا القسم كيفية إنشاء مساحة اسم Service Bus مع هوية الخدمة المُدارة باستخدام قالب Azure Resource Manager و PowerShell.

  1. أنشئ قالب Azure Resource Manager لإنشاء مساحة اسم لـ Service Bus علي مستوى متميز بهوية خدمة مُدارة. «Name» الملف: CreateServiceBusPremiumNamespace.json:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.ServiceBus/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
             "properties":{
    
             }
          }
       ],
       "outputs":{
          "ServiceBusNamespaceId":{
             "type":"string",
             "value":"[resourceId('Microsoft.ServiceBus/namespaces',parameters('namespaceName'))]"
          }
       }
    }
    
  2. قم بإنشاء ملف معلمة قالب باسم: CreateEventHubClusterAndNamespaceParams.json .

    إشعار

    استبدل القيم التالية:

    • <ServiceBusNamespaceName> - اسم مساحة اسم Service Bus الخاص بك
    • <Location> - موقع مساحة اسم Service Bus الخاص بك
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          }
       }
    }
    
  3. قم بتشغيل أمر PowerShell التالي لنشر القالب لإنشاء مساحة اسم Service Bus. بعد ذلك، استرجع معرّف مساحة اسم Service Bus لاستخدامها لاحقًا. استبدل {MyRG} باسم مجموعة الموارد قبل تشغيل الأمر.

    $outputs = New-AzResourceGroupDeployment -Name CreateServiceBusPremiumNamespace -ResourceGroupName {MyRG} -TemplateFile ./CreateServiceBusPremiumNamespace.json -TemplateParameterFile ./CreateServiceBusPremiumNamespaceParams.json
    
    $ServiceBusNamespaceId = $outputs.Outputs["serviceBusNamespaceId"].value
    

منح الوصول إلى هوية مساحة الاسم Service Bus إلى key vault

  1. قم بتشغيل الأمر التالي لإنشاء key vault مع تمكين الحماية من التطهير و «soft-delete».

    New-AzureRmKeyVault -Name "{keyVaultName}" -ResourceGroupName {RGName}  -Location "{location}" -EnableSoftDelete -EnablePurgeProtection    
    

    (أو)

    قم بتشغيل الأمر التالي لتحديث key vault موجودة . حدد قيمًا لمجموعة الموارد وأسماء خزنة المفاتيح قبل تشغيل الأمر.

    ($updatedKeyVault = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -ResourceGroupName {RGName} -VaultName {keyVaultName}).ResourceId).Properties| Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"-Force | Add-Member -MemberType "NoteProperty" -Name "enablePurgeProtection" -Value "true" -Force
    
  2. عيّن سياسة الوصول إلى Service Bus بحيث يمكن للهوية المُدارة لمساحة الوصول إلى قيمة المفتاح في خزنة المفاتيح. استخدم معرف مساحة Service Bus الأحداث من المقطع السابق.

    $identity = (Get-AzureRmResource -ResourceId $ServiceBusNamespaceId -ExpandProperties).Identity
    
    Set-AzureRmKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $identity.PrincipalId -PermissionsToKeys get,wrapKey,unwrapKey,list
    

تشفير البيانات في مساحة اسم Service Bus باستخدام مفتاح مُدار بواسطة العميل من مخزن المفاتيح

لقد قمت بالخطوات التالية حتى الآن:

  1. تم إنشاء مساحة اسم مميزة بهوية مُدارة.
  2. قم بإنشاء خزنة مفاتيح ومنح الوصول المُدار للهوية إلى خزينة المفاتيح.

في هذه الخطوة، يمكنك تحديث مساحة اسم ناقل خدمة Microsoft Azure بمعلومات مخزن المفاتيح.

  1. إنشاء ملف JSON المسمى بـUpdateServiceBusNamespaceWithEncryption.json المحتوى التالي:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.ServiceBus/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
             "properties":{
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                      {
                         "keyName":"[parameters('keyName')]",
                         "keyVaultUri":"[parameters('keyVaultUri')]"
                      }
                   ]
                }
             }
          }
       ]
    }
    
  2. إنشاء ملف معلمة قالب: UpdateServiceBusNamespaceWithEncryptionParams.json.

    إشعار

    استبدل القيم التالية:

    • <ServiceBusNamespaceName> - اسم مساحة اسم Service Bus الخاص بك
    • <Location> - موقع مساحة اسم Service Bus الخاص بك
    • <KeyVaultName> - اسم مخزن المفاتيح الخاص بك
    • <KeyName> - اسم المفتاح الموجود في key vault
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          }
       }
    }
    
  3. قم بتشغيل أمر PowerShell التالي لنشر قالب Resource Manager. استبدل {MyRG} باسم مجموعة الموارد قبل تشغيل الأمر.

    New-AzResourceGroupDeployment -Name UpdateServiceBusNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./UpdateServiceBusNamespaceWithEncryption.json -TemplateParameterFile ./UpdateServiceBusNamespaceWithEncryptionParams.json
    

التشفير باستخدام الهويات المعينة من قِبل المستخدم (قالب)

  1. قم بإنشاء هوية معينة من قِبل المستخدم .
  2. أنشئ خزنة مفاتيح وامنح الوصول إلى الهوية التي يعينها المستخدم عبر سياسات الوصول.
  3. أنشئ مساحة اسم Service Bus بهوية المستخدم المُدارة ومعلومات key vault.

إنشاء هوية يُعينها المستخدم

اتبع الإرشادات الواردة في مقالة «Create» هوية مُدارة يعينها المستخدم لإنشاء هوية يعينها المستخدم. يمكنك أيضًا إنشاء هوية مخصصة للمستخدم باستخدام CLI و PowerShell و قالب Azure Resource Manager و REST .

إشعار

يمكنك تعيين ما يصل إلى 4 هويات مستخدم لمساحة الاسم. يتم حذف هذه الاقترانات عند حذف مساحة الاسم أو عند تمرير identity -> type في القالب إلى None.

قم بإنشاء key vault ومنح حق الوصول إلى الهوية التي يعينها المستخدم

  1. قم بتشغيل الأمر التالي لإنشاء key vault مع تمكين الحماية من التطهير و «soft-delete».

    New-AzureRmKeyVault -Name "{keyVaultName}" -ResourceGroupName {RGName} -Location "{location}" -EnableSoftDelete -EnablePurgeProtection           
    

    (أو)

    قم بتشغيل الأمر التالي لتحديث key vault موجودة. حدد قيمًا لمجموعة الموارد وأسماء خزنة المفاتيح قبل تشغيل الأمر.

    ($updatedKeyVault = Get-AzureRmResource -ResourceId (Get-AzureRmKeyVault -ResourceGroupName {RGName} -VaultName {keyVaultName}).ResourceId).Properties| Add-Member -MemberType "NoteProperty" -Name "enableSoftDelete" -Value "true"-Force | Add-Member -MemberType "NoteProperty" -Name "enablePurgeProtection" -Value "true" -Force            
    
  2. احصل على المعرف الأساسي للخدمة لهوية المستخدم باستخدام أمر PowerShell التالي. في المثال، ud1 هو الهوية المعينة من قِبل المستخدم لاستخدامها في التشفير.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. امنح هوية المستخدم المعينة حق الوصول إلى key vault من خلال تعيين سياسة وصول.

    Set-AzureRmKeyVaultAccessPolicy -VaultName {keyVaultName} -ResourceGroupName {RGName} -ObjectId $servicePrincipal.Id -PermissionsToKeys get,wrapKey,unwrapKey,list    
    

    إشعار

    يمكنك إضافة ما يصل إلى 3 مفاتيح ولكن يجب أن تكون هوية المستخدم المستخدمة للتشفير هي نفسها لجميع المفاتيح. حالياً، يتم دعم هوية تشفير واحدة فقط.

أنشئ مساحة اسم Service Bus بهوية المستخدم المُدارة ومعلومات key vault.

يمنحك هذا القسم مثالاً يوضح لك كيفية القيام بالمهام التالية باستخدام قالب Azure Resource Manager.

  • قم بتعيين هوية يديرها المستخدم إلى مساحة اسم Service Bus.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • قم بتمكين التشفير في مساحة الاسم عن طريق تحديد مفتاح من خزنة المفاتيح والهوية التي يديرها المستخدم للوصول إلى المفتاح.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  1. قم بإنشاء ملف JSON باسم CreateEventHubsNamespaceWithUserIdentityAndEncryption.json بالمحتوى التالي:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Namespace to be created in cluster."
             }
          },
          "location":{
             "type":"string",
             "defaultValue":"[resourceGroup().location]",
             "metadata":{
                "description":"Specifies the Azure location for all resources."
             }
          },
          "keyVaultUri":{
             "type":"string",
             "metadata":{
                "description":"URI of the KeyVault."
             }
          },
          "keyName":{
             "type":"string",
             "metadata":{
                "description":"KeyName."
             }
          },
         "identity": {
            "type": "Object",
            "defaultValue": {
                "userAssignedIdentity": ""
            },
            "metadata": {
                "description": "user-assigned identity."
            }
         }
       },
       "resources":[
          {
             "type":"Microsoft.ServiceBus/namespaces",
             "apiVersion":"2021-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Premium",
                "tier":"Premium",
                "capacity":1
             },
            "identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                    "[parameters('identity').userAssignedIdentity]": {}
                }
            },
             "properties":{
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                        {
                            "keyName": "[parameters('keyName')]",
                            "keyVaultUri": "[parameters('keyVaultUri')]",
                            "identity": {
                                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  2. قم بإنشاء ملف معلمة قالب: CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json .

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<ServiceBusNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          },
          "keyVaultUri":{
             "value":"https://<KeyVaultName>.vault.azure.net"
          },
          "keyName":{
             "value":"<KeyName>"
          },
          "identity": {
            "value": {
                "userAssignedIdentity": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER MANAGED IDENTITY NAME>"
            }
         }
       }
    }
    

    في ملف المعلمة، استبدل العناصر النائبة بالقيم المناسبة.

    Placeholder قيمة
    <ServiceBusNamespaceName> حدد مساحة اسم Service Bus.
    <Location> الموقع حيث تريد إنشاء مساحة الاسم.
    <KeyVaultName> اسم key vault.
    <KeyName> اسم المفتاح في key vault.
    <AZURE SUBSCRIPTION ID> معرّف اشتراك Azure.
    <RESOURCE GROUP NAME> مجموعة الموارد للهوية التي يديرها المستخدم.
    <USER MANAGED IDENTITY NAME> اسم الهوية التي يديرها المستخدم.
  3. قم بتشغيل أمر PowerShell التالي لنشر قالب Resource Manager. استبدل {MyRG} باسم مجموعة الموارد قبل تشغيل الأمر.

    New-AzResourceGroupDeployment -Name CreateServiceBusNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./ CreateServiceBusNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./ CreateServiceBusNamespaceWithUserIdentityAndEncryptionParams.json        
    

استخدم الهويات المخصصة من قِبل المستخدم ومن قِبل النظام

يمكن أن تحتوي مساحة الاسم على كل من الهويات المخصصة من قِبل النظام والمخصصة للمستخدم في نفس الوقت. في هذه الحالة، ستكون الخاصية type هي SystemAssigned، UserAssigned كما هو موضح في المثال التالي.

"identity": {
    "type": "SystemAssigned, UserAssigned",
    "userAssignedIdentities": {
        "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<userIdentity1>" : {}
    }
}

في هذا السيناريو، يمكنك اختيار إما الهوية المعينة من قِبل النظام أو الهوية المعينة من قِبل المستخدم لتشفير البيانات الثابتة.

في قالب Resource Manager، إذا لم تحدد سمة identity، فسيتم استخدام الهوية التي يديرها النظام. هنا قصاصة برمجية كمثال.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

راجع المثال التالي لاستخدام الهوية التي يديرها المستخدم للتشفير. لاحظ أنه تم تعيين السمة identity على الهوية التي يديرها المستخدم.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]",
            "identity": {
                "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
            }
         }
      ]
   }
}

تمكين البنية التحتية (مزدوج) تشفير البيانات

إذا كنت تحتاج إلى مستوى أعلى من التأكيد على أن بياناتك آمنة، يمكنك تمكين تشفير مستوى البنية الأساسية، والذي يعرف أيضا باسم التشفير المزدوج.

عند تمكين تشفير البنية التحتية، يتم تشفير البيانات الموجودة في Azure Service Bus، مرة على مستوى الخدمة ومرة على مستوى البنية التحتية، باستخدام خوارزميتين مختلفتين للتشفير ومفتاحين مختلفين. ومن ثَم، فإن تشفير البنية التحتية لبيانات Azure Service Bus يحمي من سيناريو قد يتم فيه اختراق إحدى خوارزميات التشفير أو المفاتيح.

يمكنك تمكين تشفير البنية الأساسية عن طريق تحديث قالب Azure Resource Manager بخاصية requireInfrastructureEncryption في UpdateServiceBusNamespaceWithEncryption.json أعلاه كما هو موضح أدناه.

"properties":{
   "encryption":{
      "keySource":"Microsoft.KeyVault",    
      "requireInfrastructureEncryption":true,         
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

التدوير والإلغاء والتخزين المؤقت

قم بتدوير مفاتيح التشفير الخاصة بك

يمكنك تدوير مفتاحك في key vault باستخدام آلية تدوير Azure Key Vaults. يمكن أيضاً تعيين تواريخ التنشيط وانتهاء الصلاحية لأتمتة تدوير المفتاح. تكتشف خدمة ناقل خدمة Microsoft Azure الإصدارات الرئيسية الجديدة وتبدأ في استخدامها تلقائيا.

إلغاء الوصول إلى المفاتيح

لن يؤدي إبطال الوصول إلى مفاتيح التشفير إلى مسح البيانات من Service Bus. ومع ذلك، لا يمكن الوصول إلى البيانات من مساحة اسم مراكز الأحداث. يمكنك إبطال مفتاح التشفير من خلال سياسة الوصول أو حذف المفتاح. تعرف على المزيد حول سياسات الوصول وتأمين خزينتك الرئيسية من وصول آمن إلى خزنة مفاتيح .

بمجرد إبطال مفتاح التشفير، تصبح خدمة ناقل خدمة Microsoft Azure على مساحة الاسم المشفرة غير قابلة للتشغيل. إذا تم تمكين الوصول إلى المفتاح أو استعادة المفتاح المحذوف، تختار خدمة ناقل خدمة Microsoft Azure المفتاح حتى تتمكن من الوصول إلى البيانات من مساحة اسم ناقل الخدمة المشفرة.

التخزين المؤقت للمفاتيح

يستقصي مثيل Service Bus مفاتيح التشفير المدرجة الخاصة به كل 5 دقائق. وتخزنها مؤقتًا وتستخدمها حتى الاستطلاع التالي، أي بعد 5 دقائق. طالما يتوفر مفتاح واحد على الأقل، يمكن الوصول إلى قوائم الانتظار والمواضيع. إذا تعذر الوصول إلى جميع المفاتيح المدرجة عند الاستقصاءات، تصبح جميع قوائم الانتظار والموضوعات غير متوفرة.

فيما يلي مزيد من التفاصيل:

  • كل 5 دقائق، تقوم خدمة ناقل خدمة Microsoft Azure باستطلاع جميع المفاتيح التي يديرها العميل المدرجة في سجل مساحة الاسم:
    • إذا تم تدوير أحد المفاتيح، يتم تحديث السجل بالمفتاح الجديد.
    • إذا تم إلغاء أحد المفاتيح، فسيتم حذفه من السجل.
    • إذا تم إبطال جميع المفاتيح، يتم تعيين حالة تشفير مساحة الاسم على تم إبطالها . ومع ذلك، لا يمكن الوصول إلى البيانات من مساحة اسم Service Bus.

اعتبارات عند استخدام التعافي من الكوارث الجغرافية

الاسترداد من الكوارث الجغرافية - التشفير باستخدام الهويات المخصصة للنظام

لتمكين تشفير المفتاح المُدار من قِبل Microsoft باستخدام مفتاح مُدار من قِبل العميل، تم إعداد نهج وصول للهوية المُدارة المعينة من قبل النظام على Azure KeyVault المحدد. تضمن هذه الخطوة الوصول المتحكم به إلى Azure KeyVault من مساحة الاسم ناقل خدمة Azure. لذلك، تحتاج إلى اتباع الخطوات التالية:

  • إذا تم تمكين التعافي من الكوارث الجغرافية بالفعل لمساحة اسم ناقل خدمة Microsoft Azure وكنت تبحث عن تمكين المفتاح المدار من قبل العميل، فعندئذ
    • كسر الاقتران.
    • قم بإعداد سياسة الوصول للهوية المُدارة المعينة من قِبل النظام لكل من مساحات الأسماء الأساسية والثانوية لـ key vault
    • قم بإعداد التشفير على مساحة الاسم الأساسية.
    • أعد إقران مساحات الأسماء الأساسية والثانوية.
  • إذا كنت تبحث عن تمكين Geo-DR على مساحة اسم ناقل خدمة Microsoft Azure حيث تم بالفعل إعداد المفتاح المدار بواسطة العميل، فاتبع الخطوات التالية:
    • قم بإعداد سياسة الوصول للهوية المدارة لمساحة الاسم الثانوية لمخزن المفاتيح.
    • قم بإقران مساحات الأسماء الأساسية والثانوية.

الاسترداد من الكوارث الجغرافية - التشفير بهويات مخصصة للمستخدم

فيما يلي بعض التوصيات:

  1. أنشئ هوية مُدارة وعيِّن أذونات Key Vault لهويتك المُدارة.
  2. أضف الهوية على أنها هوية مخصصة للمستخدم، وقم بتمكين التشفير بالهوية على كلا مساحات الأسماء.
  3. قم بإقران مساحات الأسماء معًا

شروط تمكين Geo-DR والتشفير باستخدام الهويات المخصصة للمستخدم:

  1. يجب أن تحتوي مساحة الاسم الثانوية بالفعل على تشفير ممكن بهوية معينة من قبل المستخدم إذا كان سيتم إقرانها بمساحة اسم أساسية تم تمكين تشفيرها.
  2. لا يمكن تمكين التشفير على أساس مقترن بالفعل، حتى إذا كان الثانوي له هوية معينة من قبل المستخدم مقترنة بمساحة الاسم.

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

العرض

تحصل على خطأ يفيد بتعطيل مساحة اسم ناقل خدمة Microsoft Azure لأن مفتاح التشفير لم يعد صالحا.

السبب

قد تستخدم resource_id أو version، الذي يرتبط بإصدار معين من المفتاح، والذي قد تكون انتهت صلاحيته. إذا تم توفير إصدار معين، يستخدم ناقل خدمة Microsoft Azure هذا الإصدار من المفتاح، حتى إذا تم تدوير المفتاح.

نوع الحل

استخدم أو resource__versionless_idversionless_idبدلا من استخدام resource_id أو .version

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

راجع المقالات التالية: