Latihan - Mengamankan aplikasi Java dari perspektif operator TI

Selesai

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 lingkungan AZ_DATABASE_NAME. Ketik echo $AZ_DATABASE_NAME untuk melihatnya.
  • ${azureDatabaseUsername} adalah nama dari nama pengguna database yang dikonfigurasi sebelumnya di variabel lingkungan AZ_DATABASE_USERNAME. Ketik echo $AZ_DATABASE_USERNAME untuk melihatnya.
  • ${azureDatabasePassword} adalah nama kata sandi database yang dikonfigurasi sebelumnya di variabel lingkungan AZ_DATABASE_PASSWORD. Ketik echo $AZ_DATABASE_PASSWORD untuk 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.