Configurar chaves gerenciadas pelo cliente para criptografar dados inativos do Barramento de Serviço do Azure

O Barramento de Serviço do Azure Premium fornece criptografia de dados inativos com o SSE do Azure (Criptografia do Serviço de Armazenamento do Azure). O Barramento de Serviço Premium usa o Armazenamento do Azure para armazenar os dados. Todos os dados armazenados com o Armazenamento do Azure são criptografados usando chaves gerenciadas pela Microsoft. Se você usar a própria chave (também conhecida como BYOK [Bring Your Own Key] ou a chave gerenciada pelo cliente), os dados ainda serão criptografados usando a chave gerenciada pela Microsoft, mas, além disso, a chave gerenciada pela Microsoft será criptografada usando a chave gerenciada pelo cliente. Esse recurso permite que você crie, gire, desabilite e revogue o acesso a chaves gerenciadas pelo cliente que são usadas para criptografar chaves gerenciadas pela Microsoft. Habilitar o recurso BYOK é um processo de configuração única no seu namespace.

Há algumas ressalvas ao uso da chave gerenciada pelo cliente para criptografia do lado do serviço.

  • Esse recurso é compatível com a camada Premium do Barramento de Serviço do Azure. Ele não pode ser habilitado para namespaces do Barramento de Serviço da camada standard.
  • A criptografia só pode ser habilitada em namespaces novos ou vazios. Se o namespace contiver alguma fila ou tópico, a operação de criptografia falhará.

Você pode usar o Azure Key Vault para gerenciar as suas chaves e auditar o uso da chave. Você pode criar suas próprias chaves e armazená-las em um cofre de chaves ou pode usar as APIs do Azure Key Vault para gerar chaves. Para obter mais informações sobre o Cofre da Chave do Azure, consulte O que é o Cofre da Chave do Azure?

Habilitar chaves gerenciadas pelo cliente (portal do Azure)

Para habilitar chaves gerenciadas pelo cliente no portal do Azure, siga estas etapas:

  1. Navegue até o namespace do Barramento de Serviço Premium.

  2. Na página Configurações do namespace do Barramento de Serviço, selecione Criptografia.

  3. Selecione a Criptografia de chave gerenciada pelo cliente inativa, conforme mostrado na imagem a seguir.

    Enable customer managed key

Configurar um cofre de chaves com chaves

