Exercício – Proteger um aplicativo Java da perspectiva de um operador de TI

Concluído

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 ambiente AZ_DATABASE_NAME. Digite echo $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 ambiente AZ_DATABASE_USERNAME. Digite echo $AZ_DATABASE_USERNAME para vê-lo.
  • ${azureDatabasePassword} é o nome da senha do banco de dados que foi configurada anteriormente na variável de ambiente AZ_DATABASE_PASSWORD. Digite echo $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.