المصادقة مقابل موارد Azure باستخدام ملقمات Azure Arc الممكنة
يمكن للتطبيقات أو العمليات التي تعمل مباشرة على خوادم ممكنة ل Azure Arc استخدام الهويات المدارة للوصول إلى موارد Azure الأخرى التي تدعم المصادقة المستندة إلى معرف Microsoft Entra. يمكن للتطبيق الحصول على رمز مميز للوصول يمثل هويته، والذي تم تعيينه من قبل النظام للخوادم التي تدعم Azure Arc، واستخدامه كرمز مميز "حامل" لمصادقة نفسه على خدمة أخرى.
راجع وثائق نظرة عامة على الهوية المدارة للحصول على وصف مفصل للهويات المدارة، وفهم التمييز بين الهويات المعينة من قبل النظام والهويات المعينة من قبل المستخدم.
في هذه المقالة، نعرض لك كيف يمكن للخادم استخدام هوية مدارة معينة من قبل النظام للوصول إلى Azure Key Vault. يعمل Key Vault كتمهيد، يجعل من الممكن لتطبيق العميل الخاص بك استخدام سر للوصول إلى الموارد غير المؤمنة بواسطة معرف Microsoft Entra. على سبيل المثال، يمكن تخزين شهادات TLS/SSL المستخدمة من قبل خوادم IIS على الويب في Azure Key Vault، ونشر الشهادات بأمان إلى خوادم Windows أو Linux خارج Azure.
نظرة عامة على الأمان
أثناء إعداد الخادم الخاص بك إلى خوادم Azure Arc الممكنة، يتم تنفيذ العديد من الإجراءات للتكوين باستخدام هوية مدارة، على غرار ما يتم تنفيذه لجهاز Azure الظاهري:
يتلقى Azure Resource Manager طلبا لتمكين الهوية المدارة المعينة من قبل النظام على خادم Azure Arc الممكن.
يقوم Azure Resource Manager بإنشاء كيان خدمة في معرف Microsoft Entra لهوية الخادم. يتم إنشاء كيان الخدمة في مستأجر Microsoft Entra الموثوق به من قبل الاشتراك.
يقوم Azure Resource Manager بتكوين الهوية على الخادم عن طريق تحديث نقطة نهاية هوية خدمة بيانات تعريف مثيل Azure (IMDS) لنظام التشغيل Windows أو Linux باستخدام معرف العميل الأساسي للخدمة والشهادة. نقطة النهاية هي نقطة نهاية REST يمكن الوصول إليها فقط من داخل الخادم باستخدام عنوان IP معروف وغير قابل للتوجيه. توفر هذه الخدمة مجموعة فرعية من معلومات بيانات التعريف حول الخادم الذي يدعم Azure Arc للمساعدة في إدارته وتكوينه.
سيتم تكوين بيئة خادم ممكن للهوية المدارة مع المتغيرات التالية على خادم Windows Azure Arc الممكن:
IMDS_ENDPOINT: عنوان
http://localhost:40342
IP لنقطة نهاية IMDS للخوادم التي تدعم Azure Arc.IDENTITY_ENDPOINT: نقطة نهاية المضيف المحلي المقابلة للهوية
http://localhost:40342/metadata/identity/oauth2/token
المدارة للخدمة .
يمكن للتعليمات البرمجية التي تعمل على الخادم طلب رمز مميز من نقطة نهاية خدمة بيانات تعريف مثيل Azure، يمكن الوصول إليها فقط من داخل الخادم.
يتم استخدام متغير بيئة النظام IDENTITY_ENDPOINT لاكتشاف نقطة نهاية الهوية بواسطة التطبيقات. يجب أن تحاول التطبيقات استرداد قيم IDENTITY_ENDPOINT IMDS_ENDPOINT واستخدامها. يسمح للتطبيقات التي لها أي مستوى وصول بإجراء طلبات إلى نقاط النهاية. تتم معالجة استجابات بيانات التعريف كالمعتاد ويتم تقديمها لأي عملية على الجهاز. ومع ذلك، عند تقديم طلب من شأنه أن يعرض رمزا مميزا، نطلب من العميل توفير سر لإثبات أنه قادر على الوصول إلى البيانات المتاحة فقط للمستخدمين الذين لديهم امتيازات أعلى.
المتطلبات الأساسية
فهم الهويات المُدارة.
في Windows، يجب أن تكون عضوا في مجموعة مسؤول istrators المحلية أو مجموعة تطبيقات ملحق العامل المختلط.
على Linux، يجب أن تكون عضوا في مجموعة himds .
خادم متصل ومسجل مع خوادم Azure Arc الممكنة.
أنت عضو في مجموعة المالك في الاشتراك أو مجموعة الموارد، من أجل تنفيذ خطوات إنشاء الموارد وإدارة الأدوار المطلوبة.
Azure Key Vault لتخزين بيانات الاعتماد واستردادها، وتعيين الوصول إلى هوية Azure Arc إلى KeyVault.
- إذا لم يكن لديك Key Vault تم إنشاؤه، فشاهد إنشاء Key Vault.
- لتكوين الوصول بواسطة الهوية المدارة المستخدمة من قبل الخادم، راجع منح حق الوصول إلى Linux أو منح حق الوصول ل Windows. بالنسبة للخطوة رقم 5، ستقوم بإدخال اسم خادم Azure Arc الممكن. لإكمال ذلك باستخدام PowerShell، راجع تعيين نهج وصول باستخدام PowerShell.
الحصول على رمز مميز للوصول باستخدام REST API
طريقة الحصول على هوية مدارة معينة من قبل النظام واستخدامها للمصادقة مع موارد Azure مشابهة لكيفية تنفيذها باستخدام جهاز Azure الظاهري.
بالنسبة لخادم Windows الذي يدعم Azure Arc، باستخدام PowerShell، يمكنك استدعاء طلب الويب للحصول على الرمز المميز من المضيف المحلي في المنفذ المحدد. حدد الطلب باستخدام عنوان IP أو المتغير البيئي IDENTITY_ENDPOINT.
$apiVersion = "2020-06-01"
$resource = "https://management.azure.com/"
$endpoint = "{0}?resource={1}&api-version={2}" -f $env:IDENTITY_ENDPOINT,$resource,$apiVersion
$secretFile = ""
try
{
Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing
}
catch
{
$wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
if ($wwwAuthHeader -match "Basic realm=.+")
{
$secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
}
}
Write-Host "Secret file path: " $secretFile`n
$secret = cat -Raw $secretFile
$response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
if ($response)
{
$token = (ConvertFrom-Json -InputObject $response.Content).access_token
Write-Host "Access token: " $token
}
الاستجابة التالية هي مثال يتم إرجاعه:
بالنسبة لخادم Linux الذي يدعم Azure Arc، باستخدام Bash، يمكنك استدعاء طلب الويب للحصول على الرمز المميز من المضيف المحلي في المنفذ المحدد. حدد الطلب التالي باستخدام عنوان IP أو المتغير البيئي IDENTITY_ENDPOINT. لإكمال هذه الخطوة، تحتاج إلى عميل SSH.
CHALLENGE_TOKEN_PATH=$(curl -s -D - -H Metadata:true "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com" | grep Www-Authenticate | cut -d "=" -f 2 | tr -d "[:cntrl:]")
CHALLENGE_TOKEN=$(cat $CHALLENGE_TOKEN_PATH)
if [ $? -ne 0 ]; then
echo "Could not retrieve challenge token, double check that this command is run with root privileges."
else
curl -s -H Metadata:true -H "Authorization: Basic $CHALLENGE_TOKEN" "http://127.0.0.1:40342/metadata/identity/oauth2/token?api-version=2019-11-01&resource=https%3A%2F%2Fmanagement.azure.com"
fi
الاستجابة التالية هي مثال يتم إرجاعه:
تتضمن الاستجابة رمز الوصول الذي تحتاجه للوصول إلى أي مورد في Azure. لإكمال التكوين للمصادقة على Azure Key Vault، راجع Access Key Vault مع Windows أو Access Key Vault مع Linux.
الخطوات التالية
لمعرفة المزيد حول Azure Key Vault، راجع نظرة عامة على Key Vault.
تعرف على كيفية تعيين وصول هوية مدارة إلى مورد باستخدام PowerShell أو باستخدام Azure CLI.