تمرين - تأمين تطبيق Java من منظور مشغل تكنولوجيا المعلومات

مكتمل

في هذه الوحدة، يمكنك استخدام Azure CLI لمنح تطبيق Java الخاص بك حق الوصول إلى أسرار Azure Key Vault.

تلعب دور عامل تشغيل تكنولوجيا المعلومات، الذي يدير هذه الأسرار ويمنح حق الوصول إليها.

تخزين الأسرار في Azure Key Vault

في تطبيقك، كان لديك سرين لتخزينهما:

  • ${azureDatabaseName} هو اسم قاعدة بيانات PostgreSQL التي تم تكوينها مسبقًا في متغير البيئة AZ_DATABASE_NAME. اكتب 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 app identity assign \
   --resource-group $AZ_RESOURCE_GROUP \
   --service $AZ_SPRING_CLOUD \
   --name application \
   --system-assigned

تحتاج أيضا إلى تكوين تطبيق Spring Boot الخاص بك مع متغيرين للبيئة. المتغير الأول هو تمكين Azure Key Vault. المتغير الثاني هو إعطاء عنوان URL إلى مثيل Azure Key Vault. قد يستغرق تشغيل هذا الأمر عدة دقائق.

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/

ثم تحتاج إلى منح التطبيق الخاص بك حق الوصول إلى مثيل 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

يجب أن يكون تطبيقك الآن لديه الأذونات للوصول إلى الأسرار المخزنة في Azure Key Vault.