Configurar chaves gerenciadas pelo cliente para criptografar dados inativos dos Hubs de Eventos do Azure

Os Hubs de Eventos do Azure fornecem a criptografia de dados inativos com a SSE do Azure (Criptografia do Serviço de Armazenamento do Microsoft Azure). O serviço de Hubs de Eventos usa o Armazenamento do Microsoft Azure para armazenar os dados. Todos os dados armazenados com o Armazenamento do Microsoft 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.

Importante

  • O recurso BYOK é compatível com as camadas Premium e dedicada dos Hubs de Eventos.
  • A criptografia pode ser habilitada apenas em namespaces novos ou vazios. Se o namespace contiver hubs de eventos, haverá falha na operação de criptografia.

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?

Este artigo mostra como configurar um cofre de chaves com chaves gerenciadas pelo cliente usando o portal do Azure. Para saber como criar um cofre de chaves usando o portal do Azure, confira Início Rápido: Criar um Azure Key Vault usando o portal do Azure.

Habilitar chaves gerenciadas pelo cliente (portal do Azure)

Para habilitar as chaves gerenciadas pelo cliente no portal do Azure, siga estas etapas. Se você estiver usando a camada dedicada, navegue até o cluster Hubs de Eventos Dedicados primeiro.

  1. Selecione o namespace no qual deseja habilitar o BYOK.

  2. Na página Configurações do namespace dos Hubs de Eventos, 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 dos Hubs de Eventos do Azure. Os Hubs de Eventos dão 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 os Hubs de Eventos 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. Essas propriedades são habilitadas por padrão quando você cria um cofre de chaves no portal do Azure. No entanto, 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 ContosoVault --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 ContosoVault --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 dos Hubs de Eventos 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 habilitará a criptografia da chave gerenciada pela Microsoft com a sua chave (chave gerenciada pelo cliente).

Identidades gerenciadas

Há dois tipos de identidades gerenciadas que você pode atribuir a um namespace dos Hubs de Eventos.

  • Atribuído pelo sistema: você pode habilitar uma identidade gerenciada diretamente em um namespace dos Hubs de Eventos. Quando você habilita uma identidade gerenciada atribuída pelo sistema, é criada uma identidade no Microsoft Entra que está vinculada ao ciclo de vida desse namespace dos Hubs de Eventos. 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ídas pelo usuário: você também pode criar uma identidade gerenciada como um recurso autônomo do Azure, que é chamada identidade atribuída do usuário. Você pode criar uma identidade gerenciada atribuída pelo usuário e atribuí-la a um ou mais namespaces dos Hubs de Eventos. No caso de 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 realizar as tarefas a seguir usando os modelos do Azure Resource Manager.

  1. Crie um namespace dos Hubs de Eventos 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 dos Hubs de Eventos com as informações do cofre de chaves (chave/valor).

Crie um cluster dos Hubs de Eventos e um namespace com a identidade de serviço gerenciada

Esta seção mostra como criar um namespace dos Hubs de Eventos 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 dos Hubs de Eventos com uma identidade de serviço gerenciada. Nomeie o arquivo: CreateEventHubClusterAndNamespace.json:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "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."
             }
          }
       },
       "resources":[
          {
             "type":"Microsoft.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             },
             "dependsOn":[
                "[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]"
             ]
          }
       ],
       "outputs":{
          "EventHubNamespaceId":{
             "type":"string",
             "value":"[resourceId('Microsoft.EventHub/namespaces',parameters('namespaceName'))]"
          }
       }
    }
    
  2. Crie um arquivo de parâmetro de modelo chamado: CreateEventHubClusterAndNamespaceParams.json.

    Observação

    Substitua os seguintes valores:

    • <EventHubsClusterName> –⁠ Nome do seu cluster dos Hubs de Eventos
    • <EventHubsNamespaceName> – Nome do seu namespace dos Hubs de Eventos
    • <Location> – Local do seu namespace dos Hubs de Eventos
    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "location":{
             "value":"<Location>"
          }
       }
    }
    
    
  3. Execute o comando do PowerShell a seguir para implantar o modelo para criar um namespace dos Hubs de Eventos. Em seguida, recupere a ID do namespace dos Hubs de Eventos para usá-la mais tarde. Substitua {MyRG} pelo nome do grupo de recursos antes de executar o comando.

    $outputs = New-AzResourceGroupDeployment -Name CreateEventHubClusterAndNamespace -ResourceGroupName {MyRG} -TemplateFile ./CreateEventHubClusterAndNamespace.json -TemplateParameterFile ./CreateEventHubClusterAndNamespaceParams.json
    
    $EventHubNamespaceId = $outputs.Outputs["eventHubNamespaceId"].value
    

Conceder acesso de identidade ao namespace dos Hubs de Eventos 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 dos Hubs de Eventos possa acessar o valor da chave no cofre de chaves. Use a ID do namespace dos Hubs de Eventos obtida na seção anterior.

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

