Настройка ключей, управляемых клиентом, для шифрования неактивных данных служебной шины Azure

Служебная шина Azure уровня "Премиум" обеспечивает шифрование данных в состоянии хранения с помощью шифрования службы хранилища Azure (Azure SSE). Служебная шина уровня "Премиум" использует хранилище Azure для хранения данных. Все данные, хранящиеся в службе хранилища Azure, шифруются с помощью ключей, управляемых корпорацией Майкрософт. Если вы используете собственный ключ (также называется "Принести собственный ключ" (BYOK) или управляемый клиентом ключ), данные по-прежнему шифруются с помощью управляемого корпорацией Майкрософт ключа, но в дополнение к ключу, управляемому корпорацией Майкрософт, шифруются с помощью ключа, управляемого клиентом. Эта возможность позволяет создавать, менять, отключать и отменять доступ к управляемым клиентом ключам, которые используются для шифрования ключей, управляемых корпорацией Майкрософт. Включение возможности BYOK — это однократный процесс настройки в вашем пространстве имен.

Существует ряд предостережений в отношении управляемого клиентом ключа при шифровании на стороне службы.

  • Эта функция поддерживается на уровне "Премиум" служебной шины Azure. Его нельзя включить для пространств имен уровня "Стандартный" служебная шина.
  • Шифрование можно включить только для новых или пустых пространств имен. Если пространство имен содержит любые очереди или разделы, операция шифрования завершается ошибкой.

Для управления ключами и аудита использования ключа можно использовать Azure Key Vault. Можно либо создать собственные ключи и хранить их в хранилище ключей, либо использовать API-интерфейсы Azure Key Vault для их генерации. Дополнительные сведения об Azure Key Vault см. в статье Что такое Azure Key Vault?

Включение ключей, управляемых клиентами (портал Azure)

Чтобы включить управляемый клиентом ключ на портале Azure, выполните следующие действия.

  1. Перейдите к пространству имен служебной шины уровня "Премиум".

  2. На странице Параметры пространства имен служебной шины выберите Шифрование.

  3. Выберите Шифрование неактивных ключей, управляемых клиентом, как показано на следующем рисунке.

    Enable customer managed key

Настройка хранилища ключей, содержащего ключи

После включения ключей, управляемых клиентом, их необходимо связать с пространством имен служебной шины Azure. Служебная шина поддерживает только Azure Key Vault. Если включить Шифрование с помощью ключа, управляемого клиентом в предыдущем разделе, понадобится ключ, импортированный в Azure Key Vault. Кроме того, для ключей должны быть настроены параметры Обратимое удаление и Не очищать. Эти параметры можно настроить с помощью PowerShell или CLI.

  1. Чтобы создать новое хранилище ключей, следуйте инструкциям из краткого руководства по Azure Key Vault. Дополнительные сведения об импорте имеющихся ключей см. в статье Общие сведения о ключах, секретах и сертификатах Azure Key Vault.

    Важно!

    Для использования управляемых клиентом ключей при использовании служебной шины Azure необходимо, чтобы в хранилище ключей было настроено два обязательных свойства. Этими свойствами являются Обратимое удаление и Не очищать. Свойство обратимого удаления включается по умолчанию при создании нового хранилища ключей на портале 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. Чтобы создать новый ключ, выберите Создать или импортировать из меню Ключи в разделе Параметры.

      Select Generate/Import button

    2. Задайте Параметры, чтобы Создать и присвоить имя для ключа.

      Create a key

    3. Теперь можно выбрать этот ключ из раскрывающегося списка, чтобы связать его с пространством имен служебной шины для шифрования.

      Select key from key vault

      Примечание.

      Для обеспечения избыточности можно добавить до 3 ключей. Если срок действия одного из ключей истек или ключ недоступен, для шифрования будут использоваться другие ключи.

    4. Введите сведения о ключе и нажмите кнопку Выбрать. Это позволяет шифрование управляемого корпорацией Майкрософт ключа с помощью ключа (управляемого клиентом ключа).

    Важно!

    Если требуется использовать управляемый клиентом ключ вместе с аварийным восстановлением с учетом географического расположения, ознакомьтесь с этой статьей.

    Чтобы включить шифрование ключа, управляемого Майкрософт, с помощью ключа, управляемого клиентом, для управляемого удостоверения служебной шины в указанном хранилище ключей Azure настроена политика доступа. Это обеспечивает контролируемый доступ к Azure KeyVault из пространства имен служебной шины Azure.

    Вследствие этого происходит следующее.

    • Если для пространства имен служебной шины уже включено аварийное восстановление с учетом географического расположения и требуется включить управляемый клиентом ключ, то выполните следующее.

      • Разрыв связывания
      • Настройте политику доступа для управляемого удостоверения как для основного, так и для второстепенного пространства имен в хранилище ключей.
      • Настройте шифрование для основного пространства имен.
      • Повторно свяжите основное и второстепенное пространства имен.
    • Если требуется включить аварийное восстановление с учетом географического расположения в пространстве имен служебной шины, где уже настроен управляемый клиентом ключ, то выполните следующее.

      • Настройте политику доступа для управляемого удостоверения для второстепенного пространства имен хранилища ключей.
      • Свяжите основное и второстепенное пространства имен.
    • После связывания дополнительное пространство имен будет использовать хранилище ключей, настроенное для основного пространства имен. Если хранилище ключей для обоих пространств имен отличается до связывания геодругов, пользователь должен делегировать политику доступа или роль RBAC для управляемого удостоверения дополнительного пространства имен в хранилище ключей, связанном с основным пространством имен.

