Övning – Skydda ett Java-program ur ett IT-operatörsperspektiv
I den här lektionen använder du Azure CLI för att ge ditt Java-program åtkomst till Azure Key Vault-hemligheterna.
Du spelar rollen som IT-operatör, som hanterar dessa hemligheter och ger åtkomst till dem.
Lagra hemligheter i Azure Key Vault
I programmet hade du två hemligheter att lagra:
-
${azureDatabaseName}är namnet på PostgreSQL-databasen som konfigurerades tidigare iAZ_DATABASE_NAMEmiljövariabeln. Skrivecho $AZ_DATABASE_NAMEför att se den. -
${azureDatabaseUsername}är namnet på databasanvändarnamnet som konfigurerades tidigare iAZ_DATABASE_USERNAMEmiljövariabeln. Skrivecho $AZ_DATABASE_USERNAMEför att se den. -
${azureDatabasePassword}är namnet på databaslösenordet som konfigurerades tidigare iAZ_DATABASE_PASSWORDmiljövariabeln. Skrivecho $AZ_DATABASE_PASSWORDför att se den.
Nu ska vi skapa en Azure Key Vault-instans och lagra dessa hemligheter 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}
Ge ditt program åtkomst till Azure Key Vault
För att få åtkomst till Azure Key Vault måste ditt Spring Boot-program först ha en Tilldelad Azure-identitet.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
Du måste också konfigurera Ditt Spring Boot-program med två miljövariabler. Den första variabeln är att aktivera Azure Key Vault. Den andra variabeln är att ge URL:en till din Azure Key Vault-instans. Det kan ta flera minuter att köra det här kommandot.
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/
Sedan måste du bevilja programmet åtkomst till Azure Key Vault-instansen.
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
Ditt program bör nu ha behörighet att komma åt hemligheterna som lagras i Azure Key Vault.