الأسئلة المتداولة | Azure

ملاحظة

اعتبارا من 31 ديسمبر 2022، تم إيقاف ملحق Microsoft Security Code Analysis (MSCA). يتم استبدال MSCA بملحق Microsoft Security DevOps Azure DevOps. اتبع الإرشادات الواردة في تكوين لتثبيت الملحق وتكوينه.

الأسئلة المتداولة العامة

هل يمكنني تثبيت الملحق على مثيل Azure DevOps Server (مسبقاً باسم Visual Studio Team Foundation Server) بدلاً من مثيل Azure DevOps؟

كلا. الملحق غير متاح للتنزيل والتثبيت من أجل Azure DevOps Server (مسبقاً باسم Visual Studio Team Foundation Server).

هل يتعين تشغيل Microsoft Security Code Analysis مع إصدار؟

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

على سبيل المثال، يحلل Credential Scanner (CredScan) الملفات داخل بنية مجلد مستودع التعليمات البرمجية. وبسبب هذا التحليل، يمكنك تشغيل CredScan ونشر مهام بناء Security Analysis Logs في بنية منفصلة للحصول على نتائج.

بالنسبة لأدوات أخرى مثل BinSkim التي تحلل القطع الأثرية بعد البناء، يُطلب البناء أولاً.

هل يمكنني كسر بنيتي بعد العثور على النتائج؟

نعم. يمكنك تقديم فاصل بناء عند إبلاغ أي أداة عن مشكلة عامة أو مشكلة في ملف سجله. عليك إضافة مهمة بناء "Post-Analysis"، وتحديد مربع الاختيار لأي أداة تريد قطع بنائها.

في واجهة المستخدم لمهمة "Post-Analysis" يمكنك اختيار قطع الإنشاء عند إبلاغ أي أداة عن أخطاء فقط أو أخطاء وتحذيرات.

كيف تختلف وسائط سطر الأوامر في Azure DevOps عن وسائط أدوات سطح المكتب المستقلة؟

عادةً، تكون مهام بنية DevOps Azure عبارة عن برامج تضمين مباشرة حول وسائط سطر الأوامر من أدوات الأمان. يمكنك تمرير أي شيء تمرره عادة إلى أداة سطر الأوامر بصفته وسائط مهام بناء.

اختلافات ملحوظة:

  • تُشغل الأدوات من مجلد مصدر العامل $(Build.SourcesDirectory) أو من ٪BUILD_SOURCESDIRECTORY٪. مثال على ذلك هو C:\agent_work\1\s.
  • يمكن أن تتناسب المسارات في الوسائط مع جذر الدليل المصدر المدرج مسبقاً في القائمة. يمكن أن تكون المسارات مطلقة أيضاً. تحصل على المسارات المطلقة إما باستخدام Azure DevOps Build Variables أو بتشغيل عميل محلي في مواقع نشر معروفة للموارد المحلية.
  • توفر الأدوات تلقائياً مسار ملف إخراج أو مجلد. إذا وفرت موقع إخراج لمهمة بناء، يُستبدل هذا الموقع بمسار إلى موقع سجلاتنا المعروف من عميل البناء
  • تُغير بعض وسائط سطر الأوامر الأخرى لبعض الأدوات. ومن الأمثلة على ذلك إضافة الخيارات التي تضمن عدم إطلاق واجهة المستخدم الرسومية، أو حذفها.

هل يمكنني تشغيل مهمة بناء مثل "Credential Scanner" عبر مستودعات متعددة في Azure DevOps Build؟

كلا. لا يُدعم تشغيل أدوات التطوير الآمنة عبر مستودعات متعددة في خط أنابيب واحد.

لم يُنشأ ملف الإخراج الذي حددته أو تعذر العثور عليه

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

أين تُحفظ ملفات الإخراج التي أنشأتها الأدوات؟

تضيف مهام البناء تلقائياً مسارات الإخراج إلى هذا الموقع المعروف على عميل البناء: $(Agent.BuildDirectory)_sdt\logs. ولأننا توحدنا على هذا الموقع، لدى جميع الفرق التي تنتج أو تستهلك سجلات تحليل التعليمات البرمجية حق الوصول إلى الإخراج.

هل يمكنني وضع قائمة انتظار بناء لتشغيل هذه المهام على عميل بناء مستضاف؟

نعم. يمكن تنفيذ جميع المهام والأدوات في الملحق على عميل بناء مستضاف.

ملاحظة

تتطلب مهمة بناء Anti-Malware Scanner وجود وكيل بناء ما مع تفعيل نافذة Windows Defender. يوفر Visual Studio 2017، وأي إصدار أحدث، مثل هذا الوكيل. لن تُشغل مهمة الإنشاء على عميلVisual Studio 2015 المستضاف.

على الرغم من أنه لا يمكن تحديث التوقيعات لهؤلاء العملاء، إلا إنه لا بد أن يقل عمر التوقيعات عن ثلاث ساعات.

أيمكنني تشغيل مهام البناء هذه كجزء من خط أنابيب إصدار بدلاً من خط أنابيب بناء؟

في معظم الحالات، نعم يمكنك.

ومع ذلك، لا يدعم Azure DevOps تشغيل المهام داخل خطوط أنابيب الإصدار عند نشر هذه المهام للأدوات. يمنع نقص الدعم المهمة هذا نشر مهام Security Analysis Logs من التشغيل الناجح في خط أنابيب إصدار ما. وتفشل المهمة بدلاً من ذلك مع رسالة خطأ وصفية.

من أين تحمل مهام البناء الأدوات؟

يمكن لبناء المهام تحميل حزم أدوات NuGet من تغذية Azure DevOps Package Management. يمكن لمهام الإنشاء أيضاً استخدام Node Package Manager، والتي يجب أن تكون مثبتة مسبقاً على عميل البناء. يعد الأمر التالي مثال على هذا التثبيت npm install tslint.

ما هو تأثير تثبيت الملحق في مؤسسة Azure DevOps؟

عند تثبيتها، تتاح مهام بناء الأمان التي يوفرها الملحق لجميع المستخدمين في مؤسستك. عند إنشاء خط أنابيب Azure أو تحريره، تتاح هذه المهام من قائمة مجموعة مهام البناء. وإلا، لن يكون لتثبيت الملحق في المؤسسة DevOps Azure أي تأثير. لا يعدل التثبيت أي إعدادات حساب أو إعدادات مشروع أو خطوط أنابيب.

أيؤدي تثبيت الملحق إلى تعديل خطوط أنابيب Azure الموجودة؟

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

الأسئلة المتداولة فيما يخص المهمة

تُسرد الأسئلة المعنية بمهام البناء في هذا القسم.

الماسح الضوئي لبيانات الاعتماد

ما هي سيناريوهات القمع الشائعة وأمثلتها؟

فيما يلي تفاصيل عن اثنين من سيناريوهات المنع الأكثر شيوعاً.

لمنع جميع تكرارات سر معين ضمن المسار المحدد

يلزم وجود مفتاح التجزئة لسر ملف إخراج CredScan، كما هو موضح في النموذج التالي.

{
    "tool": "Credential Scanner",
    "suppressions": [
    {
        "hash": "CLgYxl2FcQE8XZgha9/UbKLTkJkUh3Vakkxh2CAdhtY=",
        "_justification": "Secret used by MSDN sample, it is fake."
    }
  ]
}

تحذير

يُنشأ مفتاح التجزئة بواسطة جزء من قيمة مطابقة أو محتوى ملف. يمكن لأي مراجعة للتعليمات البرمجية المصدر تغيير مفتاح التجزئة وتعطيل قاعدة المنع.

لمنع جميع الأسرار الموجودة في ملف محدد أو لمنع ملف الأسرار نفسه

يمكن أن يكون تعبير الملف هو اسمه. كما يمكن أن يكون جزء الاسم الأساسي لمسار ملف كامل أو اسم ملف. لا تُدعم الأحرف البديلة.

توضح الأمثلة التالية كيفية منع الملف <مسار الإدخال>\src\JS\lib\angular.js

أمثلة على قواعد منع سارية:

  • <مسار الإدخال>\src\JS\lib\angular.js - يمنع الملف الموجود في المسار المحدد
  • \src\JS\lib\angular.js
  • \JS\lib\angular.js
  • \lib\angular.js
  • angular.js - يمنع أي ملف يحمل الاسم نفسه
{
    "tool": "Credential Scanner",
    "suppressions": [
    {
        "file": "\\files\\AdditonalSearcher.xml", 
        "_justification": "Additional CredScan searcher specific to my team"
    },
    {
        "file": "\\files\\unittest.pfx", 
        "_justification": "Legitimate UT certificate file with private key"
    }
  ]
}

تحذير

تُمنع أيضاً جميع الأسرار المستقبلية المضافة إلى الملف تلقائياً.

ما هي الإرشادات الموصى بها لإدارة تلك الأسرار؟

تساعدك الموارد التالية على إدارة الأسرار بشكل آمن والوصول إلى معلومات حساسة في تطبيقاتك:

لمزيد من المعلومات، راجع مشاركة المدونة إدارة الأسرار إدارة آمن في السحابة.

هل يمكنني كتابة الباحثين المخصصين لدي؟

يعتمد "Credential Scanner" على مجموعة من باحثي المحتوى الذين يُعرفون تعرفاً شائعاً في ملف buildsearchers.xml. يحتوي الملف على صفيف من كائنات XML المتسلسلة التي تمثل كائن ContentSearcher. يُوزع البرنامج مع مجموعة من الباحثين الذين خضعوا للاختبار بشكل جيد. ولكن يمكنك اختيار الباحثين المخصصين لديك أيضاً.

يُعرف باحث المحتوى كما يلي:

  • "Name": اسم الباحث الوصفي المراد استخدامه في ملفات إخراج Credential Scanner. وقد أوصينا باستخدام اصطلاح تسمية حالة الجمل لأسماء الباحث.

  • RuleId: معرف الباحث الثابت المعتم:

    • يُعين الباحث الافتراضي لـ Credential Scanner قيمة RuleId كـ CSCAN0010 وCSCAN0020 وCSCAN0030. يُحجز الرقم الأخير للدمج المحتمل لمجموعات الباحث أو تقسيمها عبر التعبيرات العادية (regex).
    • ينبغي أن يكون لقيمة RuleId للباحث المخصص مساحة اسم. وتتضمن الأمثلة CSCAN-<مساحة الاسم>0010، CSCAN-<مساحة الاسم>0020، وCSCAN-<مساحة الاسم>0030.
    • يتكون أي اسم باحث مؤهل كلياً من تركيبة قيمة RuleId واسم باحث ما. وتشتمل الأمثلة على ذلك على CSCAN0010.KeyStoreFiles وCSCAN0020.Base64EncodedCertificate.
  • ResourceMatchPattern: تعبيرات عادية لملحقات ملف ما للتحقق من الباحث.

  • ContentSearchPatterns: صفيف سلاسل تحتوي على عبارات تعبيرات عادية لمطابقتها. إذا لم تُعرف أي أنماط للبحث، تُسترد جميع الملفات المطابقة لقيمة ResourceMatchPattern.

  • ContentSearchFilters: صفيف سلاسل يحتوي على عبارات تعبيرات عادية لتصفية الإيجابيات الخاطئة المتعلقة بالباحث.

  • MatchDetails: رسالة وصفية أو إرشادات تخفيف، أو كليهما معاً، المقرر إضافتها لكل تطابق من الباحث.

  • Recommendation: محتوى حقل الاقتراحات للمطابقة باستخدام تنسيق تقرير PREfast.

  • Severity: عدد صحيح يعكس مستوى خطورة مشكلة ما. يكون لأعلى مستوى خطورة القيمة 1.

    يعرض XML إعداد Credential Scanner

Roslyn Analyzers

ما هي الأخطاء الشائعة عند استخدام مهمة Roslyn Analyzers؟

اُستُرد المشروع باستخدام إصدار Microsoft.NETCore.App خاطئ

رسالة الخطأ الكامل:

"خطأ: تمت استعادة المشروع باستخدام الإصدار Microsoft.NETCore.App x.x.x, ولكن مع الإعدادات الحالية، يُستخدم الإصدار y.y.y بدلاً من ذلك. لحل هذه المشكلة، تأكد من استخدام الإعدادات نفسها للاستعادة وللعمليات اللاحقة مثل الإنشاء أو النشر. وعادة ما تحدث هذه المشكلة إذا عُينت الخاصية RuntimeIdentifier في أثناء الإنشاء أو النشر ولكن ليس في أثناء الاستعادة".

نظرًا لأن مهام Roslyn Analyzers تعمل كجزء من التجميع، يجب أن تكون شجرة المصدر على آلة الإنشاء في حالة قابلة للإنشاء.

خطوة بين بنائك الرئيسي وخطوات Roslyn Analyzers قد وضعت الشجرة المصدر في حالة تمنع البناء. ويُحتمل أن تكون هذه الخطوة الإضافية dotnet.exe publish. حاول تكرار الخطوة التي تقوم باستعادة NuGet قبل خطوة Roslyn Analyzers مباشرةً. قد تضع هذه الخطوة المكررة شجرة المصدر في حالة قابلة للبناء مرة أخرى.

ولا يمكن لـ csc.exe إنشاء مثيل محلل

رسالة الخطأ الكامل:

" اُنتهي من 'csc.exe' مع رمز الخطأ 1 -- لا يمكن إنشاء مثيل من محلل AAAA من C:\BBBB.dll : تعذر تحميل الملف أو تجميع إصدار 'Microsoft.CodeAnalysis,=X.X.X.X، Culture=neutral, PublicKeyToken=31bf3856ad364e35' أو أي مما يتبع له. لا يستطيع النظام العثور على الملف المحدد."

تأكد من أن المحول البرمجي يدعم Roslyn Analyzers. يتعين أن يبلغ تشغيل الأمر csc.exe /version عن قيمة إصدار 2.6 أو أي إصدار أحدث.

في بعض الأحيان يمكن أن يتجاوز ملف .csproj تثبيت جهاز Visual Studio الإنشاء عن طريق الرجوع إلى حزمة من Microsoft.Net.Compilers. إذا كنت لا تنوي استخدام إصدار معين من المحول البرمجي، أزل مراجع Microsoft.Net.Compilers. بخلاف ذلك، تأكد من أن إصدار الحزمة المشار إليها هو أيضًا 2.6 أو أحدث.

حاول الحصول على مسار سجل الأخطاء المحدد في الخيار csc.exe /errorlog. يظهر الخيار والمسار في سجل مهمة بناء Roslyn Analyzers. قد تبدو مثل /errorlog:F:\ts-services-123_work\456\s\Some\Project\Code\Code.csproj.sarif

إصدار المحول البرمجي C# ليس حديثاً بما فيه الكفاية

للحصول على أحدث إصدارات المحول البرمجي C#، انتقل إلى Microsoft.Net.Compilers. للحصول على إصدارك المثبت، شغل csc.exe /version في موجه الأوامر. تأكد من الرجوع إلى حزمة NuGet Microsoft.Net.Compilers، التي يكون إصدارها 2.6 أو أي إصدار أحدث.

لم يتم العثور على سجلات MSBuild وVSBuild

يجب أن تقوم مهمة إنشاء Roslyn Analyzers بالاستعلام عن Azure DevOps لسجل MSBuild من مهمة إنشاء MSBuild. إذا شُغلت مهمة المحلل مباشرة بعد مهمة MSBuild، فلن يكون السجل متوفراً بعد. ضع مهام أخرى بين مهمة MSBuild ومهمة Roslyn Analyzers. وتشمل الأمثلة على المهام الأخرى BinSkim وAnti-Malware Scanner.

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

إذا كنت بحاجة إلى مساعدة إضافية، يتوفر Microsoft Security Code Analysis Support من الاثنين إلى الجمعة من الساعة 9:00 صباحا إلى 5:00 مساء بتوقيت المحيط الهادئ الرسمي.