Управляемые удостоверения

Существует два типа управляемых удостоверений, которые можно назначить пространству имен служебной шины.

  • Назначенные системой: вы можете включить управляемое удостоверение непосредственно в пространстве имен служебной шины. При включении управляемого удостоверения, назначаемого системой, удостоверение создается в Microsoft Entra, привязанном к жизненному циклу этого пространства имен служебная шина. Поэтому, когда пространство имен удаляется, Azure автоматически удаляет удостоверение за вас. С помощью этого удостоверения можно использовать только ресурс Azure (пространство имен) для запроса маркеров из идентификатора Microsoft Entra.

  • Назначенные пользователем: вы также можете создать управляемое удостоверение в качестве автономного ресурса Azure, которое называется удостоверением, назначенным пользователем. Вы можете создать назначенное пользователем управляемое удостоверение и назначить его одному или нескольким пространствам имен служебной шины. При использовании управляемых удостоверений, назначаемых пользователем, удостоверение управляется отдельно от ресурсов, используемых им. Они не привязаны к жизненному циклу пространства имен. Вы можете явно удалить удостоверение, назначаемое пользователем, когда оно вам больше не нужно.

    См. сведения об управляемых удостоверениях для ресурсов Azure.

Шифрование с использованием присвоенных системой идентификаторов (шаблон)

В этом разделе показано, как выполнять следующие задачи:

  1. Создайте пространство имен служебной шины уровня "Премиум" с управляемым удостоверением службы.
  2. Создайте хранилище ключей и предоставьте удостоверению службы доступ к нему.
  3. Обновите пространство имен служебной шины, указав сведения о хранилище ключей (ключ/значение).

Создание пространства имен служебной шины класса "Премиум" с управляемым удостоверением службы

