الرسم البياني لتبعية CycloneDX SBOM – ما هو المفيد؟

جميع المشاركات

لقد سمعنا جميعا الكثير عن SBOMS حديثاً. وسمعنا عن فائدتها وتكوينها ومتطلباتها من حيث الأمن والتنظيم. هذه المرة أريد أن أخصص بعض الوقت للحديث عن جزء أقل شهرة من CyclonDX SBOM - رسم التبعية. 

على عكس الاسم يعني أن الرسم البياني للتبعية ليس جانبًا مرئيًا لـ SBOM. والغرض منه هو المساعدة في وصف اعتماد المكونات على المكونات الأخرى. وهذا يعتمد على مكونات بوم المرجع - معرف فريد لكل مكون SBOM. والفكرة هي إظهار العناصر التي تعتمد على بعضها البعض أو ترتبط ببعضها البعض. يبدو بسيطا بما فيه الكفاية، أليس كذلك؟

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

ما هو الرسم البياني للتبعية؟

تمت إضافة رسم التبعية إلى تنسيق CyclonDX في عام 2019. وكان الغرض المعلن منه هو ربط المكونات معًا باستخدام معرف فريد أصبح يُعرف لاحقًا باسم بوم المرجع. في مثال لحالات استخدام CycloneDXيمكننا أن نرى كيف تستخدم التبعيات المعرف المرجعي للمكونات لإظهار ما يعتمد على ما:

صورة لتبعيات التعليمات البرمجيةصورة لتبعيات التعليمات البرمجيةصورة لتبعيات التعليمات البرمجية

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

يمكن أن يمثل الرسم البياني للتبعية علاقات مباشرة ومتعدية، وعادةً ما يكون بعمق عقدة واحدة.

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

 كيف يستخدم الكاتب الرسم البياني للتبعية؟

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

فيما يلي روابط الرسم البياني للتبعية التي يدعمها Scribe:

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

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

الرسم البياني للتبعية وإنفاذ السياسات

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

تخصيص معلومات الرسم البياني للتبعية الخاصة بك

ونحن نعلم أنه ليس الجميع حريصين على مشاركة كل هذه المعلومات أو أنهم لا يهتمون برؤيتها أو استخدامها بأي شكل من الأشكال.

كوسيلة لمعالجة ذلك، يسمح لك Scribe بإنشاء إصدارات أكثر تحديدًا من SBOM الخاص بك. فيما يلي خيارات التخصيص التي يمكنك استخدامها مع موقعنا فالينت الأداة أثناء إنشاء SBOMs التي ندعمها حاليًا. ستكون الخيارات الإضافية متاحة في المستقبل:

  • لتضمين مجموعات مكونات محددة فقط، استخدم -عناصر للاختيار بين أنواع المجموعات. 
  • لتضمين أو استبعاد أنواع معينة من الحزم، استخدم -نوع الحزمة or -نوع استبعاد الحزمة لتحديد نوع حزمة معين.
  • لتضمين الحزم المثبتة التي تم العثور عليها (package group تثبيت) أو الحزم المشار إليها حسب المصادر (package group مؤشر)، استعمال -حزمة المجموعة للاختيار بين الخيارات.
  • لاستبعاد المكونات، استخدم -filter-regex, – نطاق التصفية، – مرشح خرير الماء لاستبعاد أي مكون تريد استبعاده.
  • لإرفاق أي محتوى ملف، استخدم -إرفاق التعبير العادي لتشمل محتوى الملفات الخارجية.
  • لتضمين بيئات وتسميات مخصصة، استخدم -env -ملصق لإرفاق الحقول المخصصة الخاصة بك. يتيح لك هذا إضافة بيانات التعريف المخصصة إلى SBOM الذي تقوم بإنشائه.

يتطلع إلى المستقبل

يعتبر Scribe السياق والروابط التي نقوم بها بين المكونات المختلفة لـ SBOM الخاص بك باستخدامه ذات أهمية قصوى. مع قدرة فالينت لدينا على ذلك وقع، تحققو إدارة السياسات نحن نعتبر أنه من الممكن تمامًا رؤية المستقبل حيث يمكن القيام بالمزيد من مجرد إدارة السياسات الأمنية. يمكننا أن نتخيل مستقبلًا يمكن فيه استخدام معلومات الرسم البياني للتبعية في مراقبة الجودة، واحتياجات الامتثال المحددة، وحتى في المجالات غير ذات الصلة مثل التكنولوجيا المالية والزراعة.

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

يتم تقديم هذا المحتوى إليك بواسطة Scribe Security، وهي شركة رائدة في مجال توفير حلول أمان سلسلة توريد البرامج الشاملة - حيث توفر أحدث الأمان لعناصر التعليمات البرمجية وعمليات تطوير التعليمات البرمجية وتسليمها عبر سلاسل توريد البرامج. تعرف على المزيد.