Ćwiczenie — zabezpieczanie aplikacji Java z perspektywy operatora IT
W tej lekcji użyjesz interfejsu wiersza polecenia platformy Azure, aby udzielić aplikacji Java dostępu do wpisów tajnych usługi Azure Key Vault.
Odgrywasz rolę operatora IT, który zarządza tymi wpisami tajnymi i udziela im dostępu.
Przechowywanie wpisów tajnych w usłudze Azure Key Vault
W aplikacji masz dwa wpisy tajne do przechowywania:
${azureDatabaseName}
to nazwa bazy danych PostgreSQL, która została skonfigurowana wcześniej w zmiennej środowiskowejAZ_DATABASE_NAME
. Wpiszecho $AZ_DATABASE_NAME
, aby go wyświetlić.${azureDatabaseUsername}
to nazwa nazwy użytkownika bazy danych, która została skonfigurowana wcześniej w zmiennej środowiskowejAZ_DATABASE_USERNAME
. Wpiszecho $AZ_DATABASE_USERNAME
, aby go wyświetlić.${azureDatabasePassword}
to nazwa hasła bazy danych, która została skonfigurowana wcześniej w zmiennej środowiskowejAZ_DATABASE_PASSWORD
. Wpiszecho $AZ_DATABASE_PASSWORD
, aby go wyświetlić.
Utwórzmy wystąpienie usługi Azure Key Vault i zapiszmy w nim te wpisy tajne:
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}
Udzielanie aplikacji dostępu do usługi Azure Key Vault
Aby uzyskać dostęp do usługi Azure Key Vault, aplikacja Spring Boot musi najpierw mieć przypisaną tożsamość platformy Azure.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
Należy również skonfigurować aplikację Spring Boot z dwiema zmiennymi środowiskowymi. Pierwszą zmienną jest włączenie usługi Azure Key Vault. Druga zmienna to nadanie adresu URL wystąpieniu usługi Azure Key Vault. Uruchomienie tego polecenia może potrwać kilka minut.
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/
Następnie należy udzielić aplikacji dostępu do wystąpienia usługi 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
Aplikacja powinna teraz mieć uprawnienia dostępu do wpisów tajnych przechowywanych w usłudze Azure Key Vault.