Latihan - Mengamankan aplikasi Java dari perspektif operator TI
Di unit ini, Anda menggunakan Azure CLI untuk memberikan akses aplikasi Java Anda ke rahasia Azure Key Vault.
Anda memainkan peran operator TI, yang mengelola rahasia tersebut dan memberikan akses kepada mereka.
Menyimpan rahasia ke Azure Key Vault
Dalam aplikasi Anda, Anda memiliki dua rahasia untuk disimpan:
-
${azureDatabaseName}adalah nama database PostgreSQL yang dikonfigurasi sebelumnya di variabel lingkunganAZ_DATABASE_NAME. Ketikecho $AZ_DATABASE_NAMEuntuk melihatnya. -
${azureDatabaseUsername}adalah nama dari nama pengguna database yang dikonfigurasi sebelumnya di variabel lingkunganAZ_DATABASE_USERNAME. Ketikecho $AZ_DATABASE_USERNAMEuntuk melihatnya. -
${azureDatabasePassword}adalah nama kata sandi database yang dikonfigurasi sebelumnya di variabel lingkunganAZ_DATABASE_PASSWORD. Ketikecho $AZ_DATABASE_PASSWORDuntuk melihatnya.
Mari membuat instans Azure Key Vault dan menyimpan rahasia itu di dalamnya:
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}
Memberikan akses aplikasi Anda ke Azure Key Vault
Untuk mengakses Azure Key Vault, aplikasi Spring Boot Anda harus terlebih dahulu memiliki identitas Azure yang ditetapkan.
az spring app identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_CLOUD \
--name application \
--system-assigned
Anda juga perlu mengonfigurasi aplikasi Spring Boot Anda dengan dua variabel lingkungan. Variabel pertama adalah mengaktifkan Azure Key Vault. Variabel kedua adalah memberikan URL ke instans Azure Key Vault Anda. Perintah ini dapat memakan waktu beberapa menit untuk dijalankan.
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/
Kemudian, Anda perlu memberikan akses aplikasi ke instans 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
Aplikasi Anda sekarang harus memiliki izin untuk mengakses rahasia yang disimpan di Azure Key Vault.