एपीआई पासकोड मैनेजमेंट और सुरक्षा

1. परिचय

पहले, Google API को ऐक्सेस करने के लिए Google API कुंजियों का इस्तेमाल किया जाता था. ऐसा तब किया जाता था, जब अन्य तरीके उपलब्ध नहीं होते थे या उन्हें इस्तेमाल करना मुश्किल माना जाता था. सबसे ज़्यादा इस्तेमाल किए जाने वाले उदाहरणों में, Google Maps API और Firebase के ज़रिए उपलब्ध कराए गए Google API को ऐक्सेस करना शामिल था. एआई मॉडल, Gemini जैसे एआई एजेंट, और AI Studio और एजेंट डेवलपमेंट किट जैसे एजेंट डेवलपमेंट फ़्रेमवर्क के लॉन्च होने के बाद, Google के लार्ज लैंग्वेज मॉडल को ऐक्सेस करने के लिए एपीआई कुंजियां मुख्य तरीका बन गई हैं.

एपीआई कुंजियों से कम लेवल की सुरक्षा मिलती है. Google Cloud, कुंजियों के दुरुपयोग को रोकने के लिए कई तरीके उपलब्ध कराता है. हालांकि, चालू एपीआई पासकोड होने पर, Google API को बिना किसी अतिरिक्त पुष्टि या अनुमति की पुष्टि के ऐक्सेस किया जा सकता है. एपीआई कुंजियों के इस्तेमाल को सीमित करने के तरीकों के बारे में, दस्तावेज़ में बताया गया है. Cloud Blog में Gemini और Google API को सुरक्षित रखना पोस्ट में, एपीआई पासकोड को बनाए रखने के बारे में अतिरिक्त सुझाव दिए गए हैं. इस कोडलैब में, आपको इन सुझावों को लागू करने का तरीका बताया जाएगा.

आपको क्या करना होगा

  • Google Cloud पर नई एपीआई कुंजियां बनाते समय, लागू की गई पाबंदियों की समीक्षा करना
  • अपने सभी एपीआई पासकोड की सूची बनाएं और उन पासकोड का पता लगाएं जिनके लिए सुरक्षा की कोई सुविधा उपलब्ध नहीं है
  • एपीआई कुंजियों के इस्तेमाल के आधार पर, उन पर पाबंदियां लागू करना
  • ऐसे ऑटोमेशन को सेट अप करें जो असामान्य इस्तेमाल होने पर, डिजिटल बटन को मिटा दे

आपको किन चीज़ों की ज़रूरत होगी

  • कोई आधुनिक वेब ब्राउज़र, जैसे कि Chrome.
  • एक Google खाता

2. सेटअप

इस कोडलैब में दिए गए निर्देशों के मुताबिक, आपको Google Cloud Console में Cloud Shell में जाकर कमांड चलाने की ज़रूरत होगी. अगर आपके लोकल एनवायरमेंट में gcloud CLI है, तो वहां कमांड चलाई जा सकती हैं.

इन चरणों में दिए गए ऑपरेशन, Cloud Console के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके किए जा सकते हैं. हालांकि, इनके तरीके अलग-अलग हैं. इस कोडलैब में, कमांड लाइन इंटरफ़ेस का इस्तेमाल किया गया है, ताकि इंटरैक्शन को आसान बनाया जा सके. साथ ही, इसे Antigravity CLI जैसे नए एआई एजेंट के साथ आसानी से इंटिग्रेट किया जा सके.

Cloud Shell टर्मिनल शुरू करना

  1. नई ब्राउज़र विंडो में https://console.cloud.google.com/ का इस्तेमाल करके, Google Cloud Console खोलें. हमारा सुझाव है कि बेहतर उपयोगकर्ता अनुभव के लिए, Chrome का इस्तेमाल करें.
  2. Google Cloud में अपने Google खाते से साइन इन करें.
  3. Google Cloud कंसोल में सबसे ऊपर मौजूद, Cloud Shell चालू करें Cloud Shell आइकॉन चालू करें पर क्लिक करें.
    अगर दिख रहा है, तो इन विंडो पर क्लिक करें:
    • Cloud Shell की जानकारी वाली विंडो में जाकर जारी रखें.
    • Google Cloud API कॉल करने के लिए, Cloud Shell को अपने क्रेडेंशियल इस्तेमाल करने की अनुमति दें.

