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

1. مقدمة

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

المعلومات التي ستطّلع عليها

  • إحصاءات الأمان في Artifact Registry
  • إحصاءات الأمان في تشغيل السحابة الإلكترونية
  • الوضع الأمني في GKE

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

إعداد مشروع Cloud

  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- إعداد التطبيق

أولاً، عليك إعداد تطبيق 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- إحصاءات الأمان وأداة Cloud Build بين Artifact Registry

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

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

تحتوي واجهة مستخدم Cloud Build في وحدة التحكّم في Google Cloud على لوحة إحصاءات أمان درع تسليم البرامج التي تعرض معلومات الأمان ذات الصلة بالإصدار، مثل مستوى 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 على لوحة أمان (معاينة) تعرض إحصاءات أمان سلسلة إمداد البرامج، مثل معلومات الامتثال على مستوى إصدار اتفاقية SLSA وأصل الإصدار والثغرات الأمنية التي تم رصدها في الخدمات قيد التشغيل.

افتح التشغيل في السحابة الإلكترونية وراجِع "إحصاءات الأمان" ضمن علامة التبويب "المراجعات" / "الأمان".

62a9f5d26207e58e.png

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

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

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

يمكن أن يقيّم GKE الوضع الأمني لحاوية البيانات ويقدّم إرشادات نشطة حول إعدادات المجموعة وضبط عبء العمل والثغرات الأمنية. ويتضمّن هذا الإصدار لوحة بيانات الوضع الأمني (Preview)، والتي تفحص مجموعات 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 تلقائيًا صور الحاويات في كل مجموعة مزوَّدة من مجموعات GKE في مجموعة GKE، وذلك بحثًا عن الثغرات الأمنية المعروفة، وذلك باستخدام بيانات الثغرات الأمنية الواردة من قواعد بيانات CVE العامة، مثل NIST.

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

تفعيل فحص الثغرات الأمنية في حمل العمل:

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 جميع المشاكل التي تم رصدها إلى ميزة "التسجيل" لتحسين إمكانية الإبلاغ عن البيانات ومراقبتها.

8. تهانينا!

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

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

  • معلومات حول إحصاءات الأمان لعناصر التصميم والتطبيقات قيد التشغيل على Cloud Run وGKE

تَنظيم

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

حذف المشروع

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

تاريخ التعديل الأخير: 21/3/23