रनटाइम की सुरक्षा से जुड़ी अहम जानकारी

1. परिचय

इस लैब में, Cloud Run और GKE क्लस्टर पर एक ऐप्लिकेशन डिप्लॉय किया जाएगा. साथ ही, Software Delivery Shield Security में डिप्लॉयमेंट के लिए सुरक्षा से जुड़ी अहम जानकारी देखी जाएगी

आपको क्या सीखने को मिलेगा

  • Artifact Registry की सुरक्षा से जुड़ी अहम जानकारी
  • Cloud Run में सुरक्षा से जुड़ी अहम जानकारी
  • GKE (जीकेई) सिक्योरिटी पॉस्चर

2. सेटअप और ज़रूरी शर्तें

Cloud Project का सेटअप

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी 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 ऐप्लिकेशन तैयार करना होगा. यह ऐप्लिकेशन, एचटीटीपी अनुरोधों का जवाब देगा.

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 खोलें और सबसे नए बिल्ड के लिए, बिल्ड आर्टफ़ैक्ट की समीक्षा करें.

Google Cloud Console में मौजूद Cloud Build के यूज़र इंटरफ़ेस (यूआई) में, Software Delivery Shield की सुरक्षा से जुड़ी अहम जानकारी वाला पैनल होता है. इसमें, बिल्ड से जुड़ी सुरक्षा की जानकारी दिखती है. जैसे, एसएलएसए लेवल, डिपेंडेंसी में मौजूद कोई भी जोखिम, और बिल्ड का सोर्स.

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 में एक सुरक्षा पैनल (प्रीव्यू) होता है. यह सॉफ़्टवेयर सप्लाई चेन की सुरक्षा से जुड़ी अहम जानकारी दिखाता है. जैसे, एसएलएसए के बिल्ड लेवल के अनुपालन की जानकारी, बिल्ड का सोर्स, और चल रही सेवाओं में मिली कमज़ोरियां.

Cloud Run खोलें और REVISIONS / SECURITY टैब में जाकर, सुरक्षा से जुड़ी अहम जानकारी देखें.

62a9f5d26207e58e.png

इस पैनल में यह जानकारी दिखती है:

  • पहचान और एन्क्रिप्शन: डिफ़ॉल्ट Compute Engine सेवा खाते का ईमेल पता और डिप्लॉयमेंट के लिए इस्तेमाल की गई एन्क्रिप्शन कुंजी.
  • एसएलएसए लेवल: यह बिल्ड, एसएलएसए लेवल 3 पर है. इससे एसएलएसए स्पेसिफ़िकेशन के मुताबिक, सॉफ़्टवेयर बिल्ड प्रोसेस के मैच्योरिटी लेवल की पहचान होती है
  • जोखिम की आशंकाएं: ऐप्लिकेशन की डिपेंडेंसी में मिली कोई भी जोखिम की आशंका.
  • बिल्ड की जानकारी: बिल्ड की जानकारी, जैसे कि बिल्डर और लॉग देखने का लिंक.
  • प्रूवनेंस तैयार करना: बिल्ड के लिए प्रूवनेंस, जो बिल्ड के बारे में पुष्टि किए जा सकने वाले मेटाडेटा का कलेक्शन होता है. इसमें बनाई गई इमेज के डाइजेस्ट, इनपुट सोर्स की जगहें, बिल्ड टूलचेन, बिल्ड के चरण, और बिल्ड की अवधि जैसी जानकारी शामिल होती है.

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, आपके GKE क्लस्टर में चल रहे हर ज़रूरी पॉड में मौजूद कंटेनर इमेज को अपने-आप स्कैन करता है. ऐसा, सार्वजनिक CVE डेटाबेस से मिले जोखिम के डेटा का इस्तेमाल करके किया जाता है. जैसे, NIST.

अगर आपकी कंटेनर इमेज में कोई जोखिम मिलता है, तो GKE उसे जोखिम के स्तर के हिसाब से रेटिंग देता है. साथ ही, Google Cloud console में सुरक्षा की स्थिति वाले डैशबोर्ड में नतीजे दिखाता है. 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, मिली सभी समस्याओं को लॉगिंग में जोड़ता है, ताकि बेहतर रिपोर्टिंग और निगरानी की जा सके.

8. बधाई हो!

बधाई हो! आपने यह कोडलैब पूरा कर लिया है.

हमने इन विषयों के बारे में जानकारी दी है:

  • Cloud Run और GKE पर चल रहे ऐप्लिकेशन और बिल्ड आर्टफ़ैक्ट के लिए, सुरक्षा से जुड़ी अहम जानकारी

व्यवस्थित करें

इस ट्यूटोरियल में इस्तेमाल किए गए संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, संसाधनों वाला प्रोजेक्ट मिटाएं. इसके अलावा, प्रोजेक्ट को बनाए रखने और अलग-अलग संसाधनों को मिटाने का विकल्प भी है.

प्रोजेक्ट मिटाना

बिलिंग बंद करने का सबसे आसान तरीका यह है कि ट्यूटोरियल के लिए बनाया गया प्रोजेक्ट मिटा दें.

पिछली बार अपडेट किए जाने की तारीख: 21/3/23