تحميل البيانات بأمان باستخدام SQL Synapse

تسلط هذه المقالة الضوء على آليات المصادقة الآمنة لـ عبارة COPYوتوفر أمثلة على ذلك. عبارة COPY هي الطريقة الأكثر مرونة وأماناً لتحميل البيانات بشكل مجمع في SQL Synapse.

آليات المصادقة المدعومة

تصف المصفوفة التالية أساليب المصادقة المدعومة لكل نوع ملف وحساب تخزين. ينطبق هذا على موقع تخزين المصدر وموقع ملف الخطأ.

CSV Parquet ORC
تخزين البيانات الثنائية الكبيرة في Azure SAS/MSI/الخدمة الرئيسية/المفتاح/AAD SAS/المفتاح SAS/المفتاح
Azure Data Lake Gen2 SAS/MSI/الخدمة الرئيسية/المفتاح/AAD SAS (كائن ثنائي كبير الحجم1)/MSI (dfs2)/الخدمة الرئيسية/المفتاح/AAD SAS (كائن ثنائي كبير الحجم1)/MSI (dfs2)/الخدمة الرئيسية/المفتاح/AAD

1: تكون نقطة نهاية الكائن الثنائي كبير الحجم (.blob.core.windows.net) في مسار موقعك الخارجي ضرورية لطريقة المصادقة هذه.

2: تكون نقطة نهاية dfs (.dfs.core.windows.net) في مسار موقعك الخارجي ضرورية لطريقة المصادقة هذه.

أ. مفتاح حساب التخزين مع LF كمنهي الصف (سطر جديد بنمط Unix)

--Note when specifying the column list, input field numbers start from 1
COPY INTO target_table (Col_one default 'myStringDefault' 1, Col_two default 1 3)
FROM 'https://adlsgen2account.dfs.core.windows.net/myblobcontainer/folder1/'
WITH (
    FILE_TYPE = 'CSV'
    ,CREDENTIAL=(IDENTITY= 'Storage Account Key', SECRET='<Your_Account_Key>')
    --CREDENTIAL should look something like this:
    --CREDENTIAL=(IDENTITY= 'Storage Account Key', SECRET='<secret>'),
    ,ROWTERMINATOR='0x0A' --0x0A specifies to use the Line Feed character (Unix based systems)
)

هام

  • استخدم القيمة السداسية العشرية (0x0A) لتحديد تغذية الأسطر/حرف السطر الجديد. لاحظ أن عبارة COPY سوف تأول \n سلسلة الأوامر على أنها \r\n (سطر جديد لزر الإدخال).

ب. توقيع الوصول المشترك (SAS) مع CRLF كمنهي الصف (سطر جديد بنمط Windows)

COPY INTO target_table
FROM 'https://adlsgen2account.dfs.core.windows.net/myblobcontainer/folder1/'
WITH (
    FILE_TYPE = 'CSV'
    ,CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='<Your_SAS_Token>')
    --CREDENTIAL should look something like this:
    --CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='?sv=2018-03-28&ss=bfqt&srt=sco&sp=rl&st=2016-10-17T20%3A14%3A55Z&se=2021-10-18T20%3A19%3A00Z&sig=IEoOdmeYnE9%2FKiJDSFSYsz4AkN'),
    ,ROWTERMINATOR='\n'-- COPY command automatically prefixes the \r character when \n (newline) is specified. This results in carriage return newline (\r\n) for Windows based systems.
)

هام

لا تحدّد ROWTERMINATORباعتباره '\r\n' لأنها ستأول على أنها '\r\r\n' كما سينتج عنه مشاكل في التحليل. يقوم الأمر COPY تلقائيًا بوضع بادئة للحرف \ r عند تحديد \ n (سطر جديد). ينتج عن هذا سطر جديد لزر إدخال (\ r \ n) للأنظمة المستندة الخاصة بـ Windows.

ج. الهوية المُدارة

مطلوب مصادقة الهوية المدارة عند إرفاق حساب التخزين الخاص بك إلى VNet.

المتطلبات الأساسية

  1. تثبيت Azure PowerShell. يرجى الاطلاع على تثبيت PowerShell.
  2. في حال إن كان لديك حساب تخزين الإصدار الأول للأغراض العامة أو حساب تخزين البيانات الثنائية كبيرة الحجم، فيجب عليك أولاً الترقية إلى الإصدار الثاني للأغراض العامة. راجع الترقية إلى حساب تخزين الإصدار الثاني للأغراض العامة.
  3. يجب أن يكون لديك السماح بخدمات Microsoft الموثوقة بالوصول إلى حساب التخزين هذا قيد التشغيل ضمن قائمة إعدادات حساب Azure Storageوالشبكات الظاهرية وجدران الحماية. راجع تكوين حدود أمان البوابة والشبكات الظاهرية الخاصة بتخزين Azure.

‏‏الخطوات

  1. إذا كان لديك تجمع SQL مخصص مستقل، فقم بتسجيل خادم SQL الخاص بك باستخدام معرف Microsoft Entra باستخدام PowerShell:

    Connect-AzAccount
    Select-AzSubscription -SubscriptionId <subscriptionId>
    Set-AzSqlServer -ResourceGroupName your-database-server-resourceGroup -ServerName your-SQL-servername -AssignIdentity
    

    هذه الخطوة غير مطلوبة لتجمعات SQL المخصصة ضمن مساحة عمل Synapse. يعتبر النظام المعين للهوية المدارة (SA-MI) لمساحة العمل عضوًا في دور مسؤول Synapse وبالتالي يتمتع بامتيازات عالية على مجموعات SQL المخصصة لمساحة العمل.

  2. أنشئ حساب تخزين الإصدار الثاني للأغراض العامة. لمزيد من المعلومات، راجع إنشاء حساب تخزين.

    إشعار

  3. ضمن حساب التخزين، حدد Access control (IAM).

  4. حدد Add>Add role assignment لفتح صفحة إضافة تعيين الدور.

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

    الإعداد القيمة‬
    الدور المساهم في بيانات مخزن البيانات الثنائية الكبيرة
    تعيين الوصول إلى SERVICEPRINCIPAL
    الأعضاء خادم أو مساحة عمل تستضيف تجمع SQL المخصص الذي قمت بتسجيله باستخدام معرف Microsoft Entra

    صفحة Add role assignment في مدخل Microsoft Azure.

    إشعار

    لا يمكن تنفيذ هذه الخطوة إلا للأعضاء الذين يتمتعون بامتيازات المالك. للتعرف على الأدوار الكثيرة المضمنة في Azure، راجع الأدوار المضمنة في Azure .

    هام

    حدد دور Azure للمالك أو المساهم أو القارئ لـ Storage Blob Data. تختلف هذه الأدوار عن أدوار Azure المضمنة للمالك والمساهم والقارئ.

    منح إذن RBAC Azure للتحميل

  6. يمكنك الآن تشغيل عبارة COPY التي تحدد "الهوية المدارة":

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt'
    WITH (
        FILE_TYPE = 'CSV',
        CREDENTIAL = (IDENTITY = 'Managed Identity'),
    )
    

د. مصادقة Microsoft Entra

‏‏الخطوات

  1. ضمن حساب التخزين، حدد Access control (IAM).

  2. حدد Add>Add role assignment لفتح صفحة إضافة تعيين الدور.

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

    الإعداد القيمة‬
    الدور دور المالك أو المساهم أو القارئ لبيانات الكائنات الثنائية كبيرة الحجم للتخزين
    تعيين الوصول إلى USER
    الأعضاء مستخدم Microsoft Entra

    صفحة Add role assignment في مدخل Microsoft Azure.

    هام

    حدد دور Azure للمالك أو المساهم أو القارئ لـ Storage Blob Data. تختلف هذه الأدوار عن أدوار Azure المضمنة للمالك والمساهم والقارئ.

    منح إذن RBAC Azure للتحميل

  4. تكوين مصادقة Microsoft Entra. راجع تكوين وإدارة مصادقة Microsoft Entra باستخدام Azure SQL.

  5. الاتصال بتجمع SQL باستخدام Active Directory حيث يمكنك الآن تشغيل عبارة COPY دون تحديد أية بيانات اعتماد:

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder1/*.txt'
    WITH (
        FILE_TYPE = 'CSV'
    )
    

هـ. المصادقة باستخدام الخدمة الرئيسية

‏‏الخطوات

  1. إنشاء تطبيق Microsoft Entra.

  2. احصل على معرّف التطبيق.

  3. احصل على مفتاح المصادقة.

  4. احصل على نقطة نهاية الرمز المميز Open Authorization 2.0 للإصدار الأول.

  5. تعيين أذونات القراءة والكتابة والتنفيذ لتطبيق Microsoft Entra على حساب التخزين الخاص بك.

  6. يمكنك الآن تشغيل عبارة COPY:

    COPY INTO dbo.target_table
    FROM 'https://myaccount.blob.core.windows.net/myblobcontainer/folder0/*.txt'
    WITH (
        FILE_TYPE = 'CSV'
        ,CREDENTIAL=(IDENTITY= '<application_ID>@<OAuth_2.0_Token_EndPoint>' , SECRET= '<authentication_key>')
        --CREDENTIAL should look something like this:
        --,CREDENTIAL=(IDENTITY= '92761aac-12a9-4ec3-89b8-7149aef4c35b@https://login.microsoftonline.com/72f714bf-86f1-41af-91ab-2d7cd011db47/oauth2/token', SECRET='juXi12sZ6gse]woKQNgqwSywYv]7A.M')
    )
    

هام

استخدم الإصدار 1 من نقطة نهاية الرمز المميز OAuth 2.0

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