SQL Server EndPoints

السلام عليكم اخواني الكرام

اليوم اود ان اطرح موضوع لم يتطرق الية الكثير  وهو من المواضيع المهمة لمديري قواعد البيانات وهو Endpoints

 الخاصة بال SQL Server قد يكون العنوان غريب وقد يتسائل البعض وماعلاقتة بال SQL Server لنعرف مصطلحنا هذة في هذة السطور:-

 Endpoints هو عبارة عن مسيطر يتحكم بالاتصال بال SQL Server  كذلك بناء الشروط والقواعد الواجب اتخاذها للاتصال مع تنصيبنا((SQL Server)) يمكن تشبيه بمثال بسيط ال Fire Well  او جدار الحماية او جدار النار الموجود في حاسباتنا والذي يتحكم باناء منافذ خاصة لتناقل المعلومات

ال Endpoint يكون وسيط بين ال Application  وال SQL Server  فهو يتحكم ويسيطر على المنافذ الخاصة بالتنصيب (( SQL Server)) او السلوكيات الاتصال مع تطبيقنا.

ان ال EndPoints يكون من ناقلات ويسمى مصطلحها بالتالي TRANSPORT ويكون عبارة عن نوعان

1-  TCP

2-  Http

ولكل نوع من هذة الناقلات احمال لكي تنقلها ويسما مصطلحها بال Payloads

ولكل منها انواعها الخاصة

وهو يقسم حسب الجدول التالي

نستنتج من هذا الكلام لو جمعنا الناقلات مع الحموالات سوف يستطيع ال SQL Server ان يقوم بفلترة الاتصالات الواصلة وبالتالي السماح المرور الى السكوال كما يسمية البعض
لنفرض الفرضية التالية لو انشأنا EndPoint  خاصة بالTCP يقوم بأرسال اوامر TSQL  الى ال SQL Server

فأن ا ل SQL Server سوف يهمل جميع الناقلات و كما يسمى ال TRANSPORT التي لاتكون من ضمن الشروط 

ويسمح فقط بال TCP /TSQL  

لنتخيل المشهد في المثال التالي جدار الحماية عند انشاء port معين و تطبيقنا يحاول استخدام بورت اخر للأتصال فان جدار الحماية لايقبل مرور الاتصال لان البورت المستخدم ممنوع من الوصول

الوصول الى Endpoint وكيفية التعامل معها حيث سوف يكون

لايكفي معرفة نوع المناقلة TRANSPORT او الPayloads التي تستخدم في Endpoint للأتصال فيجب معرفة تفاصيل اخرى سوف نراها

ان هنالك ثلاث حالات للوصول وهي تمثل المستوى الاول للحماية معرفة حالة جدار حماية   Endpoint ال SQL Server وتقسم الحالات الى ثلاث انواع

1-  Started:-  يكون ال Endpoint فعال ويسمح بالاتصال

2-  Stooped:-  يكون ايظاً ال endpoint فعال لكن عند الاتصال فية سوف يعطي تطبيقنا خطأ

3-  DISABLED :- يكون فيها ال endpoint لايصغي الى اي نوع من انواع الاتصالات وسوف يهملها جميعها

اما المستوى الثاني من الحماية ان على الشخص الي يحاول الاتصال بال Endpoint او انشائها يجب ان تكون هذة الصلاحية مفعلة له وهي ((CONNECT permission)) اي ان الصلاحية معطاة لل USer .

الى الان اتمنى انتهينا من التعرف العام والفائدة من هذة الخاصية في ال SQL Server

ناتي الان الى شرح كل حالة او كل مناقلة وال payloads الخاص فيها ان شاء الله تعالى وسنأخذ في درسي فقط ال TCP

 Transmission Control Protocol (TCP) endpoints

وهو عبارة عن ثلاث انواع كما سوف يتم شرحه

  ال TSQL / DATABASE_MIRRORING/SERVICE_BROKER.

اولاً لتهية ال TCP سوف نأخذ في الاعتبار متطلبين يجب توفرها في كل من الحالات الثلاثة

1-  LISTENER_PORT / وهو مطلوب وضوروري تواجدة

2-  LISTENER_IP/ يكون اختياري اي ممكن تعين ip محدد او استخدام العبارة ALL للأصغاء الى جميع ال IP وسوف نتعلم طريقه كتابتها ان شاء الله في بقية الدرس

اود فقط ان اعرف كلمة LISTENER بمعنة الاصغاء فأصبح المفهوم لدينا واضحاً وهو كالتالي الاصغار لبورت معين او الاصغاء ل IP معين

ان الPort الافتراضي لل TSQL  هو 1433 والport الافتراضي لل DATABASE_MIRRORING  5022 لذلك يجب استخدامport مختلف لان لايستغل الهكر هذة الثغره

لانشاء endpoint لTCP خاص بال TSQL فان الموضوع لايتطلب اي option  اضافي كما ففي الحالة الافتراضية اي بما معناه

LISTENER_PORT و LISTENER_IP

اذن لزيادة الحماية في التطبيقات التي ترسل ال SQL Server  اوامر وايعازات TSQL  يجب انشاء هذا الجدار المخصص للSQL Server  ويكون مخصص لتطبيقك
ناتي الى الى الحاله الثانية من الحمولات وا ال Payloads التابعه الى مناقلات TCP:-

وهو ال Database Mirroring حتى لايكون هذا المصطلح او العملية غريبة علينا لنعرفها بشكل سريع وهو عملية نقل البيانات من تنصيب الى اخر مع الاخذ بعين الاعتبار عند حصول خطأ في التنصيب فان التنصيب الاخر يقوم بالتغطية على هذا الخطأ وان صحت التسمة عند حجدوث خلل في البيانات يقوم التنصيب الاخر بالتلافي على حالة عدم الحصول على البيانات.

