Exercício – Proteger um aplicativo Java da perspectiva de um operador de TI
Nesta unidade, você usará a CLI do Azure para permitir ao aplicativo Java acesso aos segredos do Azure Key Vault.
Você desempenha o papel de um operador de TI, que gerencia esses segredos e permite acesso a eles.
Armazenar segredos no Azure Key Vault
No seu aplicativo, você tinha dois segredos para armazenar:
${azureDatabaseName}
é o nome do banco de dados PostgreSQL que foi configurado anteriormente na variável de ambienteAZ_DATABASE_NAME
. Digiteecho $AZ_DATABASE_NAME
para vê-lo.${azureDatabaseUsername}
é o nome do nome de usuário do banco de dados que foi configurado anteriormente na variável de ambienteAZ_DATABASE_USERNAME
. Digiteecho $AZ_DATABASE_USERNAME
para vê-lo.${azureDatabasePassword}
é o nome da senha do banco de dados que foi configurada anteriormente na variável de ambienteAZ_DATABASE_PASSWORD
. Digiteecho $AZ_DATABASE_PASSWORD
para vê-lo.
Vamos criar uma instância do Azure Key Vault e armazenar esses segredos nele:
AZ_KEY_VAULT_NAME=kv-${AZ_RESOURCE_GROUP}
az keyvault create \
--name $AZ_KEY_VAULT_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--location $AZ_LOCATION
az keyvault secret set \
--vault-name $AZ_KEY_VAULT_NAME \
--name azureDatabaseName \
--value ${AZ_DATABASE_NAME}
az keyvault secret set \
--vault-name $AZ_KEY_VAULT_NAME \
--name azureDatabaseUsername \
--value ${AZ_DATABASE_USERNAME}
az keyvault secret set \
--vault-name $AZ_KEY_VAULT_NAME \
--name azureDatabasePassword \
--value ${AZ_DATABASE_PASSWORD}
Permitir ao aplicativo acesso ao Azure Key Vault
Para acessar o Azure Key Vault, seu aplicativo Spring Boot precisa primeiro ter uma identidade do Azure atribuída.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
Você também precisará configurar o aplicativo Spring Boot com duas variáveis de ambiente. A primeira variável é habilitar o Azure Key Vault. A segunda variável é fornecer a URL para sua instância do Azure Key Vault. Esse comando pode levar vários minutos para ser executado.
az spring app update \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--env \
AZURE_KEYVAULT_ENABLED=true \
AZURE_KEYVAULT_URI=https://$AZ_KEY_VAULT_NAME.vault.azure.net/
Em seguida, você precisará permitir ao aplicativo acesso à instância do Azure Key Vault.
AZ_SPRING_CLOUD_PRINCIPAL_ID=$(az spring app identity show --resource-group $AZ_RESOURCE_GROUP --service $AZ_SPRING_CLOUD --name application | jq --raw-output '.principalId')
az keyvault set-policy \
--name $AZ_KEY_VAULT_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--object-id $AZ_SPRING_CLOUD_PRINCIPAL_ID \
--secret-permissions get list
Seu aplicativo agora deve ter as permissões para acessar os segredos armazenados no Azure Key Vault.