Exercice - Sécuriser une application Java du point de vue d’un opérateur informatique

Effectué

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’environnement AZ_DATABASE_NAME. Tapez echo $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’environnement AZ_DATABASE_USERNAME. Tapez echo $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’environnement AZ_DATABASE_PASSWORD. Tapez echo $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.