Поделиться через


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

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

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

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

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

Если вам нужно только зашифровать определенные свойства сообщений, попробуйте использовать библиотеку, например NServiceBus.

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

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

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

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

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

    Снимок экрана: включение управляемого клиентом ключа.

Примечание.

В настоящее время вы не можете настроить управляемый HSM в Azure Key Vault на портале.

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

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

Создание хранилища ключей или управляемого хранилища ключей HSM

Внимание

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

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

  • Чтобы включить функции обратимого удаления и защиты от очистки при создании хранилища, используйте команду az keyvault create.

    az keyvault create --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --location westus --enable-soft-delete true --enable-purge-protection true
    
  • Чтобы включить защиту от очистки в имеющемся хранилище (в котором уже включена функция обратимого удаления), используйте команду az keyvault update.

    az keyvault update --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --enable-purge-protection true
    

Создание ключей

Чтобы создать ключи, выполните следующее.

  1. Чтобы создать новый ключ, выберите Создать или импортировать из меню Ключи в разделе Параметры.

    Снимок экрана: кнопка

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

    Снимок экрана: имя ключа.

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

    Снимок экрана: выбор ключа из хранилища ключей.

    Примечание.

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

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

    Внимание

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

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

    Из-за этого поведения:

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

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

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

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

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

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

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

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

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

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

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

В этой статье показано, как создать пространство имен служебной шины 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
    

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

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

$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. Получите Идентификатор субъекта-службы для удостоверения пользователя с помощью следующей команды PowerShell. В этом примере ud1 — это удостоверение, назначаемое пользователем, которое будет использоваться для шифрования.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  2. Предоставьте удостоверению, назначаемому пользователем, доступ к хранилищу ключей, назначив политику доступа.

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

    Примечание.

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

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

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

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

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  2. Включите шифрование в пространстве имен, указав ключ из своего хранилища ключей и управляемое пользователем удостоверение для доступа к ключу.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  3. Создайте файл 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]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  4. Создайте файл параметров шаблона: 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> Имя управляемого пользователем удостоверения.
  5. Выполните следующую команду 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. Поэтому необходимо выполнить следующие действия.

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

Шифрование с удостоверениями, назначенными пользователем

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

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

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

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

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

Симптом

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

Причина

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

Разрешение

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

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

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