練習 - 從 IT 操作員的觀點保護 Java 應用程式
在此單元中,您將使用 Azure CLI,為 Java 應用程式授與對 Azure Key Vault 祕密的存取權。
您將擁有 IT 操作員的角色,其將管理那些祕密,並授與對它們的存取權。
將祕密儲存在 Azure Key Vault 中
在您的應用程式中,您有兩個要儲存的祕密:
${azureDatabaseName}
是稍早已在AZ_DATABASE_NAME
環境變數中設定的 PostgreSQL 資料庫名稱。 輸入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-cloud app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application
您也需要使用兩個環境變數來設定 Spring Boot 應用程式。 第一個變數是啟用 Azure Key Vault。 第二個變數是為您的 Azure Key Vault 執行個體提供 URL。
az spring-cloud 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-cloud 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 之祕密的權限。