Compartilhar via


Proteger o acesso aos HSMs gerenciados

O HSM gerenciado do Azure Key Vault é um serviço de nuvem que protege as chaves de criptografia. Como esses dados são confidenciais e comercialmente críticos, é necessário proteger o acesso aos seus HSMs gerenciados permitindo que apenas aplicativos e usuários autorizados os acessem. Este artigo apresenta uma visão geral do modelo de controle de acesso do HSM gerenciado. Explica a autenticação e a autorização e descreve como proteger o acesso ao seus HSMs gerenciados.

Este tutorial apresentará um exemplo simples que mostra como obter a diferenciação de direitos e o controle de acesso usando o RBAC do Azure e o RBAC local do HSM Gerenciado. Confira Controle de acesso do HSM gerenciado para aprender sobre o modelo de controle de acesso do HSM gerenciado.

Pré-requisitos

Para concluir as etapas deste artigo, você precisará ter os seguintes itens:

Azure Cloud Shell

O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Link
Selecione Experimentar no canto superior direito de um bloco de código ou de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. Captura de tela que mostra um exemplo de Experimente para o Azure Cloud Shell.
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. Botão para iniciar o Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. Captura de tela que mostra o botão Cloud Shell no portal do Azure

Para usar o Azure Cloud Shell:

  1. Inicie o Cloud Shell.

  2. Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.

  3. Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e no Linux, ou selecionando Cmd+Shift+V no macOS.

  4. Pressione Enter para executar o código ou comando.

Entrar no Azure

Para entrar no Azure usando a CLI, você pode digitar:

az login

Para obter mais informações sobre as opções de logon por meio da CLI, confira Entrar com a CLI do Azure

Exemplo

Neste exemplo, estamos desenvolvendo um aplicativo que usa uma chave RSA de 2.048 bits para operações de assinatura. Nosso aplicativo é executado em uma VM (máquina virtual) do Azure com uma identidade gerenciada. A chave RSA usada para assinatura é armazenada no HSM gerenciado.

Identificamos as funções a seguir que gerenciam, implantam e auditam nosso aplicativo:

  • Equipe de segurança: a equipe de TI do escritório do Diretor de segurança ou colaboradores equivalentes. A equipe de segurança é responsável por guardar adequadamente as chaves. As chaves RSA ou chaves EC para assinatura e chaves RSA ou AES para criptografia de dados.
  • Desenvolvedores e operadores: a equipe que desenvolve o aplicativo e o implanta no Azure. Os membros desta equipe não fazem parte da equipe de segurança. Eles não devem ter acesso a dados confidenciais, como chaves RSA. Somente o aplicativo que eles implantam deve ter acesso a esses dados confidenciais.
  • Auditores: essa função é para colaboradores que não são membros da equipe de desenvolvimento ou de TI geral. Eles analisam o uso e a manutenção de certificados, chaves e segredos para garantir a conformidade com padrões de segurança.

Há outra função que está fora do escopo do nosso aplicativo: o administrador da assinatura (ou do grupo de recursos). O administrador da assinatura define permissões de acesso inicial para a equipe de segurança. Ele concede acesso à equipe de segurança usando um grupo de recursos que tem os recursos exigidos pelo aplicativo.

É necessário autorizar as seguintes operações para as funções:

Equipe de segurança

  • Crie o HSM gerenciado.
  • Baixar o domínio de segurança do HSM gerenciado (para recuperação de desastre)
  • Ative o registro em log.
  • Gerar ou importar chaves
  • Crie os backups do HSM gerenciados para recuperação de desastres.
  • Defina o RBAC local do HSM gerenciado para conceder permissões a usuários e aplicativos para operações específicas.
  • Role as chaves periodicamente.

Desenvolvedores e operadores

  • Obtenha a referência (URI de chave) da equipe de segurança da chave RSA usada para assinatura.
  • Desenvolva e implante o aplicativo que acessa a chave programaticamente.

Auditores

  • Examinar as datas de término das chaves para garantir que as chaves estejam atualizadas
  • Monitorar as atribuições de função para garantir que as chaves só possam ser acessadas por usuários/aplicativos autorizados
  • Examine os logs do HSM gerenciado para confirmar o uso adequado das chaves em conformidade com os padrões de segurança de dados.

A tabela a seguir resume as atribuições de função para equipes e recursos para acessar o HSM gerenciado.

Função Função do plano de gerenciamento Função do plano de dados
Equipe de segurança Colaborador do HSM gerenciado Administrador de HSM Gerenciado
Desenvolvedores e operadores de TI Nenhum Nenhum
Auditores Nenhum Auditor de criptografia do HSM gerenciado
Identidade gerenciada da VM usada pelo aplicativo Nenhum Usuário de criptografia do HSM gerenciado
Identidade gerenciada da conta de armazenamento usada pelo aplicativo Nenhum Criptografia do serviço do HSM gerenciado