कोई Google Cloud प्रोजेक्ट चुनें

Cloud Console खोलने के बाद, आपकी पुष्टि हो जाती है. साथ ही, आपके काम के लिए प्रोजेक्ट चुनने का विकल्प भी मौजूद होता है. प्रोजेक्ट आईडी, 6 से 30 वर्णों का ऐसा क्रम होता है जिसमें अंग्रेज़ी के छोटे अक्षर, संख्याएं, और डैश सिंबल होते हैं. उदाहरण के लिए, qwiklabs-gcp-04-3075fc9fd77f. Cloud Shell टर्मिनल, चुने गए प्रोजेक्ट के साथ gcloud CLI को कॉन्फ़िगर करता है. आपको इसके बाद, इससे मिलता-जुलता आउटपुट दिखेगा:

Your Cloud Platform project in this session is set to qwiklabs-gcp-04-3075fc9fd77f

इसका मतलब है कि gcloud को दिए जाने वाले अगले निर्देशों में, प्रोजेक्ट आईडी qwiklabs-gcp-04-3075fc9fd77f का इस्तेमाल किया जाएगा.

प्रोजेक्ट आईडी को एनवायरमेंट वैरिएबल के तौर पर सेट करें PROJECT_ID. इस निर्देश का इस्तेमाल करके, अपने सभी प्रोजेक्ट की सूची देखी जा सकती है:

gcloud projects list
  • अगर आपको gcloud में कॉन्फ़िगर किए गए प्रोजेक्ट आईडी के बजाय किसी दूसरे प्रोजेक्ट आईडी का इस्तेमाल करना है, तो your-project-id को बदलें और कमांड चलाएं.
    export PROJECT_ID="your-project-id"
    
    उदाहरण के लिए:
    export PROJECT_ID="qwiklabs-gcp-04-3075fc9fd77f"
    
  • अगर आपको चुना गया प्रोजेक्ट आईडी इस्तेमाल करना है, तो यह कमांड चलाएं:
    export PROJECT_ID=$(gcloud config get project)
    

3. नए एपीआई पासकोड पर पाबंदी लगाना

पहले, उपयोगकर्ता बिना किसी पाबंदी वाली एपीआई कुंजियां बना सकते थे. बिना किसी पाबंदी वाले एपीआई पासकोड का इस्तेमाल, उस प्रोजेक्ट में चालू किए गए किसी भी Google API को कॉल करने के लिए किया जा सकता है जिसमें एपीआई पासकोड बनाया गया था. Google Cloud Console, उपयोगकर्ताओं को बिना किसी पाबंदी वाली कुंजियां बनाने से रोकता है. हालांकि, gcloud CLI या सीधे तौर पर एपीआई कॉल का इस्तेमाल करके, ऐसा किया जा सकता है.

यहां दिए गए तरीके से, पाबंदी वाली ऐसी एपीआई कुंजी बनाई जा सकती है जिसका इस्तेमाल सिर्फ़ किसी खास एपीआई और वेबसाइट के लिए किया जा सकता है.

  1. Google Maps Geolocation API के साथ इस्तेमाल करने के लिए, एक नई एपीआई कुंजी बनाने के लिए, शेल टर्मिनल में यह कमांड चलाएं:
    gcloud services api-keys create --key-id=restricted-api-key \
      --display-name="restricted api key" \
      --api-target=service=geolocation.googleapis.com \
      --project=${PROJECT_ID}
    
    इस कमांड से एक नई एपीआई कुंजी बनती है. इसका इस्तेमाल सिर्फ़ Google Maps की जियोलोकेशन सेवा को कॉल करने के लिए किया जा सकता है.
  2. ऐप्लिकेशन से जुड़ी पाबंदी जोड़कर, कुंजी की सुरक्षा बढ़ाएं. कुंजी के इस्तेमाल को वेबसाइट example.com के सभी पाथ तक सीमित करें. कुंजी पर ऐप्लिकेशन से जुड़ी पाबंदी जोड़ने के लिए, यह कमांड चलाएं:
    gcloud services api-keys update restricted-api-key \
      --location=global \
      --allowed-referrers="example.com/*" \
      --project=${PROJECT_ID}
    
    किसी खास वेबसाइट के लिए कुंजी का इस्तेमाल करने की अनुमति देने के बजाय, --allowed-application का इस्तेमाल करके, अनुमति वाले Android ऐप्लिकेशन तय किए जा सकते हैं याallowed-ips का इस्तेमाल करके, अनुमति वाले आईपी पते तय किए जा सकते हैं. सभी विकल्पों के बारे में जानने के लिए, पूरा दस्तावेज़ पढ़ें.

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

