بینش امنیتی زمان اجرا

1. معرفی

در این آزمایشگاه شما یک برنامه را در Cloud Run و کلاستر GKE مستقر خواهید کرد و بینش های امنیتی را برای استقرار در Software Delivery Shield Security مشاهده خواهید کرد.

چیزی که یاد خواهید گرفت

  • بینش امنیتی رجیستری مصنوع
  • Cloud Run Security Insights
  • وضعیت امنیتی GKE

2. راه اندازی و الزامات

راه اندازی پروژه ابری

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما می توانید آن را در هر زمان به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (معمولاً به عنوان PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، می توانید منابعی را که ایجاد کرده اید حذف کنید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

راه اندازی محیط

Cloud Shell را با کلیک بر روی نماد سمت راست نوار جستجو فعال کنید.

ecdc43ada29e91b.png

از Cloud Shell، API های مورد نیاز این آزمایشگاه را فعال کنید:

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 مبتنی بر Express را آماده می‌کنید که به درخواست‌های 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

ایجاد مخزن رجیستری مصنوع را تأیید کنید:

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 را باز کنید و مصنوعات ساخت را برای آخرین ساخت بررسی کنید.

رابط کاربری 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 Security Insights

Cloud Run حاوی یک پنل امنیتی (پیش نمایش) است که بینش های امنیتی زنجیره تامین نرم افزار مانند اطلاعات مطابقت سطح ساخت SLSA، منشأ ساخت و آسیب پذیری های موجود در سرویس های در حال اجرا را نمایش می دهد.

Cloud Run را باز کنید و بینش‌های امنیتی را در برگه REVISIONS / SECURITY مرور کنید.

62a9f5d26207e58e.png

این پنل اطلاعات زیر را نمایش می دهد:

  • هویت و رمزگذاری: آدرس ایمیل حساب پیش‌فرض خدمات Compute Engine و کلید رمزگذاری مورد استفاده برای استقرار.
  • سطح SLSA: این ساخت در سطح SLSA 3 است که سطح بلوغ فرآیند ساخت نرم افزار را مطابق با مشخصات 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 با استفاده از داده‌های آسیب‌پذیری از پایگاه‌های داده عمومی CVE مانند NIST ، به‌طور خودکار تصاویر کانتینر را در هر Pod واجد شرایطی که در کلاستر GKE شما اجرا می‌شود، برای آسیب‌پذیری‌های شناخته شده اسکن می‌کند.

اگر آسیب‌پذیری در تصاویر کانتینر شما یافت شود، 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 خود برای منابع استفاده شده در این آموزش، یا پروژه حاوی منابع را حذف کنید یا پروژه را نگه دارید و منابع فردی را حذف کنید.

حذف پروژه

ساده ترین راه برای حذف صورتحساب، حذف پروژه ای است که برای آموزش ایجاد کرده اید.

-

آخرین به روز رسانی: 3/21/23