Exercice - Sécuriser une application Java du point de vue d’un opérateur informatique
Dans cette unité, vous utilisez Azure CLI pour autoriser votre application Java à accéder aux secrets Azure Key Vault.
En tant qu’opérateur informatique, vous devez gérer ces secrets et accorder l’accès à ceux-ci.
Stocker les secrets dans Azure Key Vault
Dans votre application, vous aviez deux secrets à stocker :
${azureDatabaseName}
est le nom de base de données PostgreSQL configuré précédemment dans la variable d’environnementAZ_DATABASE_NAME
. Tapezecho $AZ_DATABASE_NAME
pour le voir.${azureDatabaseUsername}
est le nom d’utilisateur de base de données configuré précédemment dans la variable d’environnementAZ_DATABASE_USERNAME
. Tapezecho $AZ_DATABASE_USERNAME
pour le voir.${azureDatabasePassword}
est le mot de passe de base de données configuré précédemment dans la variable d’environnementAZ_DATABASE_PASSWORD
. Tapezecho $AZ_DATABASE_PASSWORD
pour le voir.
Nous allons créer une instance Azure Key Vault et y stocker ces secrets :
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}
Autoriser votre application à accéder à Azure Key Vault
Pour accéder à Azure Key Vault, votre application Spring Boot doit d’abord se voir attribuer une identité Azure.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
Vous devez également configurer votre application Spring Boot avec deux variables d’environnement. La première variable active Azure Key Vault. La deuxième variable donne l’URL à votre instance Azure Key Vault. L’exécution de cette commande peut durer plusieurs minutes.
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/
Ensuite, vous devez autoriser votre application à accéder à l’instance 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
Votre application doit désormais avoir les autorisations nécessaires pour accéder aux secrets stockés dans Azure Key Vault.