مشاركة عبر


الهويات المدارة ل Azure Synapse Analytics

تساعدك هذه المقالة في فهم الهوية المُدارة (المعروفة سابقًا باسم Managed Service Identity/MSI) وكيف تعمل في Azure Synapse.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

نظرة عامة

الهويات المُدارة تلغي الحاجة إلى إدارة بيانات الاعتماد. توفر الهويات المدارة هوية لمثيل الخدمة عند الاتصال بالموارد التي تدعم مصادقة Microsoft Entra. على سبيل المثال، يمكن للخدمة استخدام هوية مُدارة للوصول إلى الموارد مثل Azure Key Vault ، إذ يمكن لمسؤولي البيانات تخزين بيانات الاعتماد بأمان أو الوصول إلى حسابات التخزين. تستخدم الخدمة الهوية المدارة للحصول على رموز Microsoft Entra المميزة.

هناك نوعان من الهويات المدارة المدعومة:

  • تسمح لك بعض خدمات Azure المعينة من قبل النظام بتمكين هوية مُدارة على مثيل الخدمة بشكل مباشر. عند السماح بهوية مدارة معينة من قبل النظام أثناء إنشاء الخدمة، يتم إنشاء هوية في Microsoft Entra مرتبطة لدورة حياة مثيل الخدمة هذا. حسب التصميم، يمكن لمورد Azure هذا فقط استخدام هذه الهوية لطلب الرموز المميزة من معرف Microsoft Entra. لذلك عند حذف المورد، يقوم Azure تلقائيًا بحذف الهوية نيابة عنك. يتطلب Azure Synapse Analytics إنشاء هوية مُدارة معينة من قبل النظام مع مساحة عمل Synapse.
  • تعيين المستخدم: يمكنك أيضا إنشاء هوية مدارة كمورد Azure مستقل. يمكنك إنشاء هوية مُدارة مُعيّنة بواسطة مستخدم وتعيينها إلى مثيل واحد أو أكثر من مساحة عمل Synapse. في الهويات المدارة المعينة من قبل المستخدم، تتم إدارة الهوية بشكل منفصل عن الموارد التي تستخدمها.

توفر الهوية المُدارة المزايا التالية:

  • تخزين البيانات الاعتماد في Azure Key Vault، وفي هذه الحالة تستخدم الهوية المدارة لمصادقة Azure Key Vault.
  • الوصول إلى البيانات المخازن أو الحسابات باستخدام مصادقة الهوية المُدارة، بما في ذلك تخزين Azure Blob، و Azure Data Explorer، وAzure Data Lake Storage Gen1، وAzure Data Lake Storage Gen2، وقاعدة بيانات Azure SQL، ومثيل Azure SQL المُدارة، و Azure Synapse Analytics، و REST، ونشاط Databricks، الويب النشاط والمزيد. يُرجى فحص الموصل ومقالات النشاط للحصول على مزيدٍ من التفاصيل.
  • تستخدم الهوية المدارة أيضا لتشفير/فك تشفير البيانات وبيانات التعريف باستخدام المفتاح المُدار للعميل المُخزّن في Azure Key Vault، ما يوفر تشفيراً مزدوجاً.

الهوية المُدارة التي يُعيّنها النظام

إشعار

يُشار أيضًا إلى الهوية المُدارة التي يخصصها النظام باسم "الهوية المُدارة" في أي مكان آخر في الوثائق وفي واجهة مستخدم Synapse Studio لغرض التوافق مع الإصدارات السابقة. سنذكر صراحة "الهوية المُدارة التي يعينها المستخدم" عند الإشارة إليها.

استرداد الهوية المُدارة المعينة من قبل النظام باستخدام مدخل Microsoft Azure

يمكنك العثور على معلومات الهوية المُدارة من مدخل Microsoft Azure - >مساحة عمل Synapse الخاصة بك -> الخصائص.

لقطة شاشة لمدخل Azure مع معرف كائن الهوية المدار من قبل النظام لمساحة عمل Synapse.

ستظهر معلومات الهوية المُدارة أيضاً عند إنشاء خدمة مرتبطة، والتي تدعم مصادقة الهوية المُدارة، مثل Azure Blob، وAzure Data Lake Storage، و Azure Key Vault، وما إلى ذلك.

لإعطاء الأذونات، اتبع الخطوات التالية. للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.

  1. حدد Access control (IAM).

  2. حدد إضافة>Add role assignmen.

    لقطة شاشة تعرض صفحة التحكم في الوصول (IAM) مع فتح قائمة إضافة تعيين دور

  3. في علامة التبويب الأعضاء، حدد الهوية المُدارة، ثم حدد تحديد الأعضاء.

  4. حدد اشتراك Azure الخاص بك.

  5. ضمن الهوية المدارة المعينة من قبل النظام، حدد مساحة عمل Synapse، ثم حدد مساحة عمل. يمكنك أيضًا استخدام معرف الكائن أو اسم مساحة العمل (كاسم هوية مُدارة) للعثور على هذه الهوية. للحصول على معرف تطبيق الهوية المدارة، استخدم تطبيق PowerShell.

  6. في علامة التبويب Review + assign ، حدد Review + assign لتعيين الدور.

قم باسترداد الهوية المُدارة المعينة من قبل النظام باستخدام PowerShell

سيتم إرجاع المعرف الأساسي للهوية المدارة ومعرف المستأجر عندما تحصل على مثيل خدمة معينة على النحو التالي. استخدم معرف أساسي لمنح حق الوصول:

PS C:\> (Get-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName>).Identity

IdentityType   PrincipalId                          TenantId                            
------------   -----------                          --------                            
SystemAssigned aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb aaaabbbb-0000-cccc-1111-dddd2222eeee

يمكنك الحصول على معرف التطبيق عن طريق النسخ فوق المعرف الأساسي، ثم تشغيل أسفل الأمر Microsoft Entra ID مع المعرف الأساسي كمعلمة.

PS C:\> Get-AzADServicePrincipal -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb

ServicePrincipalNames : {00001111-aaaa-2222-bbbb-3333cccc4444, https://identity.azure.net/P86P8g6nt1QxfPJx22om8MOooMf/Ag0Qf/nnREppHkU=}
ApplicationId         : 00001111-aaaa-2222-bbbb-3333cccc4444
DisplayName           : <workspaceName>
Id                    : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Type                  : ServicePrincipal

استرداد الهوية المدارة باستخدام واجهة برمجة تطبيقات REST

سيتم إرجاع المعرف الأساسي للهوية المدارة ومعرف المستأجر عندما تحصل على مثيل خدمة معينة على النحو التالي.

قم باستدعاء واجهة برمجة التطبيقات في الطلب أدناه:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01

الاستجابة: ستحصل على استجابة كما هو موضح في المثال أدناه. يتم ملء قسم "الهوية" وفقاً لذلك.

{
  "properties": {
    "defaultDataLakeStorage": {
      "accountUrl": "https://exampledatalakeaccount.dfs.core.windows.net",
      "filesystem": "examplefilesystem"
    },
    "encryption": {
      "doubleEncryptionEnabled": false
    },
    "provisioningState": "Succeeded",
    "connectivityEndpoints": {
      "web": "https://web.azuresynapse.net?workspace=%2fsubscriptions%2{subscriptionId}%2fresourceGroups%2f{resourceGroupName}%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2f{workspaceName}",
      "dev": "https://{workspaceName}.dev.azuresynapse.net",
      "sqlOnDemand": "{workspaceName}-ondemand.sql.azuresynapse.net",
      "sql": "{workspaceName}.sql.azuresynapse.net"
    },
    "managedResourceGroupName": "synapseworkspace-managedrg-f77f7cf2-XXXX-XXXX-XXXX-c4cb7ac3cf4f",
    "sqlAdministratorLogin": "sqladminuser",
    "privateEndpointConnections": [],
    "workspaceUID": "e56f5773-XXXX-XXXX-XXXX-a0dc107af9ea",
    "extraProperties": {
      "WorkspaceType": "Normal",
      "IsScopeEnabled": false
    },
    "publicNetworkAccess": "Enabled",
    "cspWorkspaceAdminProperties": {
      "initialWorkspaceAdminObjectId": "3746a407-XXXX-XXXX-XXXX-842b6cf1fbcc"
    },
    "trustedServiceBypassEnabled": false
  },
  "type": "Microsoft.Synapse/workspaces",
  "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}",
  "location": "eastus",
  "name": "{workspaceName}",
  "identity": {
    "type": "SystemAssigned",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
  },
  "tags": {}
}

تلميح

لاسترداد الهوية المدارة من قالب ARM، أضف قسم المخرجات في قالب ARM JSON:

{
    "outputs":{
        "managedIdentityObjectId":{
            "type":"string",
            "value":"[reference(resourceId('Microsoft.Synapse/workspaces', parameters('<workspaceName>')), '2018-06-01', 'Full').identity.principalId]"
        }
    }
}

إنشاء هوية مدارة معينة من قبل النظام

يتم إنشاء الهوية المُدارة المعينة من قبل النظام على النحو التالي:

  • عند إنشاء مساحة عمل Synapse من خلال مدخل Microsoft Azure أو PowerShell ، سيتم دائمًا إنشاء هوية مُدارة تلقائيًا.
  • عند إنشاء مساحة عمل من خلال SDK، سيتم إنشاء هوية مُدارة فقط إذا قمت بتحديد Identity = new ManagedIdentity" في عنصر مساحة عمل Synapse للإنشاء." انظر المثال في .NET تشغيل سريع - إنشاء مصنع بيانات.
  • عند إنشاء مساحة عمل Synapse من خلال واجهة برمجة تطبيقات REST، سيتم إنشاء هوية مُدارة فقط إذا قمت بتحديد قسم "الهوية" في نص الطلب. انظر المثال في تشغيل سريع لREST– إنشاء مصنع البيانات.

إذا وجدت أن مثيل الخدمة الخاص بك لا يحتوي على هوية مُدارة مقترنة باتباع تعليمات استرداد الهوية المُدارة، فيمكنك إنشاء واحدة بشكل صريح عن طريق تحديثها باستخدام بادئ الهوية برمجياً:

إشعار

  • الهوية المدارة غير قابلة للتعديل. لن يكون لتحديث مثيل خدمة له هوية مُدارة بالفعل أي تأثير، وستظل الهوية المُدارة كما هي بدون تغيير.
  • إذا قمت بتحديث مثيل خدمة تحتوي بالفعل على هوية مُدارة دون تحديد معلمة "الهوية" في كائنات المصنع أو مساحة العمل أو بدون تحديد قسم "الهوية" في نص طلب REST، فستصدر لك رسالة خطأ.
  • عند حذف مثيل خدمة، سيتم حذف الهوية المُدارة المرتبطة معها.

قم بإنشاء الهوية المُدارة المعينة من قبل النظام باستخدام PowerShell

استدعاء أمرNew-AzSynapseWorkspace، ثم ترى حقول "الهوية" الصادرة حديثاً:

PS C:\> $password = ConvertTo-SecureString -String "****" -AsPlainText -Force
PS C:\> $creds = New-Object System.Management.Automation.PSCredential ("ContosoUser", $password)
PS C:\> New-AzSynapseWorkspace -ResourceGroupName <resourceGroupName> -Name <workspaceName> -Location <region> -DefaultDataLakeStorageAccountName <storageAccountName> -DefaultDataLakeStorageFileSystem <fileSystemName> -SqlAdministratorLoginCredential $creds

DefaultDataLakeStorage           : Microsoft.Azure.Commands.Synapse.Models.PSDataLakeStorageAccountDetails
ProvisioningState                : Succeeded
SqlAdministratorLogin            : ContosoUser
VirtualNetworkProfile            :
Identity                         : Microsoft.Azure.Commands.Synapse.Models.PSManagedIdentity
ManagedVirtualNetwork            :
PrivateEndpointConnections       : {}
WorkspaceUID                     : <workspaceUid>
ExtraProperties                  : {[WorkspaceType, Normal], [IsScopeEnabled, False]}
ManagedVirtualNetworkSettings    :
Encryption                       : Microsoft.Azure.Commands.Synapse.Models.PSEncryptionDetails
WorkspaceRepositoryConfiguration :
Tags                             :
TagsTable                        :
Location                         : <region>
Id                               : /subscriptions/<subsID>/resourceGroups/<resourceGroupName>/providers/
                                   Microsoft.Synapse/workspaces/<workspaceName>
Name                             : <workspaceName>
Type                             : Microsoft.Synapse/workspaces

قم بإنشاء هوية مُدارة مخصصة من قبل النظام باستخدام واجهة برمجة تطبيقات REST

إشعار

إذا حاولت تحديث مثيل خدمة له هوية مُدارة بالفعل بدون تحديد معلمة الهوية في كائن مساحة العمل أو توفير قسم الهوية في نص طلب REST، ستظهر لك رسالة خطأ.

استدعاء واجهة برمجة التطبيقات أدناه باستخدام قسم "الهوية" في متن الطلب:

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Synapse/workspaces/{workspaceName}?api-version=2018-06-01

نص الطلب: إضافة "الهوية": {"نوع": "SystemAssigned"}.

{
    "name": "<workspaceName>",
    "location": "<region>",
    "properties": {},
    "identity": {
        "type": "SystemAssigned"
    }
}

الاستجابة: يتم إنشاء الهوية المُدارة تلقائياً، ويتم تعبئة قسم "الهوية" وفقاً لذلك.

{
    "name": "<workspaceName>",
    "tags": {},
    "properties": {
        "provisioningState": "Succeeded",
        "loggingStorageAccountKey": "**********",
        "createTime": "2021-09-26T04:10:01.1135678Z",
        "version": "2018-06-01"
    },
    "identity": {
        "type": "SystemAssigned",
        "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
    },
    "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Synapse/workspaces/<workspaceName>",
    "type": "Microsoft.Synapse/workspaces",
    "location": "<region>"
}

قم بإنشاء الهوية المُدارة المعينة من قبل النظام باستخدام قالبAzure Resource Manager

قالب: إضافة "الهوية": {"نوع": "SystemAssigned"}.

{
    "contentVersion": "1.0.0.0",
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "resources": [{
        "name": "<workspaceName>",
        "apiVersion": "2018-06-01",
        "type": "Microsoft.Synapse/workspaces",
        "location": "<region>",
        "identity": {
            "type": "SystemAssigned"
        }
    }]
}

قم بإنشاء هوية مُدارة مخصصة من قبل النظام باستخدام عدة تطوير البرامج

Workspace workspace = new Workspace
{
    Identity = new ManagedIdentity
    {
        Type = ResourceIdentityType.SystemAssigned
    },
    DefaultDataLakeStorage = new DataLakeStorageAccountDetails
    {
        AccountUrl = <defaultDataLakeStorageAccountUrl>,
        Filesystem = <DefaultDataLakeStorageFilesystem>
    },
    SqlAdministratorLogin = <SqlAdministratorLoginCredentialUserName>
    SqlAdministratorLoginPassword = <SqlAdministratorLoginCredentialPassword>,
    Location = <region>
};
client.Workspaces.CreateOrUpdate(resourceGroupName, workspaceName, workspace);

استرداد الهوية المدارة المعينة من قبل النظام

يمكنك استرداد الهوية المدارة من مدخل Microsoft Azure أو برمجياً. تعرض الأقسام التالية بعض العينات.

تلميح

إذا كنت لا ترى الهوية المدارة، يمكنك إنشاء هوية مُدارة عن طريق تحديث مثيل الخدمة.

تنفيذ دفاتر ملاحظات Azure Synapse Spark باستخدام هوية مدارة معينة من قبل النظام

يمكنك بسهولة تنفيذ دفاتر ملاحظات Synapse Spark باستخدام الهوية المدارة المعينة من قبل النظام (أو الهوية المدارة لمساحة العمل) عن طريق تمكين تشغيل كهوية مدارة من قائمة تكوين الجلسة. لتنفيذ دفاتر ملاحظات Spark باستخدام هوية مدارة لمساحة العمل، يحتاج المستخدمون إلى أن يكون لديهم أدوار التحكم في الوصول استنادًا إلى الدور التالية:

  • عامل تشغيل حساب Synapse في مساحة العمل أو مجموعة Spark المحددة
  • مستخدم بيانات اعتماد Synapse على الهوية المدارة لمساحة العمل

synapse-run-as-msi-1

synapse-run-as-msi-2

synapse-run-as-msi-3

إشعار

تدعم دفاتر ملاحظات Synapse وتعريفات مهام Spark فقط استخدام الهوية المدارة المعينة من قبل النظام من خلال الخدمات المرتبطة وواجهات برمجة التطبيقات mssparkutils. لا يمكن ل MSAL ومكتبات المصادقة الأخرى استخدام الهوية المدارة المعينة من قبل النظام. يمكنك بدلا من ذلك إنشاء كيان خدمة وتخزين بيانات الاعتماد في Key Vault.

الهوية المُدارة التي يعيّنها المُستخدم

يمكنك إنشاء الهويات المدارة المعينة من قبل المستخدم وحذفها وإدارتها في معرف Microsoft Entra. لمزيد من التفاصيل، راجع إنشاء أو سرد أو حذف أو تعيين دور لهوية مُدارة معينة بواسطة المستخدم باستخدام مدخل Microsoft Azure.

من أجل استخدام هوية مُدارة يعينها المستخدم، ينبغي أولاً إنشاء بيانات اعتماد في مثيل خدمتك لـ UAMI.

إشعار

الهوية المدارة المعينة من قبل المستخدم غير مدعومة حاليا في دفاتر ملاحظات Synapse وتعريفات مهام Spark.

الخطوات التالية

راجع المقالات التالية التي تقدم متى وكيفية استخدام الهوية المدارة:

راجع نظرة عامة على الهويات المُدارة لموارد Azure لمزيد من المعلومات الأساسية حول الهويات المُدارة لموارد Azure، والتي تستند إليها الهوية المُدارة في Azure Synapse.