إحصاءات الأمان في وقت التشغيل

1. مقدمة

في هذا الدرس التطبيقي، ستنشر تطبيقًا على Cloud Run ومجموعة GKE، وستطّلع على إحصاءات الأمان الخاصة بعملية النشر في Software Delivery Shield Security

ما ستتعلمه

  • إحصاءات الأمان في Artifact Registry
  • إحصاءات الأمان في Cloud Run
  • الوضع الأمني في GKE

2. الإعداد والمتطلبات

إعداد مشروع على السحابة الإلكترونية

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديله في أي وقت.
  • رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره بعد ضبطه. تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف المشروع (يتم تحديده عادةً على أنّه PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة وسيظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كل هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير من المال، إن لم تكلفك شيئًا على الإطلاق. لإيقاف الموارد كي لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بأكمله. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

إعداد البيئة

فعِّل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

ecdc43ada29e91b.png

من Cloud Shell، فعِّل واجهات برمجة التطبيقات المطلوبة لهذا التمرين العملي:

gcloud services enable run.googleapis.com \
  cloudbuild.googleapis.com \
  artifactregistry.googleapis.com \
  container.googleapis.com \
  containersecurity.googleapis.com

إذا طُلب منك منح الإذن، انقر على "منح الإذن" للمتابعة.

6356559df3eccdda.png

من المفترض أن يؤدي ذلك إلى ظهور رسالة نجاح مشابهة لما يلي:

Operation "operations/acf.p2-327036483151-73d90d00-47ee-447a-b600-a6badf0eceae" finished successfully.

نفِّذ الأمر لإنشاء مجموعة GKE بشكل غير متزامن. سيتم استخدامها لاحقًا في المختبر:

gcloud beta container clusters create gke-cluster \
    --zone us-central1-a \
    --async

3- تجهيز التطبيق

أولاً، عليك إعداد تطبيق بسيط يستند إلى Express ويعمل على Node.js ويستجيب لطلبات HTTP.

في Cloud Shell، أنشئ دليلاً جديدًا باسم starter-nodejs، ثم انتقِل إلى هذا الدليل:

mkdir starter-nodejs
cd starter-nodejs

أنشئ ملف package.json من خلال تنفيذ الأوامر أدناه:

cat > ./package.json << EOF
{
  "name": "cloudrun-starter-app",
  "version": "1.0.0",
  "description": "Node.js Starter Application",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.18.2"
  }
}
EOF

يحتوي الملف أعلاه على أمر نص برمجي لبدء التشغيل وعلى تبعية لإطار عمل تطبيق الويب Express.

بعد ذلك، في الدليل نفسه، أنشئ ملف index.js من خلال تنفيذ الأوامر أدناه:

cat > ./index.js << EOF
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  console.log('Received a request.');
  res.send("Hello Cloud Run!");
});

const port = process.env.PORT || 8080;

app.listen(port, () => {
  console.log('Listening on port', port);
});
EOF

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

4. نشر تطبيق Cloud Run

نفِّذ الأمر التالي لنشر تطبيقك:

gcloud run deploy starter-app \
  --source . \
  --region us-central1 \
  --allow-unauthenticated \
  --max-instances=3

أكِّد إنشاء مستودع Artifact Registry باتّباع الخطوات التالية:

Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region [us-central1] will be created.

Do you want to continue (Y/n)? y

5- إحصاءات الأمان في Artifact Registry وCloud Build

سيستغرق اكتمال عملية الإنشاء بضع دقائق.

افتح Cloud Build وراجِع عناصر الإصدار لأحدث إصدار.

تحتوي واجهة مستخدم Cloud Build في Google Cloud Console على لوحة "إحصاءات الأمان" في Software Delivery Shield التي تعرض معلومات الأمان المتعلّقة بالإنشاء، مثل مستوى SLSA وأي ثغرات أمنية في التبعيات ومصدر الإنشاء.

7d9fd2213f3704c4.png

راجِع "إحصاءات الأمان" لصورة الحاوية التي تم إنشاؤها. اتّبِع الرابط الخاص بالعناصر التي تم فحصها للاطّلاع على تفاصيل الثغرات الأمنية لهذه الصورة في Artifact Registry.

ارجع إلى وحدة تحكّم Cloud Shell وتأكَّد من اكتمال عملية نشر تطبيق Cloud Run.

Done.
Service [starter-app] revision [starter-app-00001-maw] has been deployed and is serving 100 percent of traffic.
Service URL: https://starter-app-nin5jpgefq-uc.a.run.app

6. إحصاءات الأمان في Cloud Run

يتضمّن Cloud Run لوحة أمان (معاينة) تعرض إحصاءات أمان سلسلة توريد البرامج، مثل معلومات الامتثال لمستوى الإصدار في معيار SLSA، ومصدر الإصدار، والثغرات الأمنية التي تم العثور عليها في الخدمات قيد التشغيل.