Criptografar dados no namespace dos Hubs de Eventos 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ê atualizará o namespace dos Hubs de Eventos com informações do cofre de chaves.

  1. Crie um arquivo JSON chamado CreateEventHubClusterAndNamespace.json com o seguinte conteúdo:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "clusterName":{
             "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "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.EventHub/namespaces",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "identity":{
                "type":"SystemAssigned"
             },
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "capacity":1
             },
             "properties":{
                "isAutoInflateEnabled":false,
                "maximumThroughputUnits":0,
                "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
                "encryption":{
                   "keySource":"Microsoft.KeyVault",
                   "keyVaultProperties":[
                      {
                         "keyName":"[parameters('keyName')]",
                         "keyVaultUri":"[parameters('keyVaultUri')]"
                      }
                   ]
                }
             }
          }
       ]
    }
    
  2. Crie um arquivo de parâmetro de modelo: UpdateEventHubClusterAndNamespaceParams.json.

    Observação

    Substitua os seguintes valores:

    • <EventHubsClusterName> –⁠ Nome do seu cluster dos Hubs de Eventos.
    • <EventHubsNamespaceName> – Nome do seu namespace dos Hubs de Eventos
    • <Location> – Local do seu namespace dos Hubs de Eventos
    • <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":{
          "clusterName":{
             "value":"<EventHubsClusterName>"
          },
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "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 UpdateEventHubNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./UpdateEventHubClusterAndNamespace.json -TemplateParameterFile ./UpdateEventHubClusterAndNamespaceParams.json 
    

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

  1. Crie uma identidade atribuída pelo usuário.
  2. Crie um cofre de chaves e conceda acesso à identidade atribuída pelo usuário por meio das políticas de acesso.
  3. Crie um namespace dos Hubs de Eventos 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 dos Hubs de Eventos 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 dos Hubs de Eventos.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  • Habilita 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 CreateEventHubsNamespaceWithUserIdentityAndEncryption.json com o seguinte conteúdo:

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
        "clusterName":{
            "type":"string",
             "metadata":{
                "description":"Name for the Event Hub cluster."
             }
          },
          "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.EventHub/clusters",
             "apiVersion":"2018-01-01-preview",
             "name":"[parameters('clusterName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Dedicated",
                "capacity":1
             }
          },
          {
             "type":"Microsoft.EventHub/namespaces",
             "apiVersion":"2021-01-01-preview",
             "name":"[parameters('namespaceName')]",
             "location":"[parameters('location')]",
             "sku":{
                "name":"Standard",
                "tier":"Standard",
                "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: CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json.

    {
       "$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
       "contentVersion":"1.0.0.0",
       "parameters":{
          "namespaceName":{
             "value":"<EventHubsNamespaceName>"
          },
          "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
    <EventHubsNamespaceName> Nome do namespace dos Hubs de Eventos.
    <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 CreateEventHubsNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.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 criptografia de infraestrutura (ou 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 da infraestrutura, que também é conhecida como Criptografia Dupla.

Quando a criptografia de infraestrutura é habilitada, a conta do namespace dos Hubs de Eventos é criptografada 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 de dados dos Hubs de Eventos 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 CreateEventHubClusterAndNamespace.json acima, conforme mostrado abaixo.

"properties":{
   "isAutoInflateEnabled":false,
   "maximumThroughputUnits":0,
   "clusterArmId":"[resourceId('Microsoft.EventHub/clusters', parameters('clusterName'))]",
   "encryption":{
      "keySource":"Microsoft.KeyVault",
      "requireInfrastructureEncryption":true,
      "keyVaultProperties":[
         {
            "keyName":"[parameters('keyName')]",
            "keyVaultUri":"[parameters('keyVaultUri')]"
         }
      ]
   }
}

Girar, revogar e armazenar chaves de criptografia em 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 dos Hubs de Eventos detectará novas versões da chave e começará a usá-las automaticamente.

Revogar acesso a chaves

Revogar o acesso às chaves de criptografia não limpará os dados dos Hubs de Eventos. No entanto, os dados não poderão ser acessados por meio do namespace dos Hubs de Eventos. 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 for revogada, o serviço dos Hubs de Eventos no namespace criptografado se tornará inoperável. Se o acesso à chave estiver habilitado ou a chave excluída for restaurada, o serviço dos Hubs de Eventos escolherá a chave para que você possa acessar os dados do namespace dos Hubs de Eventos criptografado.

Cache de chaves

A instância dos Hubs de Eventos (hub de eventos) 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, o hub de eventos estará acessível. Se todas as chaves listadas estiverem inacessíveis durante a sondagem, todos os hubs de eventos ficarão indisponíveis.

Aqui estão mais detalhes:

  • A cada cinco minutos, o serviço dos Hubs de Eventos 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 poderão ser acessados por meio do namespace dos Hubs de Eventos.

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

Importante

Para habilitar o Geo-DR em um namespace que está usando criptografia BYOK, o namespace secundário para emparelhamento deve ter uma identidade gerenciada atribuída ao sistema ou ao usuário habilitada nele.

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. Isso garante o acesso controlado ao Azure KeyVault por meio do namespace dos Hubs de Eventos do Azure.

Devido a isso:

  • Se a recuperação de desastre geográfico já estiver habilitada no namespace dos Hubs de Eventos 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 Hubs de Eventos no qual a chave gerenciada pelo cliente já está configurada, então siga essas 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.

Configuração dos logs de diagnóstico

A configuração de logs de diagnóstico para namespaces habilitados para BYOK fornece as informações necessárias sobre as operações. Esses logs podem ser habilitados e transmitidos posteriormente para um hub de eventos, analisados por meio do Log Analytics ou transmitidos ao armazenamento para a execução de análises personalizadas. Para saber mais sobre os logs de diagnóstico, confira Visão geral dos logs de diagnóstico do Azure. Para o esquema, confira Monitorar referência de dados.

Próximas etapas

Veja os artigos a seguir: