المصادقة مقابل موارد Azure باستخدام ملقمات Azure Arc الممكنة
يمكن للتطبيقات أو العمليات التي تعمل مباشرة على خوادم تدعم Azure Arc استخدام الهويات المدارة للوصول إلى موارد Azure الأخرى التي تدعم المصادقة المستندة إلى Azure Active Directory. يمكن للتطبيق الحصول على رمز وصول يمثل هويته، والذي يتم تعيينه بواسطة النظام للخوادم التي تدعم Azure Arc، واستخدامه كرمز مميز "حامل" لمصادقة نفسه على خدمة أخرى.
ارجع إلى وثائق نظرة عامة على الهوية المدارة للحصول على وصف مفصل للهويات المدارة ، وافهم التمييز بين الهويات المعينة من قبل النظام والهويات المعينة من قبل المستخدم.
في هذه المقالة، نوضح لك كيف يمكن للخادم استخدام هوية مدارة تم تعيينها بواسطة النظام للوصول إلى Azure Key Vault. يعمل Key Vault، الذي يعمل بمثابة تمهيد للتشغيل، على تمكين تطبيق العميل الخاص بك من استخدام سرٍّ للوصول إلى الموارد غير المؤمنة بواسطة Microsoft Azure Active Directory (AD). على سبيل المثال، يمكن تخزين شهادات TLS/SSL التي تستخدمها خوادم ويب IIS في Azure Key Vault، ونشر الشهادات بأمان على خوادم Windows أو Linux خارج Azure.
نظرة عامة على الأمان
أثناء إعداد الخادم الخاص بك إلى خوادم تدعم Azure Arc، يتم تنفيذ العديد من الإجراءات للتكوين باستخدام هوية مدارة، على غرار ما يتم تنفيذه لجهاز Azure الظاهري:
يتلقى Azure Resource Manager طلبا لتمكين الهوية المدارة المعينة من قبل النظام على الخادم الذي تم تمكين Azure Arc.
Azure Resource Manager بإنشاء خدمة رئيسية في Azure AD لهوية الخادم. يتم إنشاء كيان الخدمة في مستأجر Azure AD الموثوق به من الاشتراك.
يقوم Azure Resource Manager بتكوين الهوية على الخادم عن طريق تحديث نقطة نهاية هوية خدمة بيانات تعريف مثيل Azure (IMDS) Windows أو Linux باستخدام معرف العميل الرئيسي للخدمة وشهادته. نقطة النهاية هي نقطة نهاية REST لا يمكن الوصول إليها إلا من داخل الخادم باستخدام عنوان IP معروف وغير قابل للتوجيه. توفر هذه الخدمة مجموعة فرعية من معلومات بيانات التعريف حول الخادم الذي يدعم Azure Arc للمساعدة في إدارته وتكوينه.
سيتم تكوين بيئة الخادم المدعوم بالهوية المدارة باستخدام المتغيرات التالية على خادم Windows Azure Arc:
IMDS_ENDPOINT: عنوان
http://localhost:40342IP لنقطة نهاية IMDS للخوادم التي تدعم Azure Arc.IDENTITY_ENDPOINT: نقطة نهاية المضيف المحلي المقابلة للهوية
http://localhost:40342/metadata/identity/oauth2/tokenالمدارة للخدمة .
يمكن للتعليمات البرمجية التي تعمل على الخادم طلب رمز مميز من نقطة نهاية خدمة بيانات تعريف مثيل Azure، والتي يمكن الوصول إليها فقط من داخل الخادم.
يتم استخدام متغير بيئة النظام IDENTITY_ENDPOINT لاكتشاف نقطة نهاية الهوية بواسطة التطبيقات. يجب أن تحاول التطبيقات استرداد IDENTITY_ENDPOINT وقيم IMDS_ENDPOINT واستخدامها. يسمح للتطبيقات ذات أي مستوى وصول بتقديم طلبات إلى نقاط النهاية. يتم التعامل مع استجابات البيانات الوصفية كالمعتاد وإعطائها لأي عملية على الجهاز. ومع ذلك ، عندما يتم تقديم طلب من شأنه أن يكشف عن رمز مميز ، فإننا نطلب من العميل تقديم سر يشهد بأنه قادر على الوصول إلى البيانات المتاحة فقط للمستخدمين ذوي الامتيازات الأعلى.
المتطلبات الأساسية
فهم الهويات المُدارة.
في Windows، يجب أن تكون عضوا في مجموعة المسؤولين المحليين أو مجموعة تطبيقات ملحق العامل المختلط.
على Linux ، يجب أن تكون عضوا في مجموعة himds .
خادم متصل ومسجل مع خوادم تدعم Azure Arc.
أنت عضو في مجموعة المالك في مجموعة الاشتراك أو الموارد، لتنفيذ خطوات إنشاء الموارد وإدارة الدور المطلوبة.
Key Vault Azure لتخزين بيانات الاعتماد الخاصة بك واستردادها، وتعيين الوصول إلى هوية Azure Arc إلى KeyVault.
- إذا لم يكن لديك Key Vault تم إنشاؤه، فراجع إنشاء Key Vault.
- لتكوين الوصول بواسطة الهوية المدارة التي يستخدمها الخادم، راجع منح حق الوصول لنظام التشغيل Linux أو منح حق الوصولWindows. بالنسبة للخطوة رقم 5 ، ستقوم بإدخال اسم الخادم الذي تم تمكين Azure Arc. لإكمال ذلك باستخدام PowerShell، راجع تعيين نهج وصول باستخدام PowerShell.
الحصول على رمز وصول مميز باستخدام واجهة برمجة تطبيقات REST
تشبه طريقة الحصول على هوية مدارة معينة من قبل النظام واستخدامها للمصادقة باستخدام موارد 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.
ChallengeTokenPath=$(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:]")
ChallengeToken=$(cat $ChallengeTokenPath)
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 $ChallengeToken" "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، راجع الوصول Key Vault مع Windows أو الوصول Key Vault معLinux.
الخطوات التالية
لمعرفة المزيد حول Azure Key Vault، راجع نظرة عامة Key Vault.
تعرف على كيفية تعيين وصول هوية مدار إلى مورد باستخدام PowerShell أو باستخدامAzure CLI.