Acesso seguro aos seus HSMs gerenciados

O Azure Key Vault Managed HSM é um serviço de nuvem que protege chaves de criptografia. Como esses dados são confidenciais e críticos para os negócios, você precisa proteger o acesso aos HSMs gerenciados, permitindo que apenas aplicativos e usuários autorizados os acessem. Este artigo fornece uma visão geral do modelo de controle de acesso do HSM gerenciado. Ele explica a autenticação e a autorização e descreve como proteger o acesso aos HSMs gerenciados.

Este tutorial orientará você por um exemplo simples que mostra como obter separação de funções e controle de acesso usando o RBAC do Azure e o RBAC local do HSM gerenciado. Consulte Controle de acesso HSM gerenciado para saber mais sobre o modelo de controle de acesso HSM gerenciado.

Pré-requisitos

Para concluir as etapas neste artigo, você deve ter os seguintes itens:

Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. Você pode usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada em seu ambiente local.

Para iniciar o Azure Cloud Shell:

Opção Exemplo/Ligação
Selecione Experimentar no canto superior direito de um código ou bloco de comandos. Selecionar Experimentar não copia automaticamente o código ou comando para o Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser. Button to launch Azure Cloud Shell.
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure. Screenshot that shows the Cloud Shell button in the Azure portal

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 comando.

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

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

Iniciar sessão 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, consulte 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 sinal. Nosso aplicativo é executado em uma máquina virtual (VM) do Azure com uma identidade gerenciada. Tanto a chave RSA usada para assinatura é armazenada em nosso HSM gerenciado.

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

  • Equipe de segurança: equipe de TI do escritório do CSO (Chief Security Officer) ou colaboradores semelhantes. A equipa de segurança é responsável pela guarda adequada das chaves. As chaves RSA ou 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 equipa não fazem parte do pessoal 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: Esta 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 os padrões de segurança.

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

Precisamos autorizar as seguintes operações para nossas funções:

Equipa de segurança

  • Crie o HSM gerenciado.
  • Baixe o domínio de segurança HSM gerenciado (para recuperação de desastres)
  • Ative o registo.
  • Gerar ou importar chaves
  • Crie os backups gerenciados do HSM 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 teclas periodicamente.

Programadores e operadores

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

Auditores

  • Revise as datas de expiração das chaves para garantir que elas estejam atualizadas
  • Monitore as atribuições de função para garantir que as chaves só possam ser acessadas por usuários/aplicativos autorizados
  • Revise os logs gerenciados do HSM 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
Equipa de segurança Colaborador HSM gerenciado Administrador do HSM Gerido
Programadores e operadores Nenhuma Nenhuma
Auditores Nenhuma Auditor de criptografia HSM gerenciado
Identificação gerenciada da VM usada pelo aplicativo Nenhuma Usuário de criptografia HSM gerenciado
Identidade gerenciada da conta de armazenamento usada pelo aplicativo Nenhuma Criptografia de serviço HSM gerenciado

As três funções da equipe precisam de acesso a outros recursos, juntamente com permissões gerenciadas do HSM. Para implantar VMs (ou o recurso Aplicativos Web do Serviço de Aplicativo do Azure), os desenvolvedores e operadores precisam Contributor ter acesso a esses tipos de recursos. Os auditores precisam de acesso de leitura à conta de armazenamento onde os logs gerenciados do HSM são armazenados.

Para atribuir funções de plano de gerenciamento (Azure RBAC), 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 gerenciadas do plano de dados HSM, você deve usar a CLI do Azure. Para obter mais informações sobre funções de plano de gerenciamento, consulte Funções internas do Azure. Para obter mais informações sobre funções de plano de dados do HSM gerenciado, consulte Funções internas do RBAC local para HSM gerenciado.

Os trechos 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: Contoso Security Team, Contoso App DevOps e Contoso App Auditors. O administrador adicionou usuários aos seus respetivos grupos.
  • Todos os recursos estão localizados no grupo de recursos ContosoAppRG .
  • Os logs gerenciados do HSM são armazenados na conta de armazenamento contosologstorage .
  • O HSM gerenciado pelo ContosoMHSM e a conta de armazenamento contosologstorage estão no mesmo local do Azure.

O administrador da subscrição atribui a Managed HSM Contributorfunção à equipa de segurança. Essa função permite que a equipe de segurança gerencie HSMs gerenciados existentes e crie novos. Se existirem HSMs gerenciados, eles precisarão receber a função "Administrador de HSM gerenciado" para poder 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 aos auditores e ao aplicativo 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 ações relevantes para o controle de acesso na maior parte. Outras ações e operações relacionadas à implantação de aplicativos em sua VM, ativação da criptografia com chave gerenciada pelo cliente para uma conta de armazenamento, criação de HSM gerenciado não são mostradas aqui para manter o exemplo focado no controle de acesso e no gerenciamento de funções.

Nosso exemplo descreve um cenário simples. Os cenários da vida real podem ser mais complexos. Pode ajustar as permissões para o cofre de chaves com base nas suas necessidades. Assumimos que a equipe de segurança fornece as referências de chave e segredo (URIs e impressões digitais), que são usadas pela equipe de DevOps em seus aplicativos. Os desenvolvedores e operadores não precisam de acesso ao plano de dados. Focámo-nos em como proteger o seu cofre de chaves. Dê consideração semelhante ao proteger suas VMs, contas de armazenamento e outros recursos do Azure.

Recursos

Próximos passos

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

Para obter mais informações sobre o log de uso do log do HSM gerenciado, consulte Log do HSM gerenciado.