अगर आपको बनाई गई एपीआई पासकोड का इस्तेमाल नहीं करना है, तो उसे मिटा दें:

gcloud services api-keys delete --key-id=restricted-api-key \
  --project=${PROJECT_ID}

4. अपनी एपीआई कुंजियों को कैटलॉग करना

इस चरण में, आपको gcloud CLI का इस्तेमाल करके, अपने एपीआई पासकोड की इन्वेंट्री मिलेगी. नतीजे के तौर पर मिली सूची में, वे सभी एपीआई पासकोड दिखते हैं जो चालू हैं और जिन्हें मिटाया नहीं गया है. साथ ही, आपके पास उनका ऐक्सेस है.

  1. सभी कुंजी के नाम, आईडी, और बनाए जाने की तारीखें देखने के लिए, यह कमांड चलाएं:
    gcloud services api-keys list --project=${PROJECT_ID} \
      --format='value(displayName,name.basename(),createTime.date())'
    
    आउटपुट में, कुंजी का ऐसा नाम दिखेगा जिसे आसानी से पढ़ा जा सकता है. साथ ही, कुंजी का आईडी और उसे बनाए जाने की तारीख भी दिखेगी. यह कुछ इस तरह दिखेगा:
    api key 1	api-key-1	2024-05-10T07:53:24
    api key 2	api-key-2	2025-06-12T14:47:57
    
  2. कोई मुख्य आईडी चुनें और यह देखने के लिए कि कुंजी पर कोई पाबंदी है या नहीं, यहां दिया गया निर्देश चिपकाएं. your-key-id की जगह, चुने गए कुंजी आईडी की वैल्यू डालें:
    gcloud services api-keys describe "your-key-id" --project=${PROJECT_ID}
    

आउटपुट (वाईएएमएल में) में, restrictions के तहत पाबंदियों की सूची शामिल होगी.

createTime: '2024-05-10T07:53:24.986528Z'
displayName: api key 1
etag: W/"u1WuY41K2tPKUZd7cfLoKg=="
name: projects/123456789012/locations/global/keys/api-key-1
restrictions:
  apiTargets:
  - service: geolocation.googleapis.com
  browserKeyRestrictions:
    allowedReferrers:
    - https://example.com/*
uid: 1a2b3c4d-1234-abcd-1234-a1b2c3d4e5f6
updateTime: '2024-05-10T07:53:24.071228Z'

ध्यान दें कि अगर कुंजी को कभी अपडेट नहीं किया गया था, तो createTime और updateTime फ़ील्ड में एक ही टाइमस्टैंप होगा.

  1. उस स्क्रिप्ट को डाउनलोड और चलाएं जो आपके सभी प्रोजेक्ट की जानकारी देती है. साथ ही, उन सभी एपीआई पासकोड को प्रिंट करती है जिन पर कोई पाबंदी नहीं है:
    curl -fsSL -o unrestricted_api_keys.sh \
      "https://github.com/GoogleCloudPlatform/devrel-demos/blob/main/security/api-key-audit/unrestricted_api_keys.sh"
    chmod +x unrestricted_api_keys.sh
    ./unrestricted_api_keys.sh
    
    स्क्रिप्ट चलाने के बाद, आपको इस तरह का आउटपुट दिखेगा:
    DISPLAY NAME    KEY ID    PROJECT ID    CREATION DATE
    Key 1    1a2b3c4d-1234-abcd-1234-a1b2c3d4e5f6    my-project-1    2024-05-10T07:53:24.071228Z
    
    इस CodeLab में इस्तेमाल की गई सभी स्क्रिप्ट, GitHub पर devrel-demos रिपॉज़िटरी में मौजूद Security फ़ोल्डर में मिलेंगी.

5. किसी एपीआई पासकोड के इस्तेमाल की जानकारी देखना