В этой статье показано, как создать пространство имен служебной шины Azure с управляемым удостоверением службы с помощью шаблона Azure Resource Manager и PowerShell.

  1. Создайте шаблон Azure Resource Manager, чтобы создать пространство имен служебной шины с управляемым удостоверением службы. Задайте имя файла: 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. Создайте файл параметров шаблона с именем: CreateServiceBusPremiumNamespaceParams.json.

    Примечание.

    Измените следующие значения:

    • <ServiceBusNamespaceName> – имя пространства имен служебной шины
    • <Location> – расположение пространства имен служебной шины
    {
       "$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, чтобы развернуть шаблон и создать пространство имен служебной шины класса "Премиум". Затем получите идентификатор пространства имен служебной шины, чтобы использовать его позже. Замените {MyRG} именем группы ресурсов перед выполнением команды.

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

Предоставление доступа к хранилищу ключей с использованием удостоверения пространства имен служебной шины

  1. Выполните следующую команду, чтобы создать хранилище ключей с включенным параметром Защита от очистки и Обратимое удаление.

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

    (ИЛИ)

    Выполните следующую команду, чтобы обновить имеющееся хранилище ключей. Перед выполнением команды укажите значения для имен группы ресурсов и хранилища ключей.

    ($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. Задайте политику доступа к хранилищу ключей, чтобы управляемое удостоверение пространства имен служебной шины могло получить доступ к значению ключа в хранилище ключей. Используйте идентификатор пространства имен служебной шины из предыдущего раздела.

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

Шифрование данных в пространстве имен служебной шины с использованием ключа, управляемого клиентом, из хранилища ключей

На данный момент вы выполнили следующие действия:

  1. Создано пространство имен уровня "Премиум" с управляемым удостоверением.
  2. Создали хранилище ключей и предоставили управляемому удостоверению доступ к хранилищу ключей.

На этом шаге вы обновите пространство имен служебная шина с информацией о хранилище ключей.

  1. Создайте файл JSON с именем UpdateServiceBusNamespaceWithEncryption.jso и следующим содержимым.

    {
       "$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> – имя пространства имен служебной шины
    • <Location> – расположение пространства имен служебной шины
    • <KeyVaultName> — имя хранилища ключей;
    • <KeyName> – имя ключа в хранилище ключей
    {
       "$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. Создайте пространство имен служебной шины премиум с управляемым идентификатором пользователя и информацией о хранилище ключей.

Создание назначаемого пользователем удостоверения

Следуйте инструкциям из статьи Создание управляемого пользователем удостоверения, чтобы создать удостоверение, назначаемое пользователем. Вы также можете создать удостоверение, назначаемое пользователем, с помощью интерфейса командной строки, PowerShell, шаблона Azure Resource Manager и REST.

Примечание.

Вы можете назначить до 4 идентификаторов пользователей пространству имен. Эти ассоциации удаляются при удалении пространства имен или при передаче identity -> type в шаблоне в None.

Создание хранилища ключей и предоставление доступа удостоверению, назначаемому пользователем

  1. Выполните следующую команду, чтобы создать хранилище ключей с включенным параметром "Защита от очистки" и "Обратимое удаление".

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

    (ИЛИ)

    Выполните следующую команду, чтобы обновить имеющееся хранилище ключей. Перед выполнением команды укажите значения для имен группы ресурсов и хранилища ключей.

    ($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. Предоставьте удостоверению, назначаемому пользователем, доступ к хранилищу ключей, назначив политику доступа.

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

    Примечание.

    Вы можете добавить до 3 ключей, но удостоверение пользователя, используемое для шифрования, должно быть одинаковым для всех ключей. В настоящее время поддерживается только один идентификатор шифрования.

Создайте пространство имен служебной шины премиум-класса с идентификатором пользователя и информацией о хранилище ключей

В этом разделе приведен пример, показывающий, как выполнять следующие задачи с помощью шаблона Azure Resource Manager.

  • Назначьте управляемое пользователем удостоверение пространству имен служебной шины.

                "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 с именем CreateServiceBusNamespaceWithUserIdentityAndEncryption.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. Создайте файл параметров шаблона: CreateServiceBusNamespaceWithUserIdentityAndEncryptionParams.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>"
            }
         }
       }
    }
    

    В файле параметров замените заполнители соответствующими значениями.

    Заполнитель значение
    <ServiceBusNamespaceName> Имя пространства имен служебной шины.
    <Location> Место, где вы хотите создать пространство имен.
    <KeyVaultName> Имя хранилища ключей.
    <KeyName> Имя ключа в хранилище ключей.
    <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>" : {}
    }
}

В этом сценарии вы можете выбрать либо удостоверение, назначаемое системой, либо удостоверение, назначаемое пользователем, для шифрования неактивных данных.

Если в шаблоне диспетчера ресурсов не указан атрибут 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 шифруются дважды (один раз на уровне службы и один раз на уровне инфраструктуры) с использованием двух разных алгоритмов шифрования и двух разных ключей. Шифрование инфраструктуры для данных Служебной шины Azure обеспечивает защиту в сценарии, когда один из алгоритмов шифрования или ключей скомпрометирован.

Вы можете включить шифрование инфраструктуры, обновив шаблон Azure Resource Manager со свойством requireInfrastructureEncryption в указанном выше UpdateServiceBusNamespaceWithEncryption.json, как показано ниже.

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

Поворот, отзыв и кэширование ключей

Смена ключей шифрования

Вы можете сменить ключ в хранилище ключей, используя механизм смены Azure Key Vault. Для автоматизации смены ключей можно также задать даты активации и истечения срока действия. Служба служебная шина обнаруживает новые версии ключей и начинает использовать их автоматически.

Отмена доступа к ключам

Отмена доступа к ключам шифрования не приводит к очистке данных из служебной шины. Однако доступ к данным из пространства имен служебной шины невозможен. Вы можете отозвать ключ шифрования с помощью политики доступа или путем удаления ключа. Узнайте больше о политиках доступа и защите хранилища ключей из статьи о безопасном доступе к хранилищу ключей.

После отзыва ключа шифрования служба служебная шина в зашифрованном пространстве имен становится неработоспособной. Если доступ к ключу включен или удален, служба служебная шина выбирает ключ, чтобы получить доступ к данным из зашифрованного пространства имен служебная шина.

Кэширование ключей

Экземпляр служебной шины проверяет перечисленные ключи шифрования каждые 5 минут. Он кэширует и использует их до следующей поверки, то есть через 5 минут. Пока доступен хотя бы один ключ, доступны очереди и разделы. Если все перечисленные ключи недоступны при опросе, все очереди и разделы становятся недоступными.

Вот дополнительные сведения:

  • Каждые 5 минут служба служебная шина опрашивает все ключи, управляемые клиентом, перечисленные в записи пространства имен:
    • Если ключ был заменен, запись обновляется с использованием нового ключа.
    • Если ключ был отменен, он удаляется из записи.
    • Если все ключи были отменены, состояние шифрования пространства имен определяется как Отменено. К данным нельзя получить доступ из пространства имен служебной шины.

Рекомендации при использовании геоизбыточного аварийного восстановления

Геоаварийное восстановление — шифрование с присвоенными системой идентификаторами

Чтобы включить шифрование ключа, управляемого корпорацией Майкрософт, с ключом, управляемым клиентом, для управляемого удостоверения, назначаемого системой, в указанном хранилище ключей Azure настраивается политика доступа. Этот шаг обеспечивает управляемый доступ к Azure KeyVault из пространства имен Служебная шина Azure. Поэтому необходимо выполнить следующие действия.

  • Если геоизбыточное аварийное восстановление уже включено для пространства имен служебная шина, и вы хотите включить управляемый клиентом ключ, то
    • Разорвите связывание.
    • Настройте политику доступа для управляемого удостоверения, назначаемого системой, как для основного, так и для дополнительного пространств имен хранилища ключей.
    • Настройте шифрование для основного пространства имен.
    • Повторно свяжите основное и второстепенное пространства имен.
  • Если вы хотите включить геообработку в пространстве имен служебная шина, где уже настроен управляемый клиентом ключ, выполните следующие действия.
    • Настройте политику доступа для управляемого удостоверения для второстепенного пространства имен хранилища ключей.
    • Свяжите основное и второстепенное пространства имен.

Геоизбыточное аварийное восстановление — шифрование с удостоверениями, назначаемыми пользователем

Вот несколько рекомендаций.

  1. Создайте управляемое удостоверение и назначьте ему разрешения Key Vault.
  2. Добавьте удостоверение, назначаемое пользователем, и включите шифрование с этим удостоверением в обоих пространствах имен.
  3. Связывание пространств имен

Условия для включения геоизбыточного аварийного восстановления и шифрования с использованием удостоверений, назначаемых пользователем:

  1. Дополнительное пространство имен должно уже включать шифрование с удостоверением, назначенным пользователем, если оно должно быть сопряжено с основным пространством имен с включенным шифрованием.
  2. Невозможно включить шифрование в уже связанном первичном объекте, даже если вторичная имеет удостоверение, назначаемое пользователем, связанное с пространством имен.

Устранение неполадок

Симптом

Вы получите сообщение об ошибке о том, что пространство имен служебная шина отключено, так как ключ шифрования больше недействителен.

Причина

Возможно, вы используете resource_id или versionссылаетесь на определенную версию ключа, которая, возможно, истекла. Если указана определенная версия, служебная шина использует ту версию ключа, даже если ключ поворачивается.

Разрешение

resource__versionless_id Используйте или versionless_id вместо использования resource_id или version.

Дальнейшие действия

См. следующие статьи: