Alıştırma - BT operatörü perspektifinden Java uygulamasının güvenliğini sağlama

Tamamlandı

Bu ünitede, Java uygulamanıza Azure Key Vault gizli dizilerine erişim vermek için Azure CLI'yi kullanacaksınız.

Bu gizli dizileri yöneten ve bunlara erişim izni veren bir BT operatörünün rolünü oynarsınız.

Gizli dizileri Azure Key Vault'ta depolama

Uygulamanızda depolamanız gereken iki gizli dizi vardı:

  • ${azureDatabaseName} , daha önce ortam değişkeninde yapılandırılan PostgreSQL veritabanının AZ_DATABASE_NAME adıdır. Görmek için yazın echo $AZ_DATABASE_NAME .
  • ${azureDatabaseUsername} , ortam değişkeninde daha önce AZ_DATABASE_USERNAME yapılandırılan veritabanı kullanıcı adının adıdır. Görmek için yazın echo $AZ_DATABASE_USERNAME .
  • ${azureDatabasePassword} , ortam değişkeninde daha önce yapılandırılan veritabanı parolasının AZ_DATABASE_PASSWORD adıdır. Görmek için yazın echo $AZ_DATABASE_PASSWORD .

Şimdi bir Azure Key Vault örneği oluşturalım ve bu gizli dizileri içinde depolayalım:

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}

Uygulamanıza Azure Key Vault erişimi verme

Azure Key Vault'a erişmek için Spring Boot uygulamanızın önce bir Azure kimliği atanmış olması gerekir.

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

Spring Boot uygulamanızı iki ortam değişkeniyle de yapılandırmanız gerekir. İlk değişken Azure Key Vault'un etkinleştirilmesidir. İkinci değişken, Azure Key Vault örneğinizin URL'sini vermektir. Bu komutun çalıştırılması birkaç dakika sürebilir.

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/

Ardından, uygulamanıza Azure Key Vault örneğine erişim vermeniz gerekir.

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

Uygulamanızın artık Azure Key Vault'ta depolanan gizli dizilere erişme izinlerine sahip olması gerekir.