इस चरण में, Google Cloud मेट्रिक के लिए क्वेरी की जाएगी. इससे आपको यह पता चलेगा कि आपकी एपीआई कुंजी का इस्तेमाल करके किन एपीआई को कॉल किया गया था. इस जानकारी का इस्तेमाल करके, कुंजियों के मौजूदा इस्तेमाल की समीक्षा की जा सकती है. साथ ही, अनुमान लगाने के बजाय असल जानकारी के आधार पर, कुंजी पर एपीआई से जुड़ी पाबंदियां लागू की जा सकती हैं.

  1. उसी कुंजी आईडी का इस्तेमाल करें जिसका इस्तेमाल आपने पिछले चरण में किया था या कोई दूसरा कुंजी आईडी चुनें. नीचे दिए गए निर्देश में, your-key-id की जगह चुना गया कुंजी आईडी डालें:
    export KEY_UID=$(
       gcloud services api-keys describe "your-key-id" \
       --format='value(uid)' \
       --project=${PROJECT_ID})
    
  2. खोज को इस तरह सेट करें कि वह एक साल के इस्तेमाल के इतिहास को खोजे. अगर आपको ज़्यादा या कम समय के लिए डेटा देखना है, तो 365 (दिनों की संख्या) को किसी अन्य पॉज़िटिव नंबर से बदलें.
    export DAYS=365
    
  3. Cloud Monitoring API को सीधे कॉल करने के लिए, ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (ADC) को रीफ़्रेश करें. यहां दिया गया कमांड चलाएं और टर्मिनल में दिए गए निर्देशों का पालन करें:
    gcloud auth application-default login
    
  4. Cloud Monitoring API को सेवा के इस्तेमाल से जुड़े मेट्रिक डेटा का अनुरोध भेजने के लिए, यह कमांड चलाएं:
curl -s -G -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  --data-urlencode "filter=metric.type=\"serviceruntime.googleapis.com/api/request_count\" AND resource.labels.credential_id=\"apikey:${KEY_UID}\"" \
  --data-urlencode "interval.startTime=$(date -u -d "${DAYS} days ago" +%Y-%m-%dT%H:%M:%SZ)" \
  --data-urlencode "interval.endTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  "https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/timeSeries" \
  | jq -r '.timeSeries[]?.resource.labels.service' | sort -u

यह कमांड, serviceruntime/api/request_count बिल्ट-इन मेट्रिक से उन डेटा पॉइंट के लिए क्वेरी करती है जिनमें credential_id लेबल मौजूद है. साथ ही, यह चुनी गई एपीआई कुंजी के यूनीक आईडी से मेल खाती है. इसके बाद, यह service लेबल के लिए वैल्यू वापस पाता है और दोहराव को हटाते हुए वैल्यू प्रिंट करता है.

एपीआई पासकोड को सुरक्षित बनाना

इस चरण में, पिछले चरणों में इकट्ठा की गई जानकारी का इस्तेमाल किया जाएगा. इससे, इस्तेमाल की जानकारी के आधार पर एपीआई कुंजी के लिए पाबंदी के कॉन्फ़िगरेशन को अपडेट किया जा सकेगा.

आपको उसी एपीआई पासकोड का इस्तेमाल करना होगा जिसका इस्तेमाल आपने पिछले चरण में किया था. अगर ज़रूरी हो, तो पिछले चरणों के निर्देशों को फिर से चलाएं. इससे यह पक्का किया जा सकेगा कि एनवायरमेंट वैरिएबल PROJECT_ID, KEY_UID, और DAYS सेट हैं.

  1. एपीआई पासकोड का इस्तेमाल करके कॉल किए गए Google API की सूची पाने के लिए, यह निर्देश चलाएं:

