تمرين - تأمين تطبيق 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.