الترحيل إلى الوصول متعدد المستويات المستند إلى الدور لتكوينات المجموعة
نحن نقدم بعض التغييرات المهمة لدعم مزيد من الوصول الدقيق المستند إلى الدور للحصول على معلومات حساسة. كجزء من هذه التغييرات، قد يلزم اتخاذ بعض الإجراءات بحلول 3 (سبتمبر) 2019 إذا كنت تستخدم أحد الكيانات/السيناريوهات المتأثرة.
ما الذي يتغير؟
في السابق، يمكن الحصول على بيانات سرية عبر واجهة برمجة التطبيقات في HDInsight من قبل مستخدمي نظام المجموعة الذين يمتلكون أدوار المالك أو المساهم أو القارئ في Azure، حيث كانت متاحة لأي شخص لديه إذن */read
. يتم تعريف البيانات السرية على أنها قيم يمكن استخدامها للحصول على وصول أكثر تقييداً من المسموح به لدور المستخدم. تتضمن هذه قيماً مثل بيانات اعتماد HTTP لبوابة نظام المجموعة ومفاتيح حساب التخزين وبيانات اعتماد قاعدة البيانات.
بدءا من 3 سبتمبر 2019، سيتطلب Microsoft.HDInsight/clusters/configurations/action
الوصول إلى هذه الأسرار الإذن، ولا يمكن للمستخدم الوصول إليها باستخدام دور القارئ. الأدوار التي لديها هذا الإذن هي المساهم والمالك ودور مشغل نظام مجموعة HDInsight الجديد.
كما نقدم أيضا دورا جديدا لعامل تشغيل نظام مجموعة HDInsight قادر على استرداد الأسرار دون منح الأذونات الإدارية للمساهم أو المالك. للتلخيص:
الدور | سابقاً | فيما بعد |
---|---|---|
القارئ | - وصول للقراءة، بما في ذلك البيانات السرية. | - وصول للقراءة، باستثناء البيانات السرية |
عامل تشغيل نظام مجموعة HDInsight (دور جديد) |
غير متاح | - الوصول للقراءة /الكتابة، بما في ذلك البيانات السرية |
المساهم | - الوصول للقراءة/الكتابة، بما في ذلك البيانات السرية. - إنشاء جميع أنواع موارد Azure وإدارتها. - تنفيذ إجراءات البرنامج النصي. |
بلا تغيير |
المالك | - الوصول للقراءة/الكتابة بما في ذلك البيانات السرية. - الوصول الكامل إلى جميع الموارد تفويض الوصول للآخرين - تنفيذ إجراءات البرنامج النصي. |
بلا تغيير |
للحصول على معلومات حول كيفية إضافة تعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم من أجل منحه حق الوصول للقراءة/الكتابة إلى البيانات السرية لنظام المجموعة، راجع القسم أدناه، إضافة تعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم.
هل أنت متأثر بهذه التغييرات؟
تتأثر الكيانات والسيناريوهات التالية:
- واجهة برمجة التطبيقات: المستخدمون الذين يستخدمون نقاط نهاية
/configurations
أو/configurations/{configurationName}
. - Azure HDInsight Tools for Visual Studio Code الإصدار 1.1.1 أو إصدار أقدم.
- Azure Toolkit for IntelliJ الإصدار 3.20.0 أو إصدار أقدم.
- Azure Data Lake وأدوات Stream Analytics ل Visual Studio الإصدار 2.3.9000.1.
- Azure Toolkit لـ Eclipse الإصدار 3.15.0 أو إصدار أقدم.
- SDK لـ .NET
- الإصدارات 1.x أو 2.x: المستخدمون الذين يستخدمون أساليب
GetClusterConfigurations
أوGetConnectivitySettings
أوConfigureHttpSettings
أوEnableHttp
أوDisableHttp
من فئة ConfigurationsOperationsExtensions. - الإصدارات 3.x والأحدث: المستخدمون الذين يستخدمون أساليب
Get
أوUpdate
أوEnableHttp
أوDisableHttp
من الفئةConfigurationsOperationsExtensions
.
- الإصدارات 1.x أو 2.x: المستخدمون الذين يستخدمون أساليب
- SDK للغة Python: المستخدمون الذين يستخدمون أساليب
get
أوupdate
من الفئةConfigurationsOperations
. - SDK لـJava: المستخدمون الذين يستخدمون أساليب
update
أوget
من الفئةConfigurationsInner
. - SDK لـ Go: المستخدمون الذين يستخدمون أساليب
Get
أوUpdate
من الهيكلConfigurationsClient
. - Az.HDInsight PowerShell الإصدار 2.0.0. راجع الأقسام أدناه (أو استخدم الارتباطات أعلاه) للاطلاع على خطوات الترحيل المتعلقة بالسيناريو الخاص بك.
API
يتم تغيير واجهات برمجة التطبيقات التالية أو إهمالها:
- GET /configurations/{configurationName} (تمت إزالة المعلومات الحساسة)
- تم استخدامه مسبقاً للحصول على أنواع التكوين الفردية (بما في ذلك البيانات السرية).
- اعتباراً من 3 سبتمبر 2019، سيعيد استدعاء واجهة برمجة التطبيقات هذا أنواع التكوين الفردية مع حذف البيانات السرية. للحصول على جميع التكوينات، بما في ذلك البيانات السرية، استخدم استدعاء POST /configurations الجديد. للحصول على إعدادات البوابة فقط، استخدم استدعاءPOST /getGatewaySettings الجديد.
- GET /configurations (مهمل)
- تم استخدامه مسبقاً للحصول على جميع التكوينات (بما في ذلك البيانات السرية)
- اعتباراً من 3 سبتمبر 2019، سيتم إهمال استدعاء واجهة برمجة التطبيقات هذا ولن يظل مدعوماً. للحصول على جميع التكوينات من الآن فصاعداً، استخدم استدعاء POST /configurations الجديد. للحصول على تكوينات مع حذف معلمات حساسة، استخدم استدعاء GET / configurations / {configurationName}.
- POST /configurations/{configurationName} (مهمل)
- تم استخدامه مسبقاً لتحديث بيانات اعتماد البوابة.
- اعتباراً من 3 سبتمبر 2019، سيتم إهمال استدعاء واجهة برمجة التطبيقات هذا ولن يظل مدعوماً. استخدم POST / updateGatewaySettings الجديدة بدلاً من ذلك.
تمت إضافة واجهات برمجة التطبيقات البديلة التالية:
- POST /configurations
- استخدم واجهة برمجة التطبيقات هذه للحصول على جميع التكوينات، بما في ذلك البيانات السرية.
- POST /getGatewaySettings
- استخدم واجهة برمجة التطبيقات هذه للحصول على إعدادات البوابة.
- POST /updateGatewaySettings
- استخدم واجهة برمجة التطبيقات هذه لتحديث إعدادات البوابة (اسم المستخدم و/أو كلمة المرور).
Azure HDInsight Tools لـ Visual Studio Code
إذا كنت تستخدم الإصدار 1.1.1 أو إصداراً أقدم، فقم بالتحديث إلى أحدث إصدار من Azure HDInsight Tools لـ Visual Studio Code لتجنب حدوث انقطاع.
Azure Toolkit لـ IntelliJ
إذا كنت تستخدم الإصدار 3.20.0 أو إصداراً أقدم، فقم بالتحديث إلى أحدث إصدار من Azure Toolkit لـ IntelliJ plugin لتجنب حدوث انقطاع.
Azure Data Lake وStream Analytics Tools لـ Visual Studio
قم بالتحديث إلى الإصدار 2.3.9000.1 أو الأحدث من Azure Data Lake وStream Analytics Tools لـ Visual Studio لتجنب حدوث انقطاع. للحصول على مساعدة في التحديث، راجع الوثائق الخاصة بنا، تحديثData Lake Tools لـ Visual Studio.
مجموعة أدوات Azure Toolkit لـ Eclipse
إذا كنت تستخدم الإصدار 3.15.0 أو إصداراً أقدم، فقم بالتحديث إلى أحدث إصدار من مجموعة أدوات Azure Toolkit لـ Eclipse لتجنب حدوث انقطاع.
SDK لـ .NET
الإصداران 1.x و2.x.
التحديث إلى الإصدار 2.1.0 من HDInsight SDK لـ.NET. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:
ClusterOperationsExtensions.GetClusterConfigurations
لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ClusterOperationsExtensions.ListConfigurations
فيما بعد. لا يمكن للمستخدمين الذين لديهم دور "القارئ" استخدام هذا الأسلوب. يسمح بالتحكم الدقيق في المستخدمين الذين يمكنهم الوصول إلى المعلومات الحساسة لنظام المجموعة. - لاسترداد بيانات اعتماد بوابة HTTP فقط، استخدم
ClusterOperationsExtensions.GetGatewaySettings
.
- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ClusterOperationsExtensions.GetConnectivitySettings
مهمل الآن وتم استبداله بـClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
مهمل الآن وتم استبداله بـClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
وDisableHttp
مهملان الآن. يتم الآن تمكين HTTP دائماً، لذلك لم تعد هناك حاجة إلى هذه الأساليب.
الإصدارات 3.x والإصدارات الأحدث
قم بالتحديث إلى الإصدار 5.0.0 أو أحدث من HDInsight SDK لـ .NET. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:
ConfigurationOperationsExtensions.Get
لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ConfigurationOperationsExtensions.List
فيما بعد. لا يمكن للمستخدمين الذين لديهم دور "القارئ" استخدام هذا الأسلوب. يسمح بالتحكم الدقيق في المستخدمين الذين يمكنهم الوصول إلى المعلومات الحساسة لنظام المجموعة. - لاسترداد بيانات اعتماد بوابة HTTP فقط، استخدم
ClusterOperationsExtensions.GetGatewaySettings
.
- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ConfigurationsOperationsExtensions.Update
مهمل الآن وتم استبداله بـClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
وDisableHttp
مهملان الآن. يتم الآن تمكين HTTP دائماً، لذلك لم تعد هناك حاجة إلى هذه الأساليب.
SDK لـ Python
قم بالتحديث إلى الإصدار 1.0.0 أو أحدث من HDInsight SDK لـ Python. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:
ConfigurationsOperations.get
لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ConfigurationsOperations.list
فيما بعد. لا يمكن للمستخدمين الذين لديهم دور "القارئ" استخدام هذا الأسلوب. يسمح بالتحكم الدقيق في المستخدمين الذين يمكنهم الوصول إلى المعلومات الحساسة لنظام المجموعة. - لاسترداد بيانات اعتماد بوابة HTTP فقط، استخدم
ClusterOperations.get_gateway_settings
.
- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ConfigurationsOperations.update
مهمل الآن وتم استبداله بـClusterOperations.update_gateway_settings
.
SDK لـ Java
قم بالتحديث إلى الإصدار 1.0.0 أو أحدث من HDInsight SDK لـJava. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:
ConfigurationsInner.get
لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).ConfigurationsInner.update
مهمل الآن.
SDK لـ Go
قم بالتحديث إلى الإصدار 27.1.0 أو أحدث من HDInsight SDK لـGo. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات:
ConfigurationsClient.get
لن يتم إرجاع المعلمات الحساسة مثل مفاتيح التخزين (الموقع الأساسي) أو بيانات اعتماد HTTP (البوابة).- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ConfigurationsClient.list
فيما بعد. لا يمكن للمستخدمين الذين لديهم دور "القارئ" استخدام هذا الأسلوب. يسمح بالتحكم الدقيق في المستخدمين الذين يمكنهم الوصول إلى المعلومات الحساسة لنظام المجموعة. - لاسترداد بيانات اعتماد بوابة HTTP فقط، استخدم
ClustersClient.get_gateway_settings
.
- لاسترداد جميع التكوينات، بما في ذلك المعلمات الحساسة، استخدم
ConfigurationsClient.update
مهمل الآن وتم استبداله بـClustersClient.update_gateway_settings
.
Az.HDInsight PowerShell
قم بالتحديث إلى الإصدار 2.0.0 من Az PowerShell أو إصدار أحدث لتجنب حدوث انقطاع. قد يتطلب الأمر الحد الأدنى من تعديلات التعليمة البرمجية إذا كنت تستخدم أسلوباً متأثراً بهذه التغييرات.
Grant-AzHDInsightHttpServicesAccess
مهمل الآن وتم استبداله بـSet-AzHDInsightGatewayCredential
cmdlet الجديد.- تم تحديث
Get-AzHDInsightJobOutput
لدعم الوصول الدقيق المستند إلى الدور إلى مفتاح التخزين.- لا يتأثر المستخدمون الذين لديهم أدوار مشغل نظام مجموعة HDInsight أو المساهم أو المالك.
- يحتاج المستخدمون الذين لديهم دور القارئ فقط إلى تحديد المعلمة
DefaultStorageAccountKey
بشكل صريح.
Revoke-AzHDInsightHttpServicesAccess
مهمل الآن. يتم الآن تمكين HTTP دائماً، لذا لم تعد هناك حاجة إلى cmdlet هذا بعد الآن. راجع دليل ترحيل az.HDInsight للحصول على مزيد من التفاصيل.
قم بإضافة تعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم
يمكن لمستخدم يمتلك دور المالك تعيين دور عامل تشغيل مجموعة HDInsight للمستخدمين الذين قد ترغب في حصولهم على حق الوصول للقراءة/الكتابة إلى قيم تكوين نظام مجموعة HDInsight الحساسة (مثل بيانات اعتماد بوابة نظام المجموعة ومفاتيح حساب التخزين).
استخدام Azure CLI
إن أبسط أسلوب لإضافة تعيين هذا الدور هي باستخدام الأمر az role assignment create
في Azure CLI.
إشعار
يجب تشغيل هذا الأمر من قبل مستخدم يمتلك دور المالك، حيث يمكنه فقط منح هذه الأذونات. --assignee
هو اسم كيان الخدمة أو عنوان البريد الإلكتروني للمستخدم الذي تريد أن تُعيِّن له دور عامل التشغيل لنظام مجموعة HDInsight. إذا تلقيت خطأ أذونات غير كاف، فشاهد الأسئلة المتداولة.
منح دور على مستوى المورد (نظام المجموعة)
az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>
منح دور على مستوى مجموعة الموارد
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>
منح دور على مستوى الاشتراك
az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com
استخدام مدخل Microsoft Azure
يمكنك بدلاً من ذلك استخدام مدخل Microsoft Azure لإضافة تعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم. راجع الوثائق، تعيين أدوار Azure باستخدام مدخل Microsoft Azure.
الأسئلة المتداولة
لماذا أرى استجابة 403 (محظور) بعد تحديث طلبات و/أو أداة واجهة برمجة التطبيقات الخاصة بي؟
تخضع تكوينات نظام المجموعة الآن للتحكم في الوصول المتعدد المستويات المستند إلى الدور وتتطلب إذن Microsoft.HDInsight/clusters/configurations/*
للوصول إليها. للحصول على هذا الإذن، قم بتعيين دور عامل تشغيل نظام مجموعة HDInsight أو المساهم أو المالك للمستخدم أو كيان الخدمة الذي يحاول الوصول إلى التكوينات.
لماذا أرى "امتيازات غير كافية لإكمال العملية" عند تشغيل أمر Azure CLI لتعيين دور عامل تشغيل نظام مجموعة HDInsight لمستخدم آخر أو كيان خدمة آخر؟
بالإضافة إلى وجود دور المالك، يحتاج المستخدم أو كيان الخدمة الذي ينفذ الأمر إلى الحصول على أذونات Microsoft Entra كافية للبحث عن معرفات الكائن للمعين له. تشير هذه الرسالة إلى أذونات Microsoft Entra غير كافية. حاول استبدال الوسيطة -–assignee
بـ –assignee-object-id
وقم بتوفير معرف الكائن للمعين له كمعلمة بدلاً من الاسم (أو معرف الكيان في حالة هوية مُدارة). راجع قسم المعلمات الاختيارية في وثائق إنشاء تعيين دور az لمزيد من المعلومات.
إذا كان لا يزال لا يعمل، فاتصل بمسؤول Microsoft Entra للحصول على الأذونات الصحيحة.
ماذا سيحدث إذا لم أتخذ أي إجراء؟
اعتباراً من 3 سبتمبر 2019، لن يقوم الاستدعاء GET /configurations
وPOST /configurations/gateway
بإرجاع أي معلومات ولن يقوم الاستدعاء GET /configurations/{configurationName}
بإرجاع معلمات حساسة، مثل مفاتيح حساب التخزين أو كلمة مرور نظام المجموعة. وينطبق الشيء نفسه على أساليب SDK وPowerShell cmdlets.
إذا كنت تستخدم إصدارا قديما من إحدى الأدوات ل Visual Studio أو VSCode أو IntelliJ أو Eclipse المذكور، فلن يعمل حتى تقوم بتحديثه.
لمزيد من المعلومات التفصيلية، راجع القسم المقابل في هذا المستند لمعرفة السيناريو الخاص بك.