Übung: Schützen einer Java-Anwendung aus der Perspektive von IT-Operator*innen
In dieser Lerneinheit verwenden Sie die Azure CLI, um Ihrer Java-Anwendung Zugriff auf die Azure Key Vault-Geheimnisse zu gewähren.
Sie spielen die Rolle eines IT-Operators bzw. einer IT-Operatorin, der bzw. die diese Geheimnisse verwaltet und Zugriff auf diese gewährt.
Speichern von Geheimnissen in Azure Key Vault
In Ihrer Anwendung mussten zwei Geheimnisse gespeichert werden:
${azureDatabaseName}
ist der Name der PostgreSQL-Datenbank, die zuvor in der UmgebungsvariablenAZ_DATABASE_NAME
konfiguriert wurde. Geben Sieecho $AZ_DATABASE_NAME
ein, um diesen anzuzeigen.${azureDatabaseUsername}
ist der Datenbank-Benutzername, die zuvor in der UmgebungsvariablenAZ_DATABASE_USERNAME
konfiguriert wurde. Geben Sieecho $AZ_DATABASE_USERNAME
ein, um diesen anzuzeigen.${azureDatabasePassword}
ist das Datenbankkennwort, das zuvor in der UmgebungsvariablenAZ_DATABASE_PASSWORD
konfiguriert wurde. Geben Sieecho $AZ_DATABASE_PASSWORD
ein, um dieses anzuzeigen.
Erstellen Sie eine Azure Key Vault-Instanz, und speichern Sie diese Geheimnisse darin:
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}
Gewähren von Zugriff auf Azure Key Vault
Um auf Azure Key Vault zugreifen zu können, muss Ihrer Spring Boot-Anwendung zunächst eine Azure-Identität zugewiesen werden.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
Außerdem müssen Sie Ihre Spring Boot-Anwendung mit zwei Umgebungsvariablen konfigurieren. Mit der ersten Variable wird Azure Key Vault aktiviert. Mit der zweiten Variable wird die URL an Ihre Azure Key Vault-Instanz übergeben. Die Ausführung dieses Befehls kann mehrere Minuten dauern.
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/
Anschließend müssen Sie Ihrer Anwendung Zugriff auf die Azure Key Vault-Instanz gewähren.
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
Ihre Anwendung sollte jetzt über die Berechtigungen für den Zugriff auf die in Azure Key Vault gespeicherten Geheimnisse verfügen.