Упражнение. Защита приложения Java с точки зрения ИТ-оператора
В этом уроке вы используете Azure CLI для предоставления приложению Java доступа к секретам Azure Key Vault.
Вы играете роль ИТ-оператора, который управляет этими секретами и предоставляет им доступ.
Хранение секретов в Azure Key Vault
В вашем приложении имелось два секрета для хранения:
${azureDatabaseName}
— имя базы данных PostgreSQL, которое было настроено ранее в переменной средыAZ_DATABASE_NAME
. Введитеecho $AZ_DATABASE_NAME
, чтобы отобразить его.${azureDatabaseUsername}
— имя пользователя базы данных, которое было настроено ранее в переменной средыAZ_DATABASE_USERNAME
. Введитеecho $AZ_DATABASE_USERNAME
, чтобы отобразить его.${azureDatabasePassword}
— пароль базы данных, который был настроен ранее в переменной средыAZ_DATABASE_PASSWORD
. Введитеecho $AZ_DATABASE_PASSWORD
, чтобы отобразить его.
Давайте создадим экземпляр Azure Key Vault и сохраним эти секреты:
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}
Предоставление приложению доступ к Azure Key Vault
Чтобы получить доступ к Azure Key Vault, приложению Spring Boot сначала необходимо назначить удостоверение Azure.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
Кроме того, необходимо настроить приложение Spring Boot с двумя переменными среды. Первая переменная — для включения Azure Key Vault. Вторая переменная — для предоставления URL-адреса экземпляру Azure Key Vault. Эта команда может занять несколько минут.
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/
Затем необходимо предоставить приложению доступ к экземпляру 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
Теперь у приложения имеются разрешения на доступ к секретам, хранящимся в Azure Key Vault.