Armazenamento de chaves em Azure Key Vault
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.
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:
- Na opção Microsoft Entra ID, acesse App registrations e clique em New registration
- Informe um nome para o aplicativo
- Mantenha os demais campos com as opções padrão
- Clique em Register
Depois que o aplicativo for criado, anote o Application (client) ID.
Gere um segredo para identificação do aplicativo:
- Nas configurações do aplicativo, clique em Certificates & secrets
- Em Client secrets, clique em New client secret
- Preencha uma descrição e escolha uma validade
- Clique em Add
- Copie o valor exibido na coluna Value (não será possível recuperar esse valor depois!)
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):
- Na opção Key vaults, clique em Create
- Preencha os dados de acordo com a sua infraestrutura
- Na opção Pricing tier, escolha Premium para poder gerar chaves armazenadas em HSM
- Na aba Access configuration, mantenha o Permission model padrão, Azure role-based access control
- Clique em Review + create
- 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:
- No Key Vault, clique em Access control (IAM) e, depois, em Add > Add role assignment
- Na aba Role, selecione Key Vault Crypto Officer e clique em Next
- Na aba Members, escolha User, group, or service principal e clique em Select members
- Selecione o aplicativo criado e clique em Select
- Clique em Review + assign e, depois, em Review + assign novamente para confirmar
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:
- Nas configurações do Key Vault, clique em Access policies e, depois, em Create
- Na aba Permissions, sem usar um template, selecione apenas as seguintes Key permissions: Get, List, Create, Verify e Sign. Depois, clique em Next
- Na aba Principal, selecione o aplicativo criado e clique em Next
- 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
CertThumbem 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
truepara 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="
},
...
}