Cvičení – zabezpečení aplikace v Javě z hlediska operátora IT

Dokončeno

V této lekci pomocí Azure CLI udělíte aplikaci v Javě přístup k tajným kódům služby Azure Key Vault.

Hrajete roli operátora IT, který tyto tajné kódy spravuje a uděluje jim přístup.

Ukládání tajných kódů do služby Azure Key Vault

V aplikaci jste měli k uložení dva tajné kódy:

  • ${azureDatabaseName} je název databáze PostgreSQL, která byla nakonfigurovaná dříve v AZ_DATABASE_NAME proměnné prostředí. Zadáním echo $AZ_DATABASE_NAME ho zobrazíte.
  • ${azureDatabaseUsername} je název uživatelského jména databáze, které bylo nakonfigurováno dříve v AZ_DATABASE_USERNAME proměnné prostředí. Zadáním echo $AZ_DATABASE_USERNAME ho zobrazíte.
  • ${azureDatabasePassword} je název hesla databáze, které bylo nakonfigurováno dříve v AZ_DATABASE_PASSWORD proměnné prostředí. Zadáním echo $AZ_DATABASE_PASSWORD ho zobrazíte.

Pojďme vytvořit instanci služby Azure Key Vault a uložit do ní tyto tajné kódy:

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}

Udělení přístupu k Azure Key Vaultu vaší aplikaci

Aby vaše aplikace Spring Boot měla přístup ke službě Azure Key Vault, musí mít nejprve přiřazenou identitu Azure.

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

Musíte také nakonfigurovat aplikaci Spring Boot se dvěma proměnnými prostředí. První proměnnou je povolení služby Azure Key Vault. Druhou proměnnou je poskytnout adresu URL vaší instanci služby Azure Key Vault. Spuštění tohoto příkazu může trvat několik 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/

Pak musíte aplikaci udělit přístup k instanci služby 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

Vaše aplikace by teď měla mít oprávnění pro přístup k tajným kódům uloženým ve službě Azure Key Vault.