Depois de habilitar as chaves gerenciadas pelo cliente, você precisa associar a chave gerenciada pelo cliente ao namespace do Barramento de Serviço do Azure. O Barramento de Serviço dá suporte apenas ao Azure Key Vault. Se você habilitar a opção Criptografia com chave gerenciada pelo cliente na seção anterior, precisará ter a chave importada para o Azure Key Vault. Além disso, as chaves precisam que as opções Exclusão Temporária e Não Limpar estejam configuradas na chave. Essas configurações podem ser definidas usando o PowerShell ou a CLI.

  1. Para criar um cofre de chaves, siga as instruções no Início Rápido do Azure Key Vault. Para obter mais informações sobre como importar as chaves existentes, confira Sobre chaves, segredos e certificados.

    Importante

    O uso de chaves gerenciadas pelo cliente com o Barramento de Serviço do Azure requer que duas propriedades necessárias estejam configuradas no cofre de chaves. Elas são: Exclusão Temporária e Não Limpar. A propriedade exclusão reversível é habilitada por padrão quando você cria um novo cofre de chaves no portal do Azure, enquanto a proteção de limpeza é opcional, portanto, certifique-se de selecioná-la ao criar o Key Vault. Além disso, se você precisar habilitar essas propriedades em um cofre de chaves existente, será necessário usar o PowerShell ou a CLI do Azure.

  2. Para ativar a exclusão temporária e a proteção contra limpeza ao criar um cofre, use o comando 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. Para adicionar a proteção contra limpeza a um cofre existente (que já tem a exclusão temporária habilitada), use o comando az keyvault update.

    az keyvault update --name contoso-SB-BYOK-keyvault --resource-group ContosoRG --enable-purge-protection true
    
  4. Crie chaves seguindo estas etapas:

    1. Para criar uma nova chave, selecione Gerar/Importar do menu Chaves em Configurações.

      Select Generate/Import button

    2. Defina Opções para Gerar e forneça um nome à chave.

      Create a key

    3. Agora você pode selecionar essa chave para associá-la ao namespace do Barramento de Serviço para criptografia na lista suspensa.

      Select key from key vault

      Observação

      Para obter redundância, você pode adicionar até três chaves. Caso uma das chaves tenha expirado ou não esteja acessível, as outras chaves serão usadas para criptografia.

    4. Preencha os detalhes da chave e clique em Selecionar. Isso habilita a criptografia da chave gerenciada pela Microsoft com a sua chave (chave gerenciada pelo cliente).

    Importante

    Se você pretende usar a chave gerenciada pelo cliente juntamente com a recuperação de desastre geográfico, examine esta seção.

    Para habilitar a criptografia da chave gerenciada pela Microsoft com uma chave gerenciada pelo cliente, uma política de acesso é configurada para a identidade gerenciada do Barramento de Serviço no Azure KeyVault especificado. Isso garante o acesso controlado ao Azure KeyVault por meio do namespace do Barramento de Serviço do Azure.

    Devido a isso:

    • Se a recuperação de desastre geográfico já estiver habilitada no namespace do Barramento de Serviço e você desejar habilitar a chave gerenciada pelo cliente, faça o seguinte

      • Interrompa o emparelhamento
      • Configure a política de acesso ao cofre de chaves para a identidade gerenciada dos namespaces primário e secundário.
      • Configure a criptografia no namespace primário.
      • Emparelhe novamente os namespaces primário e secundário.
    • Se você desejar habilitar a função de DR geográfico em um namespace do Barramento de Serviço no qual a chave gerenciada pelo cliente já está configurada, faça o seguinte:

      • Configure a política de acesso ao cofre de chaves para a identidade gerenciada do namespace secundário.
      • Emparelhe os namespaces primários e secundários.
    • Depois de emparelhado, o namespace secundário usará o cofre de chaves configurado para o namespace primário. Se o cofre de chaves para ambos os namespaces for diferente antes do emparelhamento geo-DR, o usuário deverá delegar uma política de acesso ou uma função RBAC para a identidade gerenciada do namespace secundário no cofre de chaves associado ao namespace primário.

Identidades gerenciadas

Há dois tipos de identidades gerenciadas que você pode atribuir a um namespace do Barramento de Serviço.

  • Atribuído pelo sistema: você pode habilitar uma identidade gerenciada diretamente em um namespace do Barramento de Serviço. Quando você habilita uma identidade gerenciada atribuída pelo sistema, uma identidade é criada no Microsoft Entra que está vinculada ao ciclo de vida desse namespace do Barramento de Serviço. Assim, quando o namespace é excluído, o Azure exclui automaticamente a identidade para você. Por design, somente o recurso (namespace) do Azure pode usar essa identidade para solicitar tokens do Microsoft Entra ID.

  • Atribuído pelo usuário: você também pode criar uma identidade gerenciada como um recurso autônomo do Azure, que é chamada identidade atribuída pelo usuário. Você pode criar uma identidade gerenciada atribuída pelo usuário e atribuí-la a um ou mais namespaces do Barramento de Serviço. Ao usar identidades gerenciadas atribuídas pelo usuário, a identidade é gerenciada separadamente dos recursos que a usam. Eles não estão vinculados ao ciclo de vida do namespace. Você pode excluir explicitamente uma identidade atribuída pelo usuário quando não precisar mais dela.

    Para obter mais informações, consulte O que são identidades gerenciadas para recursos do Azure?.

Criptografar usando identidades atribuídas pelo sistema (modelo)

Esta seção mostra como fazer as seguintes tarefas:

  1. Crie um namespace do Barramento de Serviço premium com uma identidade de serviço gerenciada.
  2. Crie um cofre de chaves e permita que a identidade do serviço tenha acesso a ele.
  3. Atualize o namespace do Barramento de Serviço com as informações do cofre de chaves (chave/valor).

Criar um namespace do Barramento de Serviço premium com a identidade de serviço gerenciada

