مصادقة تطبيقات Azure Spring مع Azure Key Vault في إجراءات GitHub
إشعار
سيتم إهمال الخطط الأساسية والقياسية والمؤسسة بدءا من منتصف مارس 2025، مع فترة تقاعد 3 سنوات. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع إعلان إيقاف Azure Spring Apps.
سيتم إهمال الاستهلاك القياسي والخطة المخصصة بدءا من 30 سبتمبر 2024، مع إيقاف التشغيل الكامل بعد ستة أشهر. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع ترحيل استهلاك Azure Spring Apps القياسي وخطة مخصصة إلى Azure Container Apps.
تنطبق هذه المقالة على: ✔️ Java ✔️ C#
تنطبق هذه المقالة على: ✔️ Basic/Standard ✔️ Enterprise
توضح هذه المقالة كيفية استخدام Key Vault لتطبيقات Azure Spring باستخدام إجراءات GitHub.
Key Vault هو مكان آمن لتخزين المفاتيح. يحتاج مستخدمو المؤسسة إلى تخزين بيانات الاعتماد لبيئات CI/CD في النطاق الذي يتحكمون فيه. يجب أن يقتصر مفتاح الحصول على بيانات الاعتماد في مخزن المفاتيح على نطاق المورد. لديه حق الوصول إلى نطاق مخزن المفاتيح فقط، وليس نطاق Azure بأكمله. إنه مثل المفتاح الذي يمكن أن يفتح صندوقاً قوياً فقط وليس مفتاحاً رئيسياً يمكنه فتح جميع الأبواب في المبنى. إنها طريقة للحصول على مفتاح بمفتاح آخر، وهو أمر مفيد في سير عمل CICD.
إنشاء بيانات اعتماد
لإنشاء مفتاح للوصول إلى مخزن المفاتيح، نفّذ الأمر أدناه على الكمبيوتر المحلي:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT> --json-auth
يحد النطاق المحدد بواسطة المعلمة --scopes
من وصول المفتاح إلى المورد. يمكنه الوصول إلى الصندوق القوي فقط.
مع النتائج:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
ثم احفظ النتائج إلى البيانات السرية GitHub كما هو موضح في إعداد مستودع GitHub والمصادقة باستخدام Azure.
إضافة نُهج الوصول لبيانات الاعتماد
يمكن أن تحصل بيانات الاعتماد التي قمت بإنشائها أعلاه على معلومات عامة فقط حول Key Vault، وليس المحتويات التي تخزنها. للحصول على البيانات السرية المخزنة في Key Vault، عليك تعيين نهج الوصول لبيانات الاعتماد.
انتقل إلى لوحة معلومات Key Vault في مدخل Microsoft Azure، وحدد قائمة Access control، ثم افتح علامة التبويب Role assignments. حدد Apps لـ Type وThis resource
لـ scope. يجب أن تشاهد بيانات الاعتماد التي قمت بإنشائها في الخطوة السابقة:
انسخ اسم بيانات الاعتماد، على سبيل المثال azure-cli-2020-01-19-04-39-02
. افتح قائمة Access policies، ثم حدد الارتباط إضافة نهج الوصول. حدد Secret Management
لـ Template، ثم حدد Principal. الصق اسم بيانات الاعتماد في مربع الإدخال Principal/Select:
حدد الزر Add في مربع الحوار Add access policy، ثم حدد Save.
إنشاء بيانات اعتماد Azure كاملة النطاق
هذا هو المفتاح الرئيسي لفتح جميع الأبواب في المبنى. الإجراء مشابه للخطوة السابقة، ولكننا هنا نغير النطاق لإنشاء المفتاح الرئيسي:
az ad sp create-for-rbac --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID> --json-auth
مرة أخرى، تكون النتائج:
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
انسخ سلسلة JSON بأكملها. ارجع إلى لوحة معلومات Key Vault. افتح قائمة Secrets، ثم حدد الزر Generate/Import. أدخل اسم البيانات السرية، مثل AZURE-CREDENTIALS-FOR-SPRING
. الصق سلسلة بيانات اعتماد JSON إلى مربع إدخال Value. قد تلاحظ أن مربع إدخال القيمة عبارة عن حقل نصي من سطر واحد، بدلاً من مساحة نص متعددة الأسطر. يمكنك لصق سلسلة JSON الكاملة هناك.
دمج بيانات الاعتماد في إجراءات GitHub
تعيين بيانات الاعتماد المستخدمة عند تنفيذ البنية الأساسية لبرنامج ربط العمليات التجارية CICD:
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }} # Strong box key you generated in the first step
- uses: Azure/get-keyvault-secrets@v1.0
with:
keyvault: "<Your Key Vault Name>"
secrets: "AZURE-CREDENTIALS-FOR-SPRING" # Master key to open all doors in the building
id: keyvaultaction
- uses: azure/login@v1
with:
creds: ${{ steps.keyvaultaction.outputs.AZURE-CREDENTIALS-FOR-SPRING }}
- name: Azure CLI script
uses: azure/CLI@v1
with:
azcliversion: 2.0.75
inlineScript: |
az extension add --name spring # Spring CLI commands from here
az spring list