أمان الوصول عبر الرموز
أمان الوصول إلى التعليمات البرمجية (CAS)، في إطار عمل Microsoft .NET ، هو حل مايكروسوفت لمنع التعليمات البرمجية غير الموثوقة من تنفيذ إجراءات ذات امتيازات. عند تحميل CLR لتجميعة ، فإنه يحصل على دليل عليها ويستخدمه لتحديد مجموعة التعليمات البرمجية التي تنتمي إليها. تحتوي مجموعة التعليمات البرمجية على مجموعة أذونات ( إذن واحد أو أكثر ). التعليمات البرمجية التي تنفذ إجراءً ذا امتيازات ستطلب الوصول إلى التعليمات البرمجية، مما يدفع CLR إلى تتبع مكدس الاستدعاءات وفحص مجموعة الأذونات الممنوحة لتجميعة كل طريقة في مكدس الاستدعاءات. يتم تحديد مجموعات التعليمات البرمجية ومجموعات الأذونات من قِبل مسؤول الجهاز الذي يُعرّف سياسة الأمان . تعتبر مايكروسوفت CAS قديمًا ولا تشجع على استخدامه. [ 1 ] كما أنه غير متوفر في .NET Core و.NET.
شهادة
يمكن أن تكون الأدلة أي معلومات مرتبطة بتجميعة. الأدلة الافتراضية التي تستخدمها أنظمة أمان الوصول إلى التعليمات البرمجية في .NET هي:
- دليل التطبيق: الدليل الذي يوجد فيه التجميع.
- الناشر: التوقيع الرقمي لناشر التجميع (يتطلب توقيع التجميع عبر Authenticode ).
- عنوان URL : عنوان URL الكامل الذي تم تشغيل التجميع منه
- الموقع: اسم مضيف عنوان URL/النطاق البعيد/VPN.
- المنطقة: المنطقة الأمنية التي يقع فيها التجمع
- التجزئة : تجزئة تشفيرية للتجميع، والتي تحدد إصدارًا معينًا.
- الاسم القوي: هو مزيج من اسم التجميعة وإصدارها والمفتاح العام لمفتاح التوقيع المستخدم لتوقيع التجميعة. مفتاح التوقيع ليس شهادة X.509 ، بل هو زوج مفاتيح مخصص يتم إنشاؤه بواسطة أداة التسمية القوية SN.EXE أو بواسطة Visual Studio .
يمكن للمطور استخدام الأدلة المخصصة (ما يسمى بأدلة التجميع) ولكن هذا يتطلب كتابة تجميع أمني، وفي الإصدار 1.1 من .NET لا تعمل هذه الميزة.
يمكن الحصول على الأدلة المستندة إلى تجزئة التجميع بسهولة في التعليمات البرمجية. على سبيل المثال، في لغة C# ، يمكن الحصول على الأدلة من خلال عبارة التعليمات البرمجية التالية:
this.GetType ( ) . Assembly.Evidenceسياسة
السياسة هي مجموعة من التعبيرات التي تستخدم الأدلة لتحديد عضوية مجموعة التعليمات البرمجية. وتمنح مجموعة التعليمات البرمجية مجموعة من الأذونات للتجميعات الموجودة داخل تلك المجموعة. توجد أربع سياسات في .NET:
- المؤسسة: سياسة لمجموعة من الأجهزة التي تشكل جزءًا من تثبيت Active Directory .
- الجهاز: سياسة الجهاز الحالي.
- المستخدم: سياسة المستخدم المسجل دخوله.
- AppDomain: سياسة نطاق التطبيق قيد التنفيذ.
تُخزَّن السياسات الثلاث الأولى في ملفات XML وتُدار من خلال أداة تكوين .NET 1.1 (mscorcfg.msc). أما السياسة الأخيرة فتُدار من خلال التعليمات البرمجية الخاصة بنطاق التطبيق الحالي.
سيقوم نظام أمان الوصول إلى التعليمات البرمجية بتقديم دليل التجميع لكل سياسة، ثم سيأخذ التقاطع (أي الأذونات المشتركة بين جميع مجموعات الأذونات التي تم إنشاؤها) كأذونات ممنوحة للتجميع.
بشكل افتراضي، تمنح سياسات المؤسسة والمستخدم ونطاق التطبيق ثقة كاملة (أي أنها تسمح لجميع التجميعات بالحصول على جميع الصلاحيات)، بينما تكون سياسة الجهاز أكثر تقييدًا. وبما أن التقاطع مُعتمد، فهذا يعني أن مجموعة الصلاحيات النهائية تُحدد بواسطة سياسة الجهاز.
تجدر الإشارة إلى أنه تم إلغاء نظام السياسات في .NET Framework 4.0. [ 2 ]
مجموعة التعليمات البرمجية
تربط مجموعات التعليمات البرمجية دليلاً ما بمجموعة أذونات محددة. يستخدم المسؤول أداة تكوين .NET لتحديد نوع معين من الأدلة (على سبيل المثال، موقع) وقيمة معينة لهذا الدليل (على سبيل المثال، www.mysite.com)، ثم يحدد مجموعة الأذونات التي ستُمنح لمجموعة التعليمات البرمجية.
المطالب
سيطلب الكود الذي يُنفّذ إجراءً يتطلب صلاحيات خاصة إذنًا واحدًا أو أكثر. يدفع هذا الطلب بيئة تشغيل اللغة العامة (CLR) إلى تتبع مسار استدعاء الدوال، حيث تتأكد CLR من أن الأذونات المطلوبة موجودة ضمن الأذونات الممنوحة لتجميعة الدالة. في حال عدم منح الإذن، يتم طرح استثناء أمني . يمنع هذا الكود المُنزّل من تنفيذ إجراءات تتطلب صلاحيات خاصة. على سبيل المثال، إذا تم تنزيل تجميعة من موقع غير موثوق، فلن تمتلك هذه التجميعة أي أذونات إدخال/إخراج للملفات، وبالتالي إذا حاولت هذه التجميعة الوصول إلى ملف، فسيتم طرح استثناء يمنع الاستدعاء.
مراجع
- البنية التحتية للغة المشتركة
- تقنية أمان مايكروسوفت ويندوز
- بروتوكولات التشفير