As três funções da equipe precisam ter acesso a outros recursos e a permissões do HSM gerenciado. Para implantar VMs (ou o recurso de Aplicativos Web do Serviço de Aplicativo do Azure), os desenvolvedores e operadores precisam de acesso Contributor a esses tipos de recursos. Os auditores precisam de acesso de leitura para a Conta de armazenamento em que os logs do HSM gerenciado estão armazenados.

Para atribuir funções de plano de gerenciamento (RBAC do Azure), você pode usar o portal do Azure ou qualquer uma das outras interfaces de gerenciamento, como a CLI do Azure ou o Azure PowerShell. Para atribuir funções de plano de dados do HSM gerenciado, use a CLI do Azure. Para obter mais informações sobre as funções do plano de gerenciamento, consulte Funções internas do Azure. Para obter mais informações sobre as funções de plano de dados HSM gerenciado, consulte Funções internas do RBAC local para HSM gerenciado.

Os snippets da CLI do Azure nesta seção são criados com as seguintes suposições:

  • O administrador do Microsoft Entra criou grupos de segurança para representar as três funções: Equipe de segurança, DevOps de aplicativo e Auditores de aplicativo da Contoso. O administrador adicionou os usuários aos respectivos grupos.
  • Todos os recursos estão localizados no grupo de recursos ContosoAppRG.
  • Os logs do HSM gerenciado são armazenados na conta de armazenamento contosologstorage.
  • O HSM gerenciado ContosoMHSM e a conta de armazenamento contosologstorage estão no mesmo local do Azure.

O administrador de assinatura atribui as funções Managed HSM Contributor à equipe de segurança. Essa função permite à equipe de segurança gerenciar HSMs gerenciados atuais e criar outros. Se houver HSMs gerenciados, será necessário atribuir a função "Administrador do HSM gerenciado" para gerenciá-los.

# This role assignment allows Contoso Security Team to create new Managed HSMs
az role assignment create --assignee-object-id $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --assignee-principal-type Group --role "Managed HSM Contributor"

# This role assignment allows Contoso Security Team to become administrator of existing managed HSM
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso Security Team' --query 'id' -o tsv) --scope / --role "Managed HSM Administrator"

A equipe de segurança configura o registro em log e atribui funções a auditores e ao aplicativo da VM.

# Enable logging
hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name contosologstorage --query id -o tsv)
az monitor diagnostic-settings create --name MHSM-Diagnostics --resource $hsmresource --logs    '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource

# Assign the "Crypto Auditor" role to Contoso App Auditors group. It only allows them to read.
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az ad group show -g 'Contoso App Auditors' --query 'objectId' -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Grant the "Crypto User" role to the VM's managed identity. It allows to create and use keys. 
# However it cannot permanently delete (purge) keys
az keyvault role assignment create  --hsm-name ContosoMHSM --assignee $(az vm identity show --name "vmname" --resource-group "ContosoAppRG" --query objectId -o tsv) --scope / --role "Managed HSM Crypto Auditor"

# Assign "Managed HSM Crypto Service Encryption User" role to the Storage account ID
storage_account_principal=$(az storage account show --id $storageresource --query identity.principalId -o tsv)
# (if no identity exists), then assign a new one
[ "$storage_account_principal" ] || storage_account_principal=$(az storage account update --assign-identity --id $storageresource)

az keyvault role assignment create --hsm-name ContosoMHSM --role "Managed HSM Crypto Service Encryption User" --assignee $storage_account_principal

Este tutorial mostra apenas as ações relevantes para o controle de acesso geral. Outras ações e operações relacionadas à implantação de aplicativo em sua VM, à ativação da criptografia com a chave gerenciada pelo cliente para uma conta de armazenamento e à criação de HSM gerenciado não são mostrados aqui para manter o exemplo focado no controle de acesso e no gerenciamento de função.

Este exemplo descreve um cenário simples. Os cenários da vida real podem ser mais complexos. Você pode ajustar as permissões do cofre de chaves com base em suas necessidades. Vamos presumir que a equipe de segurança forneceu as referências de chave e segredo (URIs e impressões digitais), usadas pela equipe de DevOps nos aplicativos. Desenvolvedores e operadores não precisam de nenhum acesso ao plano de dados. Vimos como proteger seu cofre de chaves. Pense da mesma maneira ao proteger suas VMs, contas de armazenamentos e outros recursos do Azure.

Recursos

Próximas etapas

Para ver um tutorial de introdução para um administrador, consulte O que é o HSM gerenciado?.

Para obter mais informações sobre o registro em log do uso para o registro em log do HSM gerenciado, confira Registro em log do HSM gerenciado.