افتح Cloud Run وراجِع "إحصاءات الأمان" ضمن علامة التبويب "مراجعات / الأمان".

62a9f5d26207e58e.png

تعرض هذه اللوحة المعلومات التالية:

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

7. الوضع الأمني في GKE

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

في الخطوات التالية، ستنشر التطبيق في مجموعة GKE وستراجع إحصاءات الأمان في لوحة بيانات وضع الأمان في GKE.

تأكَّد من أنّ المجموعة جاهزة من خلال تنفيذ الأمر التالي:

gcloud beta container clusters list

مثال على الناتج:

NAME: gke-cluster
LOCATION: us-central1-a
MASTER_VERSION: 1.24.9-gke.3200
MASTER_IP: 34.29.226.228
MACHINE_TYPE: e2-medium
NODE_VERSION: 1.24.9-gke.3200
NUM_NODES: 3
STATUS: RUNNING

احصل على بيانات الاعتماد والإعدادات لمجموعة GKE:

gcloud container clusters get-credentials gke-cluster  \
    --region=us-central1-a

نفِّذ الأمر لنشر التطبيق باستخدام الصورة التي تم إنشاؤها في الخطوة السابقة:

export PROJECT_ID=$(gcloud config get-value project)

kubectl run starter-app \
  --image us-central1-docker.pkg.dev/${PROJECT_ID}/cloud-run-source-deploy/starter-app:latest \
  --port 8080

من المفترض أن تتضمّن أحمال عمل GKE إعدادات محسّنة تحدّ من مساحة الثغرات الأمنية. قد يكون من الصعب التحقّق من أحمال العمل على مستوى المجموعات بحثًا عن مشاكل في الإعدادات يدويًا على نطاق واسع. يمكنك استخدام لوحة بيانات "وضع الأمان" لفحص إعدادات جميع أحمال العمل النشطة تلقائيًا على مستوى عدة مجموعات وعرض نتائج قابلة للتنفيذ ومُسجّلة واقتراحات مُحدّدة لتحسين وضع الأمان.

فعِّل فحص إعدادات أعباء العمل:

gcloud beta container clusters update gke-cluster \
    --region=us-central1-a \
    --enable-workload-config-audit

بالإضافة إلى فحص إعدادات أحمال العمل، يمكنك أيضًا تفعيل فحص الثغرات الأمنية في أحمال العمل ومراجعة النتائج في لوحة بيانات "وضع الأمان"، وهي مجموعة من الميزات التي تقدّم معلومات واقتراحات مدروسة لتحسين أمان مجموعات GKE وأحمال العمل.

يفحص GKE تلقائيًا صور الحاويات في كل وحدة Pod مؤهَّلة تعمل في مجموعة GKE بحثًا عن الثغرات الأمنية المعروفة، وذلك باستخدام بيانات الثغرات الأمنية من قواعد بيانات CVE العامة، مثل المعهد الوطني للمعايير والتكنولوجيا (NIST).

في حال تم العثور على ثغرة أمنية في صور الحاويات، يحدّد GKE مستوى خطورة لها ويعرض النتائج في لوحة بيانات وضع الأمان في "وحدة تحكّم Google Cloud". تضيف GKE أيضًا إدخالات إلى Cloud Logging لأغراض التدقيق والتتبُّع.

فعِّل ميزة البحث عن الثغرات الأمنية في أحمال العمل:

gcloud beta container clusters update gke-cluster \
    --region=us-central1-a \
    --enable-workload-vulnerability-scanning \
    --async

افتح صفحة وضع الأمان في GKE.

انتظِر بضع دقائق حتى تكتمل عملية تدقيق عبء العمل، ثم راجِع النتائج.

5b1b8158bc55ce67.png

راجِع المشاكل المتعلّقة بالإعدادات ومهام العمل المتأثّرة.

58e6f4b6d8eaa99a.png

أهمية استخدام لوحة بيانات حالة الأمان

لوحة بيانات وضع الأمان هي أحد مقاييس الأمان الأساسية التي يمكنك تفعيلها لأي مجموعة GKE مؤهَّلة. تنصح Google Cloud باستخدام لوحة بيانات وضع الأمان في جميع المجموعات للأسباب التالية:

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

8. تهانينا!

تهانينا! لقد انتهيت من تجربة هذا الدرس التطبيقي حول الترميز.

المواضيع التي تناولناها:

  • معلومات "إحصاءات الأمان" الخاصة بمخرجات الإنشاء والتطبيق الذي يعمل على Cloud Run وGKE

تَنظيم

لتجنُّب تحمّل رسوم في حسابك على Google Cloud مقابل الموارد المستخدَمة في هذا البرنامج التعليمي، احذف المشروع الذي يحتوي على الموارد أو احتفظ بالمشروع واحذف الموارد الفردية.

حذف المشروع

أسهل طريقة لإيقاف الفوترة هي حذف المشروع الذي أنشأته لتنفيذ البرنامج التعليمي.

تاريخ آخر تعديل: 21/3/2023