Pular para o conteúdo principal

Armazenamento de chaves em Azure Key Vault

observação

Os repositórios de chaves do Azure Key Vault são compatíveis com todas as plataformas suportadas.

O Azure Key Vault pode ser considerado um HSM na nuvem. As chaves são armazenadas em HSMs com validação FIPS 140-2 Nível 2, por um custo relativamente baixo, de cerca de 5 dólares por mês por chave. Esse serviço da Microsoft viabilizou o uso de HSMs em projetos que, de outra forma, não teriam o orçamento necessário.

dica

A instância do Amplia na nuvem da Lacuna Software (oferta SaaS) armazena todas as chaves de AC no Azure Key Vault, e recomendamos fortemente o seu uso tanto em instâncias instaladas na nuvem quanto em servidores locais.

Procedimento​

Para configurar um repositório de chaves do Azure Key Vault no Amplia, entre no portal do Azure e faça as configurações a seguir:

Criando um aplicativo e um segredo de autenticação​

Crie um aplicativo correspondente à sua instância do Amplia:

  1. Na opção Microsoft Entra ID, acesse App registrations e clique em New registration
  2. Informe um nome para o aplicativo
  3. Mantenha os demais campos com as opções padrão
  4. Clique em Register

Depois que o aplicativo for criado, anote o Application (client) ID.

Gere um segredo para identificação do aplicativo:

  1. Nas configurações do aplicativo, clique em Certificates & secrets
  2. Em Client secrets, clique em New client secret
  3. Preencha uma descrição e escolha uma validade
  4. Clique em Add
  5. Copie o valor exibido na coluna Value (não será possível recuperar esse valor depois!)
aviso

O client secret sempre expira (a validade máxima disponível é de 24 meses). Antes que ele expire, gere um novo e atualize a configuração AppKey; caso contrário, o Amplia deixará de conseguir acessar o Key Vault. Para evitar isso, você pode se autenticar com um certificado (veja a configuração CertThumb abaixo).

Criando o Key Vault​

Crie o Key Vault (pule esta parte se quiser usar um Key Vault existente):

  1. Na opção Key vaults, clique em Create
  2. Preencha os dados de acordo com a sua infraestrutura
  3. Na opção Pricing tier, escolha Premium para poder gerar chaves armazenadas em HSM
  4. Na aba Access configuration, mantenha o Permission model padrão, Azure role-based access control
  5. Clique em Review + create
  6. Clique em Create

Quando a criação do Key Vault terminar, clique em Go to resource. Em seguida, anote o Vault URI do Key Vault, exibido na página Overview (ex.: https://my-key-vault.vault.azure.net/).

Concedendo permissões ao aplicativo​

A forma de conceder permissões ao aplicativo depende do Permission model do Key Vault, exibido em Settings > Access configuration. Os Key Vaults novos usam Azure role-based access control por padrão. Key Vaults mais antigos podem usar Vault access policy.

Se o Key Vault usar Azure role-based access control:

  1. No Key Vault, clique em Access control (IAM) e, depois, em Add > Add role assignment
  2. Na aba Role, selecione Key Vault Crypto Officer e clique em Next
  3. Na aba Members, escolha User, group, or service principal e clique em Select members
  4. Selecione o aplicativo criado e clique em Select
  5. Clique em Review + assign e, depois, em Review + assign novamente para confirmar
observação

O role Key Vault Crypto Officer é necessário porque o Amplia cria chaves no Key Vault. O role Key Vault Crypto User não permite criar chaves.

Se o Key Vault usar Vault access policy:

  1. Nas configurações do Key Vault, clique em Access policies e, depois, em Create
  2. Na aba Permissions, sem usar um template, selecione apenas as seguintes Key permissions: Get, List, Create, Verify e Sign. Depois, clique em Next
  3. Na aba Principal, selecione o aplicativo criado e clique em Next
  4. Clique em Next até chegar à etapa de revisão e, depois, clique em Create

Configuração do Amplia​

Edite o seu arquivo de configuração JSON ou as configurações do seu App Service e adicione à seção KeyStores uma seção com um nome que identifique o Key Vault (veja o exemplo abaixo), com as seguintes configurações:

  • Type: AzureKeyVault
  • Endpoint: Vault URI do Key Vault (exibido na página Overview do Key Vault) -- ex.: https://my-pki.vault.azure.net/
  • AppId: ID do aplicativo usado para autenticação no Azure
  • AppKey: chave secreta do aplicativo usada para autenticação no Azure (para mais segurança, omita este valor e informe o CertThumb em vez dele)
  • CertThumb: thumbprint do certificado usado para autenticação no Azure (em hexadecimal, como fornecido pelo portal do Azure)
  • TenantId (opcional, Amplia 5.0 ou mais recente): ID do tenant do Microsoft Entra no qual autenticar. Se omitido, o tenant é obtido do desafio de autenticação do Key Vault
  • UseManagedIdentity (Amplia 5.0 ou mais recente): defina como true para autenticar com a identidade gerenciada do host onde o Amplia é executado (por exemplo, a identidade gerenciada do App Service dele) em vez de uma chave secreta ou certificado do aplicativo. Nesse caso, deixe AppKey e CertThumb em branco e conceda as permissões descritas acima à identidade gerenciada, em vez de a um aplicativo
  • UseHsm: por padrão, são criadas chaves protegidas por HSM. Para usar chaves "de software", defina este valor como false

Exemplo (arquivo de configuração .ini ou .conf):

[KeyStores:MyKeyVault]
Type=AzureKeyVault
Endpoint=https://xxx.vault.azure.net/
AppId=00000000-0000-0000-0000-000000000000
AppKey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

Exemplo (variáveis de ambiente):

KeyStores__MyKeyVault__Type=AzureKeyVault
KeyStores__MyKeyVault__Endpoint=https://xxx.vault.azure.net/
KeyStores__MyKeyVault__AppId=00000000-0000-0000-0000-000000000000
KeyStores__MyKeyVault__AppKey=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=

Exemplo (arquivo de configuração .json):

"KeyStores": {
...,
"MyKeyVault": {
"Type": "AzureKeyVault",
"Endpoint": "https://xxx.vault.azure.net/",
"AppId": "00000000-0000-0000-0000-000000000000",
"AppKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
...
}

Veja também​

Ver em Markdown