Ejercicio: Protección de una aplicación de Java desde la perspectiva de un operador de TI
En esta unidad, usará la CLI de Azure para conceder a la aplicación de Java acceso a los secretos de Azure Key Vault.
Desempeñará el rol de operador de TI, que administra esos secretos y permite acceder a ellos.
Almacenamiento de secretos en Azure Key Vault
En la aplicación, tenía dos secretos para almacenar:
${azureDatabaseName}
es el nombre de la base de datos PostgreSQL que se ha configurado antes en la variable de entornoAZ_DATABASE_NAME
. Escribaecho $AZ_DATABASE_NAME
para verla.${azureDatabaseUsername}
es el nombre del usuario de base de datos que se ha configurado antes en la variable de entornoAZ_DATABASE_USERNAME
. Escribaecho $AZ_DATABASE_USERNAME
para verlo.${azureDatabasePassword}
es el nombre de la contraseña de base de datos que se ha configurado antes en la variable de entornoAZ_DATABASE_PASSWORD
. Escribaecho $AZ_DATABASE_PASSWORD
para verla.
Ahora se creará una instancia de Azure Key Vault y se almacenarán esos secretos en ella:
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}
Concesión a la aplicación de acceso a Azure Key Vault
Para acceder a Azure Key Vault, la aplicación de Spring Boot debe tener asignada una identidad de Azure.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
También tendrá que configurar la aplicación de Spring Boot con dos variables de entorno. La primera variable es para habilitar Azure Key Vault. La segunda variable es para proporcionar la dirección URL a la instancia de Azure Key Vault. Este comando puede tardar varios minutos en ejecutarse.
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/
Después, tendrá que conceder a la aplicación acceso a la instancia de 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
Ahora la aplicación debe tener los permisos para acceder a los secretos almacenados en Azure Key Vault.