وهو لايطلب Option اخر لانشاء ال Endpoint الخاص فيما عدا  تحديد دور ال End Point وهو مكون من عدة Role وهي كالتالي

PARTNER, WITNESS, or ALL.

….

كما نوهت فيما سبق ان ال port ألافتراضي لهذا ال Payload هو 5022 لذلك ينصح بتغيرة الى غير القيمة الافتراضية

ملاحظة اخيرة قبل الانتقال الى ال payloads الاخر من الممكن انشاء Endpointsواحدة لخاصية ال Database mirroring لكل تنصيب SQL Server او بالاحرى لكل سيرفر

Service Broker:- 

ان ال Option الخاص بهذا ال  (( الاحمال )) payloads هو كالتالي

MESSAGE_FORWARDING:- وهو يكون عبارة عن السماح بنقل الرسائل والايعازات من تنصيب الى اخر ويكون عبارة عن خيارين Enableو Disable

اما ال Option  الاخر يتحكم بحجم الرسائل المراد ارسالها الى ال SQL Server الاخر ويكون اسمة كالتالي

MESSAGE_FORWARDING_SIZE

 ناتي الان الى معرفة ال Endpoint الموجود لدينا في ال SQL Server

لنفتح الواجهه SSMS ونكتب الايعازات التالية

1-  SELECT * FROM sys.endpoints

2-  SELECT * FROM sys.HTTP_endpoints

3-  SELECT * FROM sys.HTTP_endpoints

4-  SELECT * FROM sys.database_mirroring_endpoints

5-  SELECT * FROM sys.service_broker_endpoints

 

الان ناتي لطريقة انشاء الEndpoints

كمافي الكود التالي

CREATE ENDPOINT [TestEndPoint]

State=Started

AS TCP (LISTENER_PORT = 6669,LISTENER_IP= ALL)

For TSQL();

او المثال التالي في حال تحديد IP معين

CREATE ENDPOINT [TestEndPoint]

State=Started

AS TCP (LISTENER_PORT = 6669,LISTENER_IP=(192.168.1.1))

For TSQL();

 

او كالتالي على

CREATE ENDPOINT [Mirroring]

AS TCP (LISTENER_PORT = 5522)

FOR DATA_MIRRORING (ROLE = PARTNER, ENCRYPTION = REQUIRED);

على العموم الصيغه العامة لكتابة ال Endpoint هي كالتالي

CREATE ENDPOINT endPointName [ AUTHORIZATION login ]

[ STATE = { STARTED | STOPPED | DISABLED } ]

AS { HTTP | TCP } (

   <protocol_specific_arguments>

        )

FOR { SOAP | TSQL | SERVICE_BROKER | DATABASE_MIRRORING } (

   <language_specific_arguments>

        )

<AS HTTP_protocol_specific_arguments> ::=

AS HTTP (

  PATH = ‘url’

      , AUTHENTICATION = ( { BASIC | DIGEST | INTEGRATED | NTLM | KERBEROS } [ ,…n ] )

      , PORTS = ( { CLEAR | SSL} [ ,… n ] )

  [ SITE = {‘*’ | ‘+’ | ‘webSite’ },]

  [ [ , ] CLEAR_PORT = clearPort ]

  [ [ , ] SSL_PORT = SSLPort ]

  [ [ , ] AUTH_REALM = { ‘realm’ | NONE } ]

  [ [ , ] DEFAULT_LOGON_DOMAIN = { ‘domain’ | NONE } ]

  [ [ , ] COMPRESSION = { ENABLED | DISABLED } ]

  )

<AS TCP_protocol_specific_arguments> ::=

AS TCP (

  LISTENER_PORT = listenerPort

  [ [ , ] LISTENER_IP = ALL | ( 4-part-ip ) | ( “ip_address_v6” ) ]

)

<FOR SOAP_language_specific_arguments> ::=

FOR SOAP(

  [ { WEBMETHOD [ ‘namespace’ .] ‘method_alias’

    (   NAME = ‘database.schema.name’

      [ [ , ] SCHEMA = { NONE | STANDARD | DEFAULT } ]

      [ [ , ] FORMAT = { ALL_RESULTS | ROWSETS_ONLY | NONE } ]

    )

  } [ ,…n ] ]

  [ [ , ] BATCHES = { ENABLED | DISABLED } ]

  [ [ , ] WSDL = { NONE | DEFAULT | ‘sp_name’ } ]

  [ [ , ] SESSIONS = { ENABLED | DISABLED } ]

  [ [ , ] LOGIN_TYPE = { MIXED | WINDOWS } ]

  [ [ , ] SESSION_TIMEOUT = timeoutInterval | NEVER ]

  [ [ , ] DATABASE = { ‘database_name’ | DEFAULT }

  [ [ , ] NAMESPACE = { ‘namespace’ | DEFAULT } ]

  [ [ , ] SCHEMA = { NONE | STANDARD } ]

  [ [ , ] CHARACTER_SET = { SQL | XML } ]

  [ [ , ] HEADER_LIMIT = int ]

 

للمزيد من التفاصيل يمكن زيارة الموقع التالي

1-  http://msdn.microsoft.com/en-us/library/ms181591.aspx

2-  http://www.simple-talk.com/sql/database-administration/sql-server-endpoints-soup-to-nuts/

 

 

 

 

Advertisements

شاركنا بارد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s