Partilhar via


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

Os Hubs de Eventos do Azure fornecem criptografia de dados em repouso com a Criptografia do Serviço de Armazenamento do Azure (Azure SSE). O serviço Hubs de Eventos 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 sua própria chave (também conhecida como Bring Your Own Key (BYOK) ou 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 criar, girar, desabilitar e revogar 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 único em seu namespace.

Importante

  • O recurso BYOK é suportado por camadas premium e dedicadas de Hubs de Eventos.
  • A criptografia só pode ser habilitada para namespaces novos ou vazios. Se o namespace contiver hubs de eventos, a operação de criptografia falhará.

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

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, consulte Guia de início rápido: criar um cofre de chaves do Azure usando o portal do Azure.

Habilitar chaves gerenciadas pelo cliente (portal do Azure)

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

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

  2. Na página Configurações do namespace Hubs de Eventos, selecione Criptografia.

  3. Selecione a criptografia de chave gerenciada pelo cliente em repouso, conforme mostrado na imagem a seguir.

    Ativar chave gerida pelo cliente

Nota

Atualmente, não é possível configurar o Azure Key Vault Managed HSM por meio do portal.

Configurar um cofre de chaves com chaves

Depois de habilitar as chaves gerenciadas pelo cliente, você precisa associar a chave gerenciada pelo cliente ao seu namespace dos Hubs de Eventos do Azure. Os Hubs de Eventos suportam apenas o 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 Cofre de Chaves do Azure. Além disso, as chaves devem ter Soft Delete e Do Not Purge configuradas para a chave. Essas configurações podem ser definidas usando PowerShell ou CLI.

  1. Para criar um novo cofre de chaves, siga o Guia de início rápido do Cofre de Chaves do Azure. Para obter mais informações sobre como importar chaves existentes, consulte Sobre chaves, segredos e certificados.

    Importante

    Usar chaves gerenciadas pelo cliente com Hubs de Eventos do Azure requer que o cofre de chaves tenha duas propriedades necessárias configuradas. São eles: Soft Delete e Do Not Purge. Essas propriedades são habilitadas por padrão quando você cria um novo cofre de chaves no portal do Azure. No entanto, se você precisar habilitar essas propriedades em um cofre de chaves existente, deverá usar o PowerShell ou a CLI do Azure.

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

    az keyvault update --name ContosoVault --resource-group ContosoRG --enable-purge-protection true
    
  1. Crie chaves seguindo estas etapas:
    1. Para criar uma nova chave, selecione Gerar/Importar no menu Chaves em Configurações.

      Selecione o botão Gerar/Importar

    2. Defina Opções para Gerar e dê um nome à chave.

      Criar uma chave

    3. Agora você pode selecionar essa chave para associar ao namespace Hubs de Eventos para criptografia na lista suspensa.

      Selecionar chave do cofre de chaves

      Nota

      Para redundância, você pode adicionar até 3 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 permitirá a criptografia da chave gerenciada pela Microsoft com sua chave (chave gerenciada pelo cliente).

Identidades geridas

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

  • Sistema atribuído: você pode habilitar uma identidade gerenciada diretamente em um namespace de Hubs de Eventos. Quando você habilita uma identidade gerenciada atribuída ao sistema, uma identidade é criada no Microsoft Entra vinculada ao ciclo de vida desse namespace de Hubs de Eventos. Portanto, quando o namespace é excluído, o Azure exclui automaticamente a identidade para você. Por design, somente esse recurso do Azure (namespace) 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 é chamado de 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 de 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, veja O que são identidades geridas para os recursos do Azure?.

Criptografar usando identidades atribuídas ao sistema (modelo)

Esta seção mostra como executar as seguintes tarefas usando modelos do Azure Resource Manager.

  1. Crie um namespace de Hubs de Eventos com uma identidade de serviço gerenciado.
  2. Crie um cofre de chaves e conceda à identidade do serviço acesso ao cofre de chaves.
  3. Atualize o namespace dos Hubs de Eventos com as informações do cofre de chaves (chave/valor).

Criar um cluster e namespace de Hubs de Eventos com identidade de serviço gerenciado

Esta seção mostra como criar um namespace de Hubs de Eventos do Azure com identidade de serviço gerenciado usando um modelo do Azure Resource Manager e o PowerShell.

  1. Crie um modelo do Azure Resource Manager para criar um namespace de Hubs de Eventos com uma identidade de serviço gerenciado. 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.

    Nota

    Substitua os seguintes valores:

    • <EventHubsClusterName> - Nome do cluster de Hubs de Eventos
    • <EventHubsNamespaceName> - Nome do namespace dos Hubs de Eventos
    • <Location> - Localização do 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 seguinte comando do PowerShell para implantar o modelo e criar um namespace de 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 à identidade do namespace Hubs de Eventos ao cofre de chaves

Defina a política de acesso ao cofre de chaves para que a identidade gerenciada do namespace Hubs de Eventos possa acessar o valor da chave no cofre de chaves. Use a ID do namespace Hubs de Eventos da 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 de Hubs de Eventos com chave gerenciada pelo cliente do cofre de chaves

Você fez as seguintes etapas até agora:

  1. Criou um namespace premium com uma identidade gerenciada.
  2. Crie um cofre de chaves e conceda à identidade gerenciada acesso ao cofre de chaves.

Nesta etapa, você atualizará o namespace 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.

    Nota

    Substitua os seguintes valores:

    • <EventHubsClusterName> - Nome do cluster de Hubs de Eventos.
    • <EventHubsNamespaceName> - Nome do namespace dos Hubs de Eventos
    • <Location> - Localização do namespace dos Hubs de Eventos
    • <KeyVaultName> - Nome do cofre da sua chave
    • <KeyName> - Nome da chave no cofre da chave
    {
       "$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 seguinte comando do PowerShell para implantar o modelo do Gerenciador de Recursos. Substitua {MyRG} pelo nome do 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 de políticas de acesso.
  3. Crie um namespace de Hubs de Eventos com a identidade de usuário gerenciada e as informações do cofre de chaves.

Criar uma identidade atribuída pelo utilizador

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.

Nota

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

Conceder acesso à identidade atribuída pelo usuário

  1. Obtenha a ID da entidade de serviço para a identidade do usuário usando o seguinte comando do PowerShell. No exemplo, ud1 é a identidade atribuída pelo usuário a ser usada para criptografia.

    $servicePrincipal=Get-AzADServicePrincipal -SearchString "ud1"    
    
  2. 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    
    

    Nota

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

Criar um namespace de Hubs de Eventos com informações de identidade do usuário e cofre de chaves

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

  1. Atribua uma identidade gerenciada pelo usuário a um namespace de Hubs de Eventos.

                "identity": {
                    "type": "UserAssigned",
                    "userAssignedIdentities": {
                        "[parameters('identity').userAssignedIdentity]": {}
                    }
                },
    
  2. 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]"
                                }
                            }
                       ]
                    }
    
  3. Crie um arquivo JSON chamado 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]"
                            }
                        }
                   ]
                }
             }
          }
       ]
    }        
    
  4. 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âmetros, substitua espaços reservados por valores apropriados.

    Marcador de Posição valor
    <EventHubsNamespaceName> Nome do namespace 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> O seu ID de subscrição 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.
  5. Execute o seguinte comando do PowerShell para implantar o modelo do Gerenciador de Recursos. Substitua {MyRG} pelo nome do grupo de recursos antes de executar o comando.

    New-AzResourceGroupDeployment -Name CreateEventHubsNamespaceWithEncryption -ResourceGroupName {MyRG} -TemplateFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryption.json -TemplateParameterFile ./ CreateEventHubsNamespaceWithUserIdentityAndEncryptionParams.json        
    

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