Esta seção mostra como criar um namespace do Barramento de Serviço do Azure com a identidade de serviço gerenciada usando um modelo do Azure Resource Manager e o PowerShell.

  1. Crie um modelo do Azure Resource Manager para criar um namespace de camada premium do Barramento de Serviço com uma identidade de serviço gerenciada. Nomeie o arquivo: 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. Crie um arquivo de parâmetro de modelo chamado CreateServiceBusPremiumNamespaceParams.json.

    Observação

    Substitua os seguintes valores:

    • <ServiceBusNamespaceName> – O nome do namespace do seu Barramento de Serviço
    • <Location> – A localização do namespace do seu Barramento de Serviço
    {
       "$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. Execute o comando do PowerShell a seguir para implantar o modelo para criar um namespace do Barramento de Serviço premium. Em seguida, recupere a ID do namespace do Barramento de Serviço para usá-la mais tarde. Substitua {MyRG} pelo nome do grupo de recursos antes de executar o comando.

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

Permitir que a identidade do namespace do Barramento de Serviço tenha acesso ao cofre de chaves

  1. Execute o comando a seguir para criar um cofre de chaves habilitado para proteção contra limpeza e exclusão temporária.

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

    (OU)

    Execute o comando a seguir para atualizar um cofre de chaves existente. Especifique os valores dos nomes do cofre de chaves e do grupo de recursos antes de executar o comando.

    ($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. Defina a política de acesso do cofre de chaves para que a identidade gerenciada do namespace do Barramento de Serviço possa acessar o valor da chave no cofre de chaves. Use a ID do namespace do Barramento de Serviço obtida na seção anterior.

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

Criptografar dados no namespace do Barramento de Serviço com a chave gerenciada pelo cliente do cofre de chaves

Você concluiu as seguintes etapas até agora:

  1. Criou um namespace premium com uma identidade gerenciada.
  2. Criou um cofre de chaves e permitiu que a identidade gerenciada tivesse acesso ao cofre de chaves.

Nesta etapa, você atualiza o namespace do Barramento de Serviço com informações do cofre de chaves.

  1. Crie um arquivo JSON denominado UpdateServiceBusNamespaceWithEncryption.json com o seguinte conteúdo:

    {
       "$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. Crie um arquivo de parâmetro de modelo: UpdateServiceBusNamespaceWithEncryptionParams.json.

    Observação

    Substitua os seguintes valores:

    • <ServiceBusNamespaceName> – O nome do namespace do seu Barramento de Serviço
    • <Location> – A localização do namespace do seu Barramento de Serviço
    • <KeyVaultName> – O nome do seu cofre de chaves
    • <KeyName> – O nome da chave no cofre de chaves
    {
       "$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. Execute o comando do PowerShell a seguir para implantar o modelo do Resource Manager. Substitua {MyRG} pelo nome do seu grupo de recursos antes de executar o comando.

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

Criptografar usando identidades atribuídas pelo usuário (modelo)

  1. Crie uma identidade atribuída pelo usuário.
  2. Criar um cofre de chaves e conceder acesso à identidade atribuída pelo usuário por meio das políticas de acesso.
  3. Crie um namespace do Barramento de Serviço premium com a identidade do usuário gerenciada e as informações do cofre de chaves.

Criar uma identidade atribuída pelo usuário

Siga as instruções do artigo Criar uma identidade gerenciada atribuída pelo usuário para criar uma identidade atribuída pelo usuário. Você também pode criar uma identidade atribuída pelo usuário usando CLI, PowerShell, modelo do Azure Resource Manager e REST.

Observação

Você pode atribuir até quatro identidades de usuário a um namespace. Essas associações são excluídas quando o namespace é excluído ou quando você passa identity -> type no modelo para None.

Criar um cofre de chaves e conceder acesso à identidade atribuída pelo usuário

  1. Execute o comando a seguir para criar um cofre de chaves habilitado para proteção contra limpeza e exclusão temporária.

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

    (OU)

    Execute o comando a seguir para atualizar um cofre de chaves existente. Especifique os valores dos nomes do cofre de chaves e do grupo de recursos antes de executar o comando.

    ($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. Obter a ID da entidade de serviço para a identidade do usuário usando o comando do PowerShell a seguir. No exemplo, ud1 é a identidade atribuída pelo usuário a ser usada para criptografia.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  3. Conceda à identidade atribuída pelo usuário acesso ao cofre de chaves atribuindo uma política de acesso.

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

    Observação

    Você pode adicionar até três chaves, mas a identidade do usuário usada para criptografia deve ser a mesma para todas as chaves. Atualmente, há suporte apenas para a identidade de criptografia única.

Criar um namespace do Barramento de Serviço premium com a identidade do usuário e as informações do cofre de chaves

Esta seção fornece um exemplo que mostra como realizar as tarefas a seguir usando um modelo do Azure Resource Manager.

  • Atribua uma identidade gerenciada pelo usuário a um namespace do Barramento de Serviço.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Habilite a criptografia no namespace especificando uma chave do cofre de chaves e a identidade gerenciada pelo usuário para acessar a chave.

                    "encryption":{
                       "keySource":"Microsoft.KeyVault",
                       "keyVaultProperties":[
                            {
                                "keyName": "[parameters('keyName')]",
                                "keyVaultUri": "[parameters('keyVaultUri')]",
                                "identity": {
                                    "userAssignedIdentity": "[parameters('identity').userAssignedIdentity]"
                                }
                            }
                       ]
                    }
    
  1. Crie um arquivo JSON denominado CreateServiceBusNamespaceWithUserIdentityAndEncryption.json com o seguinte conteúdo:

    {
       "$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. Crie um arquivo de parâmetro de modelo: 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>"
            }
         }
       }
    }
    

    No arquivo de parâmetro, substitua os espaço reservados por valores apropriados.

    Espaço reservado value
    <ServiceBusNamespaceName> Nome do namespace do Barramento de Serviço.
    <Location> Local onde você deseja que o namespace seja criado.
    <KeyVaultName> Nome do cofre de chaves.
    <KeyName> Nome da chave no cofre de chaves.
    <AZURE SUBSCRIPTION ID> Sua ID da assinatura do Azure.
    <RESOURCE GROUP NAME> Grupo de recursos da identidade gerenciada pelo usuário.
    <USER MANAGED IDENTITY NAME> Nome da identidade gerenciada pelo usuário.
  3. Execute o comando do PowerShell a seguir para implantar o modelo do Resource Manager. Substitua {MyRG} pelo nome do seu grupo de recursos antes de executar o comando.

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

Usar as identidades atribuídas pelo usuário e atribuídas pelo sistema

Um namespace pode ter identidades atribuídas pelo sistema e pelo usuário ao mesmo tempo. Nesse caso, a propriedade type seria SystemAssigned, UserAssigned conforme mostrado no exemplo a seguir.

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

Nesse cenário, você pode escolher a identidade atribuída pelo sistema ou pelo usuário para criptografar os dados inativos.

No modelo do Resource Manager, se você não especificar um atributo identity, a identidade gerenciada pelo sistema será usada. Veja um exemplo de snippet.

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

Confira o exemplo a seguir para usar a identidade gerenciada pelo usuário para a criptografia. Observe que o atributo identity está definido como a identidade gerenciada pelo usuário.

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

Habilitar a criptografia de infraestrutura (dupla) de dados

Se você precisar de um nível mais alto de garantia de que seus dados estão seguros, poderá habilitar a criptografia no nível de infraestrutura, que também é conhecida como Criptografia Dupla.

Quando a criptografia de infraestrutura é habilitada, os dados no Barramento de Serviço do Azure são criptografados duas vezes, uma vez no nível do serviço e outra no nível da infraestrutura, usando dois algoritmos de criptografia diferentes e duas chaves distintas. Portanto, a criptografia de infraestrutura dos dados do Barramento de Serviço do Azure oferece proteção contra um cenário em que pode haver comprometimento de um dos algoritmos ou de uma das chaves de criptografia.

Você pode habilitar a criptografia de infraestrutura atualizando o modelo do Azure Resource Manager com a propriedade requireInfrastructureEncryption no UpdateServiceBusNamespaceWithEncryption.json acima, conforme mostrado abaixo.

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

Girar, revogar e armazenar as chaves de cache

Girar as suas chaves de criptografia

Você pode girar a sua chave no cofre de chaves usando o mecanismo de rotação do Azure Key Vault. As datas de ativação e de validade também podem ser definidas para automatizar a rotação de chaves. O serviço do Barramento de Serviço detecta novas versões da chave e começa a usá-las automaticamente.

Revogar acesso a chaves

Revogar o acesso às chaves de criptografia não limpará os dados do Barramento de Serviço. No entanto, os dados não poderão ser acessados por meio do namespace do Barramento de Serviço. Você pode revogar a chave de criptografia por meio da política de acesso ou excluindo a chave. Saiba mais sobre as políticas de acesso e sobre como proteger o cofre de chaves em Acesso seguro a um cofre de chaves.

Depois que a chave de criptografia é revogada, o serviço do Barramento de Serviço no namespace criptografado se torna inoperável. Se o acesso à chave estiver habilitado ou a chave excluída for restaurada, o serviço do Barramento de Serviço escolherá a chave para que você possa acessar os dados a partir do namespace do Barramento de Serviço criptografado.

Cache de chaves

A instância do Barramento de Serviço pesquisa as chaves de criptografia listadas a cada cinco minutos. Ela as armazena em cache e as usa até a próxima sondagem, que ocorre após cinco minutos. Desde que pelo menos uma chave esteja disponível, as filas e os tópicos estarão acessíveis. Se todas as chaves listados estiverem inacessíveis durante a sondagem, todas as filas e tópicos ficarão indisponíveis.

Aqui estão mais detalhes:

  • A cada cinco minutos, o serviço do Barramento de Serviço pesquisa todas as chaves gerenciadas pelo cliente listadas no registro do namespace:
    • Se uma chave tiver sido girada, o registro será atualizado com a nova chave.
    • Se uma chave tiver sido revogada, a chave será removida do registro.
    • Se todas as chaves tiverem sido revogadas, o status de criptografia do namespace será definido como Revogado. Os dados não podem ser acessados por meio do namespace do Barramento de Serviço.

Considerações ao usar a recuperação de desastre geográfico

Recuperação de desastre geográfico – criptografia com identidades atribuídas pelo sistema

Para habilitar a criptografia da chave gerenciada pela Microsoft com uma chave gerenciada pelo cliente, uma política de acesso é configurada para a identidade gerenciada atribuída pelo sistema no Azure KeyVault especificado. Essa etapa garante o acesso controlado ao Azure KeyVault por meio do namespace do Barramento de Serviço do Azure. Portanto, você precisa seguir estas etapas:

  • Se a recuperação de desastre geográfico já estiver habilitada no namespace do Barramento de Serviço e você desejar habilitar a chave gerenciada pelo cliente, faça o seguinte
    • Interrompa o emparelhamento.
    • Configure a política de acesso ao cofre de chaves para a identidade gerenciada atribuída pelo sistema dos namespaces primário e secundário.
    • Configure a criptografia no namespace primário.
    • Emparelhe novamente os namespaces primário e secundário.
  • Se você desejar habilitar a função de DR geográfico em um namespace do Barramento de Serviço no qual a chave gerenciada pelo cliente já está configurada, siga estas etapas:
    • Configure a política de acesso ao cofre de chaves para a identidade gerenciada do namespace secundário.
    • Emparelhe os namespaces primários e secundários.

Recuperação de desastre geográfico – criptografia com identidades atribuídas pelo usuário

Aqui estão algumas recomendações:

  1. Crie uma identidade gerenciada e atribua as permissões do Key Vault à sua identidade gerenciada.
  2. Adicione a identidade como uma identidade atribuída pelo usuário e habilite a criptografia com a identidade em ambos os namespaces.
  3. Emparelhar namespaces juntos

Condições para habilitar a DR Geográfico e a Criptografia com Identidades Atribuídas pelo Usuário:

  1. O namespace secundário já deve ter a criptografia habilitada com uma identidade atribuída pelo usuário para ser emparelhado com um namespace primário que tenha criptografia habilitada.
  2. Não é possível habilitar a criptografia em um primário já emparelhado, mesmo que o secundário tenha uma identidade atribuída pelo usuário associada ao namespace.

Solucionar problemas

Sintoma

Você recebe uma mensagem de erro informando que o namespace do Barramento de Serviço está desabilitado porque a chave de criptografia não é mais válida.

Causa

Você pode estar usando o resource_id ou version, que vincula a uma versão específica da chave, que pode ter expirado. Se uma versão específica for fornecida, o Barramento de Serviço usará essa versão da chave, mesmo que haja rotação da chave.

Resolução

Use resource__versionless_id ou versionless_id em vez de usar resource_id ouversion.

Próximas etapas

Veja os artigos a seguir: