Øvelse – Beskyt et Java-program fra et it-operatorperspektiv

Fuldført

I dette undermodul skal du bruge Kommandolinjegrænsefladen i Azure til at give dit Java-program adgang til hemmelighederne i Azure Key Vault.

Du spiller rollen som it-operatør, der administrerer disse hemmeligheder og giver adgang til dem.

Gem hemmeligheder i Azure Key Vault

I din ansøgning havde du to hemmeligheder at gemme:

  • ${azureDatabaseName} er navnet på den PostgreSQL-database, der blev konfigureret tidligere i miljøvariablen AZ_DATABASE_NAME. Skriv echo $AZ_DATABASE_NAME for at se den.
  • ${azureDatabaseUsername} er navnet på det databasebrugernavn, der blev konfigureret tidligere i miljøvariablen AZ_DATABASE_USERNAME. Skriv echo $AZ_DATABASE_USERNAME for at se den.
  • ${azureDatabasePassword} er navnet på den adgangskode til databasen, der blev konfigureret tidligere i miljøvariablen AZ_DATABASE_PASSWORD. Skriv echo $AZ_DATABASE_PASSWORD for at se den.

Lad os oprette en Forekomst af Azure Key Vault og gemme disse hemmeligheder i den:

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}

Giv dit program adgang til Azure Key Vault

Hvis du vil have adgang til Azure Key Vault, skal dit Spring Boot-program først have tildelt en Azure-identitet.

az spring app identity assign \
   --resource-group $AZ_RESOURCE_GROUP \
   --service $AZ_SPRING_CLOUD \
   --name application \
   --system-assigned

Du skal også konfigurere dit Spring Boot-program med to miljøvariabler. Den første variabel er at aktivere Azure Key Vault. Den anden variabel er at give URL-adressen til din Forekomst af Azure Key Vault. Denne kommando kan tage flere minutter at køre.

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/

Derefter skal du give dit program adgang til Forekomsten af 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

Dit program bør nu have tilladelse til at få adgang til de hemmeligheder, der er gemt i Azure Key Vault.