SERVICES=$(curl -s -G -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
–data-urlencode "filter=metric.type="serviceruntime.googleapis.com/api/request_count" AND resource.labels.credential_id="apikey:${KEY_UID}""
–data-urlencode "interval.startTime=$(date -u -d "${DAYS} days ago" +%Y-%m-%dT%H:%M:%SZ)"
–data-urlencode "interval.endTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)"
"https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/timeSeries"
| jq -r ‘.timeSeries[]?.resource.labels.service' | sort -u)

1. Build the list of arguments to restrict the API usage for the API key based
on the retrieved list.

```shell
API_TARGET_ARGS=()
for SERVICE in $SERVICES; do
  API_TARGET_ARGS+=("--api-target=service=${SERVICE}")
done
  1. खाली नहीं है, तो पाबंदी वाले एपीआई की सूची बदलें:
    if [ ${#API_TARGET_ARGS[@]} -gt 0 ]; then
        gcloud services api-keys update "projects/${PROJECT_ID}/locations/global/keys/${KEY_UID}" \
        ${API_TARGET_ARGS}
    fi
    

6. अनियमितता के इस्तेमाल की पहचान तय करना

पिछले चरणों में, एपीआई पासकोड को एक्सप्लोर करने और उन्हें सुरक्षित बनाने का तरीका बताया गया था. इस चरण में, निगरानी से जुड़ी सूचनाओं की मदद से, कुंजी के इस्तेमाल में अचानक हुई बढ़ोतरी के जवाब को अपने-आप ट्रिगर करने का तरीका बताया गया है.

यहां दिए गए निर्देशों से एक सूचना बनाई जाती है. यह सूचना तब ट्रिगर होती है, जब एपीआई कुंजी का इस्तेमाल करके किए गए एपीआई कॉल की दर, पिछले पांच मिनट में 10% से ज़्यादा बढ़ जाती है. सूचना को इस तरह कॉन्फ़िगर किया गया है कि वह Cloud Build स्क्रिप्ट को ट्रिगर करे. यह स्क्रिप्ट, एपीआई पासकोड को मिटा देती है, ताकि उसका आगे इस्तेमाल न किया जा सके. इस कुंजी को अगले 30 दिनों तक वापस लाया जा सकता है. कुंजी को वापस लाने का तरीका जानने के लिए, दस्तावेज़ देखें.

इन निर्देशों में, PROJECT_ID और KEY_UID वैरिएबल का फिर से इस्तेमाल किया गया है. इनका इस्तेमाल आपने पिछले चरणों में किया था. अगर आपको कोई दूसरी कुंजी और/या प्रोजेक्ट चुनना है, तो इन वैरिएबल के लिए नई वैल्यू सेट करें. इसके लिए, एपीआई पासकोड के सेटअप और इस्तेमाल के बारे में जानकारी देने वाले चरणों को देखें.

  1. सूचना नीति की फ़ाइल बनाने के लिए, यह स्क्रिप्ट चलाएं:
    cat <<EOF > alert_policy.json
    {
      "displayName": "Credential API Request Count Increase Alert (Project: ${PROJECT_ID})",
      "combiner": "OR",
      "conditions": [
        {
          "displayName": "API Request Count Increase > 10% in 5m with Min Volume",
          "conditionPrometheusQueryLanguage": {
            "query": "(sum(increase(serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\\"apikey:${KEY_UID}\\"}[5m])) / (sum(increase(serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\\"apikey:${KEY_UID}\\"}[5m] offset 5m)) or on() vector(1)) > 1.10) and (sum(increase(serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\\"apikey:${KEY_UID}\\"}[5m])) > 50)",
            "duration": "0s",
            "evaluationInterval": "60s"
          }
        }
      ],
      "enabled": true
    }
    EOF
    
    सूचना से जुड़ी नीति, सूचना को ट्रिगर करने के लिए इस PromQL फ़िल्टर का इस्तेमाल करती है:
     (sum(
       increase(
         serviceruntime_googleapis_com:api_request_count{metric_label_credential_id="API_KEY_UID"}[5m])
     ) /
     (sum(
       increase(
         serviceruntime_googleapis_com:api_request_count{metric_label_credential_id="API_KEY_UID"}[5m] offset 5m)
     ) or on() vector(1)) > 1.10)
    and
     (sum(
       increase(
         serviceruntime_googleapis_com:api_request_count{metric_label_credential_id=\"YOUR_CREDENTIAL_ID_HERE\"}[5m])) > 50)
    
    इससे बढ़ोतरी की दर का हिसाब लगाया जाता है और इसकी तुलना पिछली विंडो से की जाती है. साथ ही, सूचना सिर्फ़ तब ट्रिगर होती है, जब यह 10% से ज़्यादा हो. जब कॉल की कुल संख्या बहुत कम हो, तब सूचना ट्रिगर होने से बचने के लिए, यह शर्त लगाई जाती है कि विंडो में 50 से ज़्यादा एपीआई कॉल होने चाहिए. अगर पिछले पांच मिनट की दर 0 थी, तो NaN (शून्य से मिटाएं) की गणना से बचने के लिए, अगर पिछली विंडो की दर शून्य है, तो यह हर को 1 से बदल देता है. आपके पास सूचना के पैरामीटर बदलने का विकल्प होता है. जैसे, विंडो की अवधि (5m), कम से कम थ्रेशोल्ड (50) या 10% बढ़ोतरी का थ्रेशोल्ड (1.10). नीति के अतिरिक्त पैरामीटर यह तय करते हैं कि शर्त पूरी होने पर सूचना भेजी जानी चाहिए (duration) और हर 60 सेकंड में शर्त की जांच की जानी चाहिए (evaluationInterval).
  2. सूचनाएं पोस्ट करने के लिए इस्तेमाल किया जाने वाला PubSub विषय बनाने के लिए, यह कमांड चलाएं:
    gcloud pubsub topics create api-key-alert-notifications --project=$PROJECT_ID
    
  3. PubSub का इस्तेमाल करने वाली सूचनाओं के लिए सूचना चैनल बनाने के लिए, यह कमांड चलाएं.
    CHANNEL_NAME=$(gcloud beta monitoring channels create \
      --display-name="Pub/Sub Alert Channel" \
      --type="pubsub" \
      --channel-labels="topic=projects/$PROJECT_ID/topics/api-key-alert-notifications" \
      --format='value(name)' \
      --project=$PROJECT_ID)
    
    क्लीन अप करने के चरण में, CHANNEL_NAME एनवायरमेंट वैरिएबल का इस्तेमाल किया जाएगा.
  4. निगरानी से जुड़ी नई सूचना बनाने के लिए, यह कमांड चलाएं:
    gcloud monitoring policies create --policy-from-file=alert_policy.json \
      --project=$PROJECT_ID
    
  5. प्रोजेक्ट में मौजूद एपीआई कुंजियों को मिटाने के लिए, Cloud Build सेवा को अनुमतियां देने के लिए यह कमांड चलाएं.
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \
      --role="roles/apikeys.admin"
    
    apikeys.admin की भूमिका को सिर्फ़ एपीआई कुंजियों के किसी खास इंस्टेंस में बदलाव करने तक सीमित किया जा सकता है. ज़्यादा जानकारी के लिए, IAM की शर्तें देखें.
  6. एपीआई पासकोड मिटाने वाला Cloud Build ट्रिगर बनाने के लिए, यह स्क्रिप्ट चलाएं.
    cat <<EOF > trigger_config.yaml
    name: "delete-compromised-api-key"
    description: "Triggered by Pub/Sub alert to automatically delete the leaking API Key"
    pubsubConfig:
      topic: "projects/${PROJECT_ID}/topics/api-key-alert-notifications"
    build:
      steps:
      - name: "gcr.io/google.com/cloudsdktool/cloud-sdk:slim"
        args:
        - "gcloud"
        - "services"
        - "api-keys"
        - "delete"
        - "${KEY_UID}"
        - "--quiet"
    EOF
    
  7. नई मॉनिटरिंग सूचना का ट्रिगर बनाने के लिए, यह कमांड चलाएं:
    gcloud builds triggers create pubsub \
      --trigger-config=trigger_config.yaml \
      --project=$PROJECT_ID
    

अब सूचना की नीति और Cloud Build ट्रिगर कॉन्फ़िगरेशन फ़ाइलों को मिटाया जा सकता है:

rm alert_policy.json trigger_config.yaml

इसके अलावा, Terraform प्लान का इस्तेमाल करके भी इस ऑटोमेशन को सेट अप किया जा सकता है. Google Cloud DevRel repository में मौजूद abnormal-usage-detection फ़ोल्डर से, Terraform फ़ाइलें डाउनलोड करें. यह प्लान, प्रोजेक्ट आईडी और एपीआई पासकोड यूआईडी को इनपुट पैरामीटर के तौर पर स्वीकार करता है. साथ ही, उन संसाधनों और कॉन्फ़िगरेशन को सेट अप करता है जो आपने इस चरण में देखे थे.

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

अपने Google Cloud खाते पर अनचाहे शुल्क से बचने के लिए, इस अभ्यास के दौरान बनाए गए Pub/Sub विषय, Cloud Build ट्रिगर, और सूचना से जुड़ी नीतियां मिटाना न भूलें.

आपने जो भी संसाधन बनाए हैं उन्हें मिटाने के लिए, ये कमांड चलाएं:

gcloud builds triggers delete delete-compromised-api-key \
  --project=$PROJECT_ID
gcloud beta monitoring channels delete $CHANNEL_NAME \
  --project=$PROJECT_ID \
  --quiet
gcloud pubsub topics delete api-key-alert-notifications \
  --project=$PROJECT_ID
gcloud projects remove-iam-policy-binding $PROJECT_ID \
  --member="serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com" \
  --role="roles/apikeys.admin"

8. खास जानकारी

इस कोडलैब में, आपने Google Cloud API कुंजियों के लिए, एंड-टू-एंड सुरक्षा और ऑटोमेशन फ़्रेमवर्क लागू किया है:

  1. डिफ़ॉल्ट कॉन्फ़िगरेशन को बेहतर बनाया गया है: आपने एपीआई कुंजियां बनाई हैं और उन पर पाबंदी लगाई है, ताकि सिर्फ़ ज़रूरी एपीआई और भरोसेमंद प्लैटफ़ॉर्म (जैसे, कुछ एचटीटीपी रेफ़रर) को ऐक्सेस दिया जा सके.
  2. अपनी कुंजी इन्वेंट्री की ऑडिट की: आपने अपने प्रोजेक्ट एनवायरमेंट को स्कैन किया, ताकि उन कुंजियों का पता लगाया जा सके जिन पर कोई पाबंदी नहीं है. साथ ही, उन्हें अलग किया जा सके, क्योंकि इनसे सुरक्षा को तुरंत खतरा होता है.
  3. इस्तेमाल किए गए डेटा का विश्लेषण: आपने प्रोग्राम के हिसाब से Cloud Monitoring के मेट्रिक डेटा के बारे में क्वेरी की, ताकि कुंजी के इस्तेमाल के पुराने डेटा की प्रोफ़ाइल बनाई जा सके. इससे, इस्तेमाल के पुष्टि किए गए फ़ुटप्रिंट के आधार पर कुंजियों को सीमित किया जा सकता है.
  4. अपने-आप खतरों को कम करने की सुविधा: आपने Cloud Monitoring की सूचना नीति को Pub/Sub विषय और Cloud Build ट्रिगर से जोड़कर, "सर्किट ब्रेकर" बनाया है. इससे, ट्रैफ़िक में अचानक बढ़ोतरी होने पर, आपको हैक की गई कुंजियों को अपने-आप मिटाने की सुविधा मिलती है.

अगले चरण

  • अपनी सभी एपीआई कुंजियों पर पाबंदियां लागू करें: इस लैब में सीखी गई बातों का इस्तेमाल करके, उन सभी एपीआई कुंजियों का पता लगाएं जिन पर आंशिक रूप से पाबंदी लगाई गई है या जिन पर कोई पाबंदी नहीं लगाई गई है. इसके बाद, उन पर एपीआई और क्लाइंट से जुड़ी पाबंदियां लागू करें,
  • एपीआई पासकोड पर "सर्किट ब्रेकर" सेट अप करें: एपीआई पासकोड को अचानक होने वाले इस्तेमाल में बढ़ोतरी से बचाने के लिए, पासकोड के अपने-आप मिटने की सुविधा सेट अप करें. लैब में दिखाए गए gcloud निर्देशों या Terraform का इस्तेमाल करें. IAM की शर्तों का इस्तेमाल करके, अनुमतियों को और ज़्यादा सुरक्षित बनाएं
  • मॉनिटरिंग अलर्ट के बारे में जानें: Google Cloud Monitoring सेवा का इस्तेमाल करके, सूचनाएं सेट अप करने के बारे में ज़्यादा जानें.
  • Google Cloud में उपलब्ध ऐक्सेस कंट्रोल के बारे में ज़्यादा जानें: ऐक्सेस बाउंड्री से जुड़ी नीतियां और ऐक्सेस में किए गए बदलाव सभी जगह लागू करना लेख पढ़ें.