Um namespace pode ter identidades atribuídas ao sistema e ao usuário ao mesmo tempo. Neste caso, a type propriedade seria SystemAssigned, UserAssigned como 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 a identidade atribuída pelo usuário para criptografar os dados em repouso.

No modelo do Gerenciador de Recursos, se você não especificar um identity atributo, a identidade gerenciada pelo sistema será usada. Aqui está um trecho de exemplo.

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

Consulte o exemplo a seguir para usar a identidade gerenciada pelo usuário para a criptografia. Observe que o identity atributo 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 (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 está habilitada, os dados na conta de namespace dos Hubs de Eventos são criptografados duas vezes, uma no nível de serviço e outra no nível de infraestrutura, usando dois algoritmos de criptografia diferentes e duas chaves diferentes. Assim, a criptografia de infraestrutura de dados de Hubs de Eventos protege contra um cenário em que um dos algoritmos ou chaves de criptografia pode ser comprometido.

Você pode habilitar a criptografia de infraestrutura atualizando o modelo do Azure Resource Manager com requireInfrastructureEncryption a propriedade 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')]"
         }
      ]
   }
}

Rodar, revogar e armazenar em cache chaves de criptografia

Rodar as chaves de encriptação

Você pode girar sua chave no cofre de chaves usando o mecanismo de rotação dos Cofres de Chaves do Azure. As datas de ativação e expiração também podem ser definidas para automatizar a rotação de chaves. O serviço Hubs de Eventos detetará novas versões de chaves e começará a usá-las automaticamente.

Revogar o acesso às chaves

Revogar o acesso às chaves de criptografia não limpará os dados dos Hubs de Eventos. No entanto, os dados não podem ser acessados a partir do namespace 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 a proteção do seu cofre de chaves a partir do acesso seguro a um cofre de chaves.

Depois que a chave de criptografia for revogada, o serviço Hubs de Eventos no namespace criptografado ficará inoperante. Se o acesso à chave estiver habilitado ou a chave de exclusão for restaurada, o serviço Hubs de Eventos selecionará a chave para que você possa acessar os dados do namespace de Hubs de Eventos criptografado.

Armazenamento em cache de chaves

A instância dos Hubs de Eventos (hub de eventos) sonda suas chaves de criptografia listadas a cada 5 minutos. Ele armazena em cache e os usa até a próxima votação, que é após 5 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 quando ele for pesquisado, todos os hubs de eventos ficarão indisponíveis.

Aqui estão mais detalhes:

  • A cada 5 minutos, o serviço Hubs de Eventos sonda 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, ela 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 a partir do namespace Hubs de Eventos.'

Considerações ao usar a recuperação de desastres geográficos

Importante

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

Recuperação de desastres geográficos - criptografia com identidades atribuídas ao sistema

Para habilitar a criptografia de chave gerenciada pela Microsoft com uma chave gerenciada pelo cliente, uma política de acesso é configurada para uma identidade gerenciada atribuída ao sistema no Azure KeyVault especificado. Isso garante acesso controlado ao Azure KeyVault a partir do namespace Hubs de Eventos do Azure.

Devido a isso:

  • Se a recuperação de desastres geográficos já estiver habilitada para o namespace Hubs de Eventos e você estiver procurando habilitar a chave gerenciada pelo cliente, então
    • Quebre o emparelhamento.
    • Configure a política de acesso para a identidade gerenciada atribuída ao sistema para os namespaces primário e secundário para o cofre de chaves.
    • Configure a criptografia no namespace primário.
    • Emparelhe novamente os namespaces primário e secundário.
  • Se você estiver procurando habilitar o Geo-DR em um namespace de Hubs de Eventos onde a chave gerenciada pelo cliente já está configurada, siga estas etapas:
    • Configure a política de acesso para a identidade gerenciada do namespace secundário ao cofre de chaves.
    • Emparelhe os namespaces primário e secundário.

Recuperação de desastres geográficos - criptografia com identidades atribuídas pelo usuário

Seguem-se algumas recomendações:

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

Condições para habilitar Geo-DR e 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 se quiser ser emparelhado com um namespace primário que tenha a 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.

Configurar os registos 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, posteriormente, transmitidos para um hub de eventos ou analisados por meio de análise de log ou transmitidos para o armazenamento para executar análises personalizadas. Para saber mais sobre logs de diagnóstico, consulte Visão geral dos logs de diagnóstico do Azure. Para o esquema, consulte Referência de dados do monitor.

Próximos passos

Consulte os seguintes artigos: