استخدام نقاط نهاية خدمة الشبكة الظاهرية وقواعدها للخوادم في قاعدة بيانات Azure SQL

ينطبق على: قاعدة بيانات Azure SQL Azure Synapse Analytics

قواعد الشبكة الظاهرية هي ميزة أمان جدار ناري تتحكم في ما إذا كان الخادم لقواعد البيانات والتجمعات المرنة في قاعدة بيانات Azure SQL أو قواعد بيانات مجموعة SQL المخصصة (المعروفة سابقاً باسم SQL DW) في يقبل Azure Synapse Analytics الاتصالات التي يتم إرسالها من شبكات فرعية معينة في الشبكات الافتراضية. تشرح هذه المقالة سبب كون قواعد الشبكة الظاهرية في بعض الأحيان أفضل خيار لك للسماح بالاتصال بقاعدة البيانات بشكل آمن في قاعدة بيانات SQL وAzure Synapse Analytics.

ملاحظة

تنطبق هذه المقالة على كل من قاعدة بيانات SQL وAzure Synapse Analytics. للتبسيط، يشير المصطلح database إلى كل من قواعد البيانات في قاعدة بيانات SQL وAzure Synapse Analytics. وبالمثل، فإن أي إشارات إلى server تشير إلى خادم SQL المنطقي الذي يستضيف قاعدة بيانات SQL وAzure Synapse Analytics.

لإنشاء قاعدة شبكة ظاهرية، يجب أن يكون هناك أولاً نقطة نهاية خدمة شبكة افتراضية للقاعدة للرجوع إليها.

إنشاء قاعدة شبكة افتراضية

إذا كنت تريد فقط إنشاء قاعدة شبكة افتراضية، فيمكنك التخطي إلى الخطوات والشرح later in this article.

تفاصيل حول قواعد الشبكة الظاهرية

يصف هذا القسم العديد من التفاصيل حول قواعد الشبكة الظاهرية.

منطقة جغرافية واحدة فقط

تنطبق كل نقطة نهاية لخدمة الشبكة الظاهرية على منطقة Azure واحدة فقط. لا تمكن نقطة النهاية المناطق الأخرى من قبول الاتصال من الشبكة الفرعية.

تقتصر أي قاعدة شبكة ظاهرية على المنطقة التي تنطبق عليها نقطة النهاية الأساسية الخاصة بها.

مستوى الخادم، وليس مستوى قاعدة البيانات

تنطبق كل قاعدة شبكة افتراضية على الخادم بأكمله، وليس فقط على قاعدة بيانات معينة على الخادم. بمعنى آخر، تنطبق قواعد الشبكة الظاهرية على مستوى الخادم، وليس على مستوى قاعدة البيانات.

في المقابل، يمكن تطبيق قواعد IP على أي من المستويات.

أدوار إدارة الأمن

يوجد فصل لأدوار الأمان في إدارة نقاط نهاية خدمة الشبكة الظاهرية. مطلوب اتخاذ إجراء من كل من الأدوار التالية:

  • مسؤول الشبكة (دور مساهم الشبكة): شغّل نقطة النهاية.
  • مسؤول قاعدة البيانات (دور مساهم SQL Server):قم بتحديث قائمة التحكم في الوصول (ACL) لإضافة الشبكة الفرعية المحددة إلى الخادم.

بديل Azure RBAC

تتمتع أدوار مسؤول الشبكة ومسؤول قاعدة البيانات بإمكانيات أكثر مما هو مطلوب لإدارة قواعد الشبكة الظاهرية. فقط مجموعة فرعية من قدراتهم مطلوبة.

لديك خيار استخدام التحكم في الوصول المستند إلى الدور (RBAC) في Azure لإنشاء دور مخصص واحد يحتوي فقط على مجموعة فرعية ضرورية من الإمكانات. يمكن استخدام الدور المخصص بدلاً من إشراك مسؤول الشبكة أو مسؤول قاعدة البيانات. تكون مساحة سطح التعرض للأمان أقل إذا أضفت مستخدماً إلى دور مخصص مقابل إضافة المستخدم إلى أدوار المسؤول الرئيسية الأخرى.

ملاحظة

في بعض الحالات، تكون قاعدة البيانات في قاعدة بيانات SQL والشبكة الفرعية للشبكة الظاهرية في اشتراكات مختلفة. في هذه الحالات، يجب عليك التأكد من التكوينات التالية:

  • يجب أن يكون كلا الاشتراكين في نفس مستأجر Azure Active Directory (Microsoft Azure Active Directory).
  • يمتلك المستخدم الأذونات المطلوبة لبدء العمليات، مثل تمكين نقاط نهاية الخدمة وإضافة شبكة فرعية افتراضية للشبكة إلى الخادم المحدد.
  • يجب أن يتم تسجيل موفر Microsoft.Sql لكلا الاشتراكين.

التقييدات

بالنسبة لقاعدة بيانات SQL، فإن ميزة قواعد الشبكة الظاهرية لها القيود التالية:

  • في جدار الحماية لقاعدة البيانات في قاعدة بيانات SQL، تشير كل قاعدة شبكة ظاهرية إلى شبكة فرعية. يجب استضافة كل هذه الشبكات الفرعية المشار إليها في نفس المنطقة الجغرافية التي تستضيف قاعدة البيانات.
  • يمكن أن يحتوي كل خادم على ما يصل إلى 128 إدخالاً لقائمة التحكم بالوصول (ACL) لأي شبكة افتراضية.
  • تنطبق قواعد الشبكة الظاهرية فقط على شبكات Azure Resource Manager الافتراضية وليس على شبكات classic deployment mode.
  • يؤدي تشغيل نقاط نهاية خدمة الشبكة الظاهرية إلى قاعدة بيانات SQL أيضاً إلى تمكين نقاط النهاية لـAzure Database for MySQL وقاعدة بيانات Azure لـ PostgreSQL. مع تعيين نقاط النهاية على ON، قد تفشل محاولات الاتصال من نقاط النهاية بقاعدة بيانات Azure الخاصة بك لـ MySQL أو قاعدة بيانات Azure لمثيلات PostgreSQL.
    • السبب الأساسي هو أن Azure Database for MySQL وقاعدة بيانات Azure لـ PostgreSQL من المحتمل ألا تحتوي على قاعدة شبكة افتراضية مكونة. يجب عليك تكوين قاعدة شبكة ظاهرية لـ قاعدة بيانات Azure لـ MySQL وقاعدة بيانات Azure لـ PostgreSQL.
    • لتعريف قواعد جدار حماية الشبكة الظاهرية على خادم منطقي لـ SQL تم تكوينه بالفعل بنقاط نهاية خاصة، قم بتعيين رفض الوصول إلى الشبكة العامة to No.
  • في جدار الحماية، تنطبق نطاقات عناوين IP على عناصر الشبكات التالية، لكن قواعد الشبكة الظاهرية لا تنطبق:

اعتبارات عند استخدام نقاط نهاية الخدمة

عند استخدام نقاط نهاية الخدمة لقاعدة بيانات SQL، راجع الاعتبارات التالية:

  • مطلوب إرسال عناوين IP العامة لقاعدة بيانات Azure SQL. يجب فتح مجموعات أمان الشبكة (NSGs) لعناوين IP لقاعدة بيانات SQL للسماح بالاتصال. يمكنك القيام بذلك باستخدام NSG service tags لقاعدة بيانات SQL.

ExpressRoute

إذا كنت تستخدم ExpressRoute من مقر عملك، للتناظر العام أو نظير Microsoft، فستحتاج إلى تحديد عناوين NAT IP المستخدمة. بالنسبة إلى النظير العام، تستخدم كل دائرة ExpressRoute بشكل افتراضي عنواني IP NAT المطبقين على حركة مرور خدمة Azure عندما تدخل نسبة استخدام الشبكة في شبكة Microsoft Azure الأساسية. بالنسبة إلى نظير Microsoft، يتم توفير عناوين NAT IP المستخدمة من قبل العميل أو مزود الخدمة. للسماح بالوصول إلى موارد الخدمة الخاصة بك، يجب أن تسمح لعناوين IP العامة هذه في إعداد جدار حماية IP للمورد. للعثور على عناوين IP لدائرة ExpressRoute العامة، افتح بطاقة دعم مع ExpressRoute عبر مدخل Microsoft Azure. لمعرفة المزيد حول NAT لـ ExpressRoute بشكل عام ونظرة Microsoft، راجع متطلبات NAT للنظير العام في Azure.

للسماح بالاتصال من دائرتك إلى قاعدة بيانات SQL، يجب عليك إنشاء قواعد شبكة IP لعناوين IP العامة الخاصة بـ NAT الخاص بك.

تأثير استخدام نقاط نهاية خدمة الشبكة الظاهرية مع Azure Storage

نفذ Azure Storage نفس الميزة التي تسمح لك بتقييد الاتصال بحساب Azure Storage الخاص بك. إذا اخترت استخدام هذه الميزة مع حساب Azure Storage الذي تستخدمه قاعدة بيانات SQL، فيمكنك مواجهة المشكلات. التالي هو قائمة ومناقشة لقاعدة بيانات SQL وميزات Azure Synapse Analytics المتأثرة بذلك.

بيان Azure Synapse Analytics PolyBase وCOPY

يتم استخدام PolyBase وبيان COPY بشكل شائع لتحميل البيانات في Azure Synapse Analytics من حسابات Azure Storage لاستيعاب البيانات عالية الإنتاجية. إذا كان حساب Azure Storage الذي تقوم بتحميل البيانات من قيود الوصول فقط إلى مجموعة من الشبكات الفرعية للشبكة الظاهرية، فسوف ينقطع الاتصال عند استخدام PolyBase وبيان COPY لحساب التخزين. لتمكين سيناريوهات الاستيراد والتصدير باستخدام COPY وPolyBase مع Azure Synapse Analytics المتصل بتخزين Azure المحمي بشبكة افتراضية، اتبع الخطوات الواردة في هذا القسم.

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

  • قم بتثبيت Azure PowerShell باستخدام this guide.
  • إذا كان لديك حساب للأغراض العامة v1 أو Azure Blob Storage، فيجب عليك أولاً الترقية إلى الإصدار 2 للأغراض العامة باتباع الخطوات الواردة في الترقية إلى حساب تخزين للأغراض العامة v2.
  • يجب أن يكون لديك السماح لخدمات Microsoft الموثوقة بالوصول إلى حساب التخزين هذا قيد التشغيل ضمن قائمة إعدادات حساب Azure Storage الجدران النارية والشبكات الظاهرية. سيسمح تمكين هذا التكوين لـ PolyBase وعبارة COPY بالاتصال بحساب التخزين باستخدام مصادقة قوية حيث تظل حركة مرور الشبكة على العمود الفقري Azure. لمزيد من المعلومات، راجع هذا الدليل.

هام

لا تزال الوحدة النمطية PowerShell Azure Resource Manager مدعومة بواسطة قاعدة بيانات SQL، ولكن كل التطوير المستقبلي مخصص للوحدة النمطية Az.Sql. ستستمر الوحدة النمطية AzureRM في تلقي إصلاحات الأخطاء حتى ديسمبر 2020 على الأقل. تتطابق وسائط الأوامر في الوحدة النمطية Az وفي الوحدات النمطية AzureRm بشكل كبير. لمعرفة المزيد حول تطابقها، اطّلع على تقديم الوحدة النمطية Azure PowerShell Az الجديدة.

‏‏الخطوات

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

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

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

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

  3. في صفحة حساب التخزين، حدد Access control (IAM).

  4. يرجى النقر فوق "إضافة">"إضافة تعيين دور" لفتح صفحة إضافة تعيين الدور.

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

    إعداد القيمة
    الدور مساهم بيانات Storage Blob
    تعيين الوصول إلى المستخدم، والمجموعة، والخدمة الرئيسية
    الأعضاء استضافة الخادم أو مساحة العمل تجمع SQL المخصص الذي قمت بتسجيله في Microsoft Azure Active Directory

    Screenshot that shows Add role assignment page in Azure portal.

    ملاحظة

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

  6. لتمكين اتصال PolyBase بحساب Azure Storage:

    1. قم بإنشاء master key لقاعدة البيانات إذا لم تكن قد أنشأت واحداً من قبل.

      CREATE MASTER KEY [ENCRYPTION BY PASSWORD = 'somepassword'];
      
    2. قم بإنشاء بيانات اعتماد ذات نطاق قاعدة بيانات باستخدام IDENTITY = "هوية الخدمة المُدارة" .

      CREATE DATABASE SCOPED CREDENTIAL msi_cred WITH IDENTITY = 'Managed Service Identity';
      
      • ليست هناك حاجة لتحديد SECRET باستخدام مفتاح الوصول إلى Azure Storage لأن هذه الآلية تستخدم Managed Identity تحت الأغلفة. هذه الخطوة ليست مطلوبة لتجمعات SQL المخصصة داخل مساحة عمل Azure Synapse Analytics. يعتبر النظام المعين للهوية المدارة (SA-MI) لمساحة العمل عضوًا في دور مسؤول Synapse وبالتالي يتمتع بامتيازات عالية على مجموعات SQL المخصصة لمساحة العمل.

      • يجب أن يكون اسم IDENTITY هو "هوية الخدمة المُدارة" لاتصال PolyBase للعمل مع حساب تخزين Azure مؤمن على شبكة ظاهرية.

    3. قم بإنشاء مصدر بيانات خارجي باستخدام مخطط abfss:// للاتصال بحساب تخزين v2 للأغراض العامة باستخدام PolyBase.

      CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss WITH (TYPE = hadoop, LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net', CREDENTIAL = msi_cred);
      
      • إذا كان لديك بالفعل جداول خارجية مقترنة بحساب للأغراض العامة v1 أو حساب تخزين Blob، فيجب عليك أولاً إسقاط هذه الجداول الخارجية. ثم قم بإفلات مصدر البيانات الخارجية المقابل. بعد ذلك، قم بإنشاء مصدر بيانات خارجي باستخدام نظام abfss:// الذي يتصل بحساب تخزين v2 للأغراض العامة، كما هو موضح سابقاً. ثم أعد إنشاء كل الجداول الخارجية باستخدام مصدر البيانات الخارجي الجديد هذا. يمكنك استخدام معالج إنشاء البرامج النصية ونشرها لإنشاء نصوص برمجية لجميع الجداول الخارجية لتسهيل الأمر.
      • لمزيد من المعلومات حول مخطط abfss://، راجع استخدام Azure Data Lake Storage Gen2 URI.
      • لمزيد من المعلومات حول أوامر T-SQL، راجع إنشاء مصدر بيانات خارجي.
    4. الاستعلام كالمعتاد باستخدام جداول خارجية.

تدقيق البيانات الثنائية الكبيرة الحجم في قاعدة بيانات SQL

يمكن لتدقيق Azure SQL كتابة سجلات تدقيق SQL إلى حساب التخزين الخاص بك. إذا كان حساب التخزين هذا يستخدم ميزة نقاط نهاية خدمة الشبكة الظاهرية، فراجع كيفية كتابة تدقيق في حساب تخزين خلف VNet وجدار الحماية.

إضافة قاعدة جدار حماية الشبكة الظاهرية إلى خادم Azure SQL

منذ فترة طويلة، قبل تحسين هذه الميزة، طُلب منك تشغيل نقاط نهاية خدمة الشبكة الظاهرية قبل أن تتمكن من تنفيذ قاعدة شبكة افتراضية مباشرة في جدار الحماية. ربطت نقاط النهاية شبكة فرعية لشبكة افتراضية معينة بقاعدة بيانات في قاعدة بيانات SQL. اعتباراً من كانون الثاني (يناير) 2018، يمكنك التحايل على هذا المطلب عن طريق تعيين علامة IgnoreMissingVNetServiceEndpoint. الآن، يمكنك إضافة قاعدة جدار حماية شبكة ظاهرية إلى الخادم الخاص بك دون تشغيل نقاط نهاية خدمة الشبكة الظاهرية.

إن مجرد تعيين قاعدة جدار الحماية لا يساعد في تأمين الخادم. يجب عليك أيضاً تشغيل نقاط نهاية خدمة الشبكة الظاهرية حتى يسري الأمان. عند تشغيل نقاط نهاية الخدمة، تواجه الشبكة الفرعية للشبكة الافتراضية الخاصة بك فترة توقف حتى تكمل الانتقال من إيقاف التشغيل إلى التشغيل. فترة التوقف هذه صحيحة بشكل خاص في سياق الشبكات الافتراضية الكبيرة. يمكنك استخدام علامة IgnoreMissingVNetServiceEndpoint لتقليل أو التخلص من وقت التوقف أثناء النقل.

يمكنك تعيين علامة IgnoreMissingVNetServiceEndpoint باستخدام PowerShell. لمزيد من المعلومات، راجع PowerShell لإنشاء نقطة نهاية خدمة شبكة ظاهرية وقاعدة لقاعدة بيانات SQL.

ملاحظة

للحصول على إرشادات مشابهة في Azure Synapse Analytics، راجع قواعد جدار حماية IP لـ Azure Synapse Analytics

استخدام مدخل Azure لإنشاء قاعدة شبكة اتصال ظاهرية

يوضح هذا القسم كيف يمكنك استخدام مدخل Microsoft Azure لإنشاء قاعدة شبكة افتراضية في قاعدة بياناتك في قاعدة بيانات SQL. تخبر القاعدة قاعدة البيانات الخاصة بك بقبول الاتصال من شبكة فرعية معينة تم وضع علامة عليها باعتبارها نقطة نهاية خدمة شبكة افتراضية.

ملاحظة

إذا كنت تنوي إضافة نقطة نهاية خدمة إلى قواعد جدار حماية الشبكة الظاهرية لخادمك، فتأكد أولاً من تشغيل نقاط نهاية الخدمة للشبكة الفرعية.

إذا لم يتم تشغيل نقاط نهاية الخدمة للشبكة الفرعية، تطلب منك البوابة الإلكترونية تمكينها. حدد الزر Enable في نفس الجزء الذي تضيف القاعدة فيه.

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

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

خطوات مدخل Microsoft Azure

  1. تسجيل الدخول إلى ⁧⁩مدخل Microsoft Azure⁧⁩.

  2. ابحث عن SQL serversوحددها، ثم حدد الخادم الخاص بك. ضمن الأمان، حدد Firewalls and virtual networks.

    Azure SQL logical server properties, Firewalls and Virtual Networks highlighted

  3. قم بتعيين السماح لخدمات وموارد Azure بالوصول إلى هذا الخادم على .

    هام

    إذا تركت عنصر التحكم معيناً على ON، فإن الخادم الخاص بك يقبل الاتصال من أي شبكة فرعية داخل حدود Azure. هذا هو الاتصال الذي ينشأ من أحد عناوين IP المعترف بها على أنها تلك الموجودة داخل النطاقات المحددة لمراكز بيانات Azure. قد يكون ترك عنصر التحكم معيناً على ON بمثابة وصول مفرط من وجهة نظر أمنية. يمكن لميزة نقطة نهاية خدمة Microsoft Azure Virtual Network بالتنسيق مع ميزة قواعد الشبكة الظاهرية لقاعدة بيانات SQL معاً تقليل مساحة سطح الأمان.

  4. حدد + إضافة شبكة ظاهرية موجودة في قسم الشبكات الظاهرية.

    Screenshot that shows selecting + Add existing (subnet endpoint, as a SQL rule).

  5. في جزء إنشاء / تحديث الجديد، املأ المربعات بأسماء موارد Azure.

    تلميح

    يجب عليك تضمين بادئة العنوان الصحيحة لشبكتك الفرعية. يمكنك العثور على قيمة Address prefix في البوابة الإلكترونية. انتقل إلى جميع الموارد>كل الأنواع>الشبكات الظاهرية. يعرض المرشح شبكاتك الافتراضية. حدد شبكتك الافتراضية، ثم حدد Subnets. يحتوي عمود ADDRESS RANGE على بادئة العنوان التي تريدها.

    Screenshot that shows filling in boxes for the new rule.

  6. حدد الزر OK بالقرب من أسفل الجزء.

  7. راجع قاعدة الشبكة الظاهرية الناتجة في جزء Firewall.

    Screenshot that shows the new rule on the Firewall pane.

ملاحظة

تنطبق الحالات أو الحالات التالية على القواعد:

  • Ready: يشير إلى نجاح العملية التي بدأتها.
  • Failed: يشير إلى أن العملية التي بدأتها قد فشلت.
  • Deleted: ينطبق فقط على عملية الحذف وتشير إلى أن القاعدة قد تم حذفها ولم تعد سارية.
  • InProgress: يشير إلى أن العملية قيد التقدم. يتم تطبيق القاعدة القديمة أثناء إجراء العملية في هذه الحالة.

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

يمكن أن ينشئ البرنامج النصي أيضًا قواعد شبكة ظاهرية باستخدام الأمر PowerShell cmdlet New-AzSqlServerVirtualNetworkRule أو az network vnet create. لمزيد من المعلومات، راجع PowerShell لإنشاء نقطة نهاية خدمة شبكة ظاهرية وقاعدة لقاعدة بيانات SQL.

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

داخليّاً، تستدعي أوامر cmdlets لـ PowerShell لإجراءات الشبكة الظاهرية لـ SQL واجهات برمجة تطبيقات REST. يمكنك استدعاء واجهات برمجة تطبيقات REST مباشرة. لمزيد من المعلومات، راجع قواعد الشبكة الظاهرية: العمليات.

استكشاف الأخطاء 40914 و40615 وإصلاحها

يتعلق خطأ الاتصال 40914 بقواعد الشبكة الظاهرية، كما هو محدد في جزء جدار الحماية في مدخل Microsoft Azure. الخطأ 40615 مشابه، إلا إنه يتعلق بقواعد عنوان IP على جدار الحماية.

خطأ 40914

Message text: "لا يمكن فتح الخادم" [اسم الخادم] "الذي طلبته عملية تسجيل الدخول. لا يُسمح للعميل بالوصول إلى الخادم ".

Error description: العميل موجود في شبكة فرعية تحتوي على نقاط نهاية خادم شبكة ظاهرية. لكن الخادم لا يحتوي على قاعدة شبكة ظاهرية تمنح الشبكة الفرعية الحق في الاتصال بقاعدة البيانات.

Error resolution: في جزء Firewall في مدخل Microsoft Azure، استخدم عنصر التحكم في قواعد الشبكة الظاهرية لإضافة قاعدة شبكة افتراضية للشبكة الفرعية.

خطأ 40615

Message text: "لا يمكن فتح الخادم '{0}' الذي طلبه تسجيل الدخول. لا يُسمح للعميل بعنوان IP "{1}" بالوصول إلى الخادم. "

Error description: يحاول العميل الاتصال من عنوان IP غير مصرح له بالاتصال بالخادم. لا يحتوي جدار حماية الخادم على قاعدة عنوان IP التي تسمح للعميل بالاتصال من عنوان IP المحدد إلى قاعدة البيانات.

Error resolution: أدخل عنوان IP للعميل كقاعدة IP. استخدم جزء جدار الحماية في مدخل Microsoft Azure للقيام بهذه الخطوة.

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