सुरक्षित करने वाली ऐसी कुंजियों (सीएमईके) का इस्तेमाल करके क्लाउड फ़ंक्शन को एन्क्रिप्ट (सुरक्षित) करें जिन्हें ग्राहक मैनेज करते हैं

1. परिचय

खास जानकारी

Cloud Functions, डेवलपर के लिए एक आसान कंप्यूट सॉल्यूशन है. इसकी मदद से, एक ही मकसद के लिए स्टैंड-अलोन फ़ंक्शन बनाए जा सकते हैं. ये फ़ंक्शन, सर्वर या रनटाइम एनवायरमेंट को मैनेज किए बिना, क्लाउड इवेंट का जवाब देते हैं.

Cloud Key Management Service की, ग्राहक की ओर से मैनेज की जाने वाली एन्क्रिप्शन कुंजियों (सीएमईके) का इस्तेमाल करके, Cloud Functions और उससे जुड़े डेटा को सुरक्षित किया जा सकता है. CMEK का इस्तेमाल करके किसी फ़ंक्शन को डिप्लॉय करने से, उससे जुड़ा डेटा सुरक्षित रहता है. ऐसा इसलिए होता है, क्योंकि डेटा को एन्क्रिप्ट (सुरक्षित) करने के लिए इस्तेमाल की जाने वाली कुंजी का पूरा कंट्रोल आपके पास होता है. इस तरह के एन्क्रिप्शन से, वित्तीय सेवाओं जैसी कुछ इंडस्ट्री में अनुपालन से जुड़ी ज़रूरी शर्तों को पूरा किया जा सकता है. कुंजी का मालिकाना हक आपके पास होता है और इसे Google कंट्रोल नहीं करता. इसलिए, जब कुंजियां बंद कर दी जाती हैं या मिटा दी जाती हैं, तो कोई भी व्यक्ति (यहां तक कि आप भी) इन एन्क्रिप्शन कुंजियों से सुरक्षित किए गए डेटा को ऐक्सेस नहीं कर सकता.

Cloud Functions के लिए, CMEK इन चीज़ों को एन्क्रिप्ट (सुरक्षित) करता है:

  • फ़ंक्शन का सोर्स कोड, जिसे डिप्लॉयमेंट के लिए अपलोड किया गया है. इसे Google, Cloud Storage में सेव करता है. इसका इस्तेमाल बिल्ड प्रोसेस में किया जाता है.
  • फ़ंक्शन बनाने की प्रोसेस के नतीजे. इनमें, आपके फ़ंक्शन के सोर्स कोड से बनाई गई कंटेनर इमेज और डिप्लॉय किए गए फ़ंक्शन का हर इंस्टेंस शामिल है.
  • इंटरनल इवेंट ट्रांसपोर्ट चैनलों के लिए, इस्तेमाल में नहीं है ऐसा डेटा (सिर्फ़ पहली जनरेशन).

Cloud Functions CMEK के दस्तावेज़ में, इस बारे में ज़्यादा जानकारी दी गई है कि कौनसा डेटा एन्क्रिप्ट (सुरक्षित) किया जाता है.

आपको क्या बनाना है

इस कोडलैब में, सीएमईके का इस्तेमाल करके एन्क्रिप्ट किए गए Cloud फ़ंक्शन (पहली या दूसरी जनरेशन) को डिप्लॉय करने का तरीका बताया गया है. यह कोडलैब, डेमो के लिए सार्वजनिक Cloud फ़ंक्शन का इस्तेमाल करता है. इसका मतलब है कि इसके लिए पुष्टि करने की ज़रूरत नहीं होती. पुष्टि किए गए सीएमईके की सुविधा वाले फ़ंक्शन को उसी तरह से शुरू किया जा सकता है जिस तरह से पुष्टि करने की सुविधा वाले किसी अन्य Cloud फ़ंक्शन को शुरू किया जाता है.

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

  • मौजूदा सिमेट्रिक की-रिंग पर सीएमईके की बनाने का तरीका
  • Artifact Registry में डेटाबेस बनाने का तरीका
  • पहली और दूसरी जनरेशन, दोनों के लिए Cloud Functions पर सीएमईके को कॉन्फ़िगर करने का तरीका

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

ज़रूरी शर्तें

  • आपने Cloud Console में लॉग इन किया हो
  • आपने पहले से ही एचटीटीपी ट्रिगर किया गया क्लाउड फ़ंक्शन डिप्लॉय किया हो. इससे यह पुष्टि की जा सकेगी कि आपके पास सही भूमिकाएं हैं और एपीआई चालू हैं

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें 853e55310c205094.png पर क्लिक करें.

55efc1aaa7a4d3ad.png

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

9c92662c6a846a5c.png

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

9f0e51b578fecce5.png

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

Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि हो गई है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट कर दिया गया है.

  1. पुष्टि करें कि आपने Cloud Shell में पुष्टि कर ली है. इसके लिए, यह कमांड चलाएं:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. Cloud Functions के लिए नई की-रिंग और कुंजी बनाना

पक्का करें कि Cloud KMS API चालू हो. इसके लिए, यह निर्देश चलाएं:

gcloud services enable cloudkms.googleapis.com

सबसे पहले, एनवायरमेंट वैरिएबल बनाएं. इनमें की-रिंग का नाम, कुंजी का नाम, क्षेत्र, और इस कोडलैब में इस्तेमाल किए गए अन्य वैरिएबल शामिल होने चाहिए.

KEYRING_NAME="keyring-functions"
REGION="us-central1"
KEY_NAME="key-encrypted-function"
PROJECT_ID=$(gcloud config get-value project)
PROJECT_NUMBER="$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')"
USER_EMAIL="$(gcloud config list account --format "value(core.account)")"

इसके बाद, एक की-रिंग बनाएं. यह Cloud KMS की कुंजियों और कुंजी वर्शन के लिए रूट रिसॉर्स होता है.

gcloud kms keyrings create $KEYRING_NAME --location $REGION

आखिर में, अब Cloud KMS में मौजूद नई की-रिंग में एक सिमेट्रिक कुंजी बनाई जा सकती है.

gcloud kms keys create $KEY_NAME --keyring $KEYRING_NAME --location $REGION --purpose "encryption"

4. CMEK की सुविधा वाली, Docker फ़ॉर्मैट वाली Artifact Registry रिपॉज़िटरी बनाना

इस सेक्शन में, Artifact Registry में Docker फ़ॉर्मैट वाली ऐसी रेपो बनाई जाएगी जिसमें सीएमईके की सुविधा चालू हो. यह वही कुंजी होगी जिसका इस्तेमाल Cloud फ़ंक्शन को डिप्लॉय करने के लिए किया गया था.

सबसे पहले, आपको Artifact Registry के लिए सेवा खाते की ज़रूरत होगी. इसे बनाने के लिए, यह कमांड चलाएं:

gcloud beta services identity create --service=artifactregistry.googleapis.com --project=$PROJECT_ID

Artifact Registry के सेवा खाते को CryptoKey Encrypter/Decrypter IAM role (roles/cloudkms.cryptoKeyEncrypterDecrypter) असाइन करने के लिए, यहां दिए गए निर्देश का इस्तेमाल करें, ताकि उसके पास कुंजी से जुड़ी अनुमतियां हों:

gcloud kms keys add-iam-policy-binding \
  $KEY_NAME --location $REGION --keyring=$KEYRING_NAME \
  --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
  --role roles/cloudkms.cryptoKeyEncrypterDecrypter

इसके बाद, उस प्रिंसिपल को भूमिका असाइन करें जो आर्टफ़ैक्ट रजिस्ट्री में रिपॉज़िटरी बनाएगा. जैसे, आपका मौजूदा चालू खाता. gcloud auth list कमांड चलाकर, अपने मौजूदा ऐक्टिव खाते की पुष्टि की जा सकती है.

gcloud kms keys add-iam-policy-binding \
       $KEY_NAME --location $REGION --keyring=$KEYRING_NAME \
       --member user:$USER_EMAIL \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter

अब Docker फ़ॉर्मैट वाली ऐसी रेपो बनाई जा सकती है जिसमें सीएमईके की सुविधा चालू हो.

ध्यान दें: क्षेत्र वही होना चाहिए जो सीएमईके कुंजी के लिए चुना गया है.

REPO_NAME=my-cmek-encrypted-repo 

KEY_FULLPATH=projects/"$PROJECT_ID"/locations/"$REGION"/keyRings/"$KEYRING_NAME"/cryptoKeys/"$KEY_NAME" 

gcloud artifacts repositories create $REPO_NAME \
    --repository-format=docker \
    --location=$REGION \
    --kms-key=$KEY_FULLPATH \
    --async

इस निर्देश को चलाकर, अपनी नई Artifact Registry repo देखी जा सकती है:

gcloud artifacts repositories describe $REPO_NAME --location=$REGION

5. सेवा खातों को कुंजी (दूसरी जनरेशन) का ऐक्सेस देना

इस सेक्शन में, दूसरी जनरेशन के फ़ंक्शन के लिए सेवा खाते बनाने के बारे में बताया गया है. अगर आपको पहली जनरेशन का फ़ंक्शन बनाना है, तो कृपया अगले सेक्शन पर जाएं.

आपको कई सेवा एजेंटों को कुंजी का ऐक्सेस देना होगा. इसके लिए, उन्हें क्रिप्टोकी एन्क्रिप्टर/डिक्रिप्टर IAM भूमिका (roles/cloudkms.cryptoKeyEncrypterDecrypter) असाइन करें. इन सेवा एजेंटों का इस्तेमाल, Cloud Storage में सेव किए गए सोर्स कोड का ऐक्सेस पाने, Artifact Registry में सीएमईके से सुरक्षित रिपॉज़िटरी में फ़ंक्शन इमेज सेव करने, और सीएमईके से एन्क्रिप्ट किए गए Cloud फ़ंक्शन को डिप्लॉय करने के लिए किया जाता है.

दूसरी जनरेशन के फ़ंक्शन के लिए तरीका

  1. Cloud Run सेवा एजेंट को कुंजी का ऐक्सेस दें:
CLOUDRUN_SA=service-$PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com

gcloud kms keys add-iam-policy-binding $KEY_NAME \
--keyring=$KEYRING_NAME \
--location=$REGION \
--member=serviceAccount:$CLOUDRUN_SA \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
  1. Eventarc सेवा एजेंट को कुंजी का ऐक्सेस दें:
EVENTARC_SA=service-$PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

gcloud kms keys add-iam-policy-binding $KEY_NAME \
--keyring=$KEYRING_NAME \
--location=$REGION \
--member=serviceAccount:$EVENTARC_SA \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
  1. Artifact Registry सेवा एजेंट को कुंजी का ऐक्सेस दें:
AR_SA=service-$PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

gcloud kms keys add-iam-policy-binding $KEY_NAME \
--keyring=$KEYRING_NAME \
--location=$REGION \
--member=serviceAccount:$AR_SA \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
  1. Cloud Storage सेवा एजेंटों को कुंजी का ऐक्सेस दें:
STORAGE_SA=service-$PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

gcloud kms keys add-iam-policy-binding $KEY_NAME \
--keyring=$KEYRING_NAME \
--location=$REGION \
--member=serviceAccount:$STORAGE_SA \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

अगले सेक्शन में, आपको सीएमईके से एन्क्रिप्ट (सुरक्षित) किए गए फ़ंक्शन को बनाने और डिप्लॉय करने का तरीका बताया जाएगा.

6. सेवा खातों को कुंजी (पहली जनरेशन) का ऐक्सेस देना

इस सेक्शन में, पहली जनरेशन के फ़ंक्शन के लिए सेवा खाते बनाने के बारे में बताया गया है. अगर आपने दूसरी जनरेशन के फ़ंक्शन के लिए पहले से ही सेवा खाते बनाए हुए हैं, तो कृपया अगले सेक्शन पर जाएं.

आपको कई सेवा एजेंटों को कुंजी का ऐक्सेस देना होगा. इसके लिए, उन्हें क्रिप्टोकी एन्क्रिप्टर/डिक्रिप्टर IAM भूमिका (roles/cloudkms.cryptoKeyEncrypterDecrypter) असाइन करें. इन सेवा एजेंटों का इस्तेमाल, Cloud Storage में सेव किए गए सोर्स कोड का ऐक्सेस पाने, Artifact Registry में सीएमईके से सुरक्षित रिपॉज़िटरी में फ़ंक्शन इमेज सेव करने, और सीएमईके से एन्क्रिप्ट किए गए Cloud फ़ंक्शन को डिप्लॉय करने के लिए किया जाता है.

पहली जनरेशन के फ़ंक्शन के लिए तरीका

  1. Cloud Functions सेवा एजेंट को कुंजी का ऐक्सेस दें:
FUNCTION_SA=service-$PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com

gcloud kms keys add-iam-policy-binding $KEY_NAME \
--keyring=$KEYRING_NAME \
--location=$REGION \
--member=serviceAccount:$FUNCTION_SA \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
  1. Artifact Registry सेवा एजेंट को कुंजी का ऐक्सेस दें:
AR_SA=service-$PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com

gcloud kms keys add-iam-policy-binding $KEY_NAME \
--keyring=$KEYRING_NAME \
--location=$REGION \
--member=serviceAccount:$AR_SA \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
  1. Cloud Storage सेवा एजेंटों को कुंजी का ऐक्सेस दें:
STORAGE_SA=service-$PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

gcloud kms keys add-iam-policy-binding $KEY_NAME \
--keyring=$KEYRING_NAME \
--location=$REGION \
--member=serviceAccount:$STORAGE_SA \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

अगले सेक्शन में, आपको सीएमईके से एन्क्रिप्ट (सुरक्षित) किए गए फ़ंक्शन को बनाने और डिप्लॉय करने का तरीका बताया जाएगा.

7. CMEK से एन्क्रिप्ट किया गया फ़ंक्शन (दूसरी जनरेशन) बनाना

इस सेक्शन में, दूसरी जनरेशन के फ़ंक्शन बनाने के बारे में बताया गया है. पहली जनरेशन के निर्देशों के लिए, अगले सेक्शन पर जाएं.

अब आपने CMEK की सुविधा चालू करके, Artifact Registry रिपॉज़िटरी को कॉन्फ़िगर कर लिया है. साथ ही, Cloud Functions को अपनी कुंजी का ऐक्सेस दे दिया है. अब आपके पास ऐसा फ़ंक्शन डिप्लॉय करने का विकल्प है जिसे CMEK की कुंजी का इस्तेमाल करके एन्क्रिप्ट (सुरक्षित) किया गया है.

दूसरी जनरेशन के फ़ंक्शन के लिए तरीका:

फ़ंक्शन के लिए सोर्स कोड बनाना

इस कोडलैब में Node.js का इस्तेमाल किया गया है. हालांकि, आपके पास सपोर्ट किए गए किसी भी रनटाइम का इस्तेमाल करने का विकल्प है.

सबसे पहले, एक डायरेक्ट्री बनाएं और उस डायरेक्ट्री में cd करें.

mkdir ~/cmek-function-2ndgen && cd $_

इसके बाद, package.json फ़ाइल बनाएं.

touch package.json

echo '{
  "dependencies": {
    "@google-cloud/functions-framework": "^2.1.0"
  }
}
' > package.json

इसके बाद, index.js सोर्स फ़ाइल बनाएं.

touch index.js

echo 'const functions = require("@google-cloud/functions-framework");

functions.http("helloWorld", (req, res) => {
 res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});' > index.js

CMEK एन्क्रिप्शन का इस्तेमाल करके, दूसरी जनरेशन के Cloud फ़ंक्शन को डिप्लॉय करना

ध्यान दें: यहां दिए गए उदाहरण में, आपकी मौजूदा डायरेक्ट्री के सोर्स का इस्तेमाल करके फ़ंक्शन को डिप्लॉय करने का तरीका बताया गया है. पक्का करें कि आप उसी डायरेक्ट्री में हों जिसमें आपके फ़ंक्शन का सोर्स कोड है.

FUNCTION_NAME=protect-me-cmek-2ndgen
ENTRY_POINT=helloWorld

REPO_FULLPATH=projects/"$PROJECT_ID"/locations/"$REGION"/repositories/$REPO_NAME

gcloud beta functions deploy $FUNCTION_NAME  \
--gen2 \
--region $REGION \
--kms-key $KEY_FULLPATH \
--docker-repository $REPO_FULLPATH \
--source . \
--trigger-http \
--allow-unauthenticated \
--runtime nodejs16 \
--entry-point $ENTRY_POINT

इस निर्देश को चलाने पर, आपको नतीजे के तौर पर मिले आउटपुट में सीएमईके कुंजी दिखेगी

gcloud functions describe $FUNCTION_NAME –region $REGION | grep kmsKeyName

दूसरी जनरेशन के फ़ंक्शन को आज़माना

अपने फ़ंक्शन की जांच करने के लिए, कर्ल करें:

FUNCTION_URL="$(gcloud functions describe $FUNCTION_NAME --region $REGION --format='get(serviceConfig.uri)')"

curl $FUNCTION_URL

जिसकी वजह से ये समस्याएं होती हैं:

Hello World!

एन्क्रिप्शन कुंजी चालू रहने तक, फ़ंक्शन कॉल करने वाले व्यक्ति को 'सफल' स्टेटस दिखाएगा. हालांकि, एन्क्रिप्शन कुंजी बंद होने के बाद, कॉल करने वाले व्यक्ति को गड़बड़ी का मैसेज मिलेगा.

अगले सेक्शन में, आपको यह जानकारी मिलेगी कि कुंजी बंद होने के बाद, फ़ंक्शन को चालू करने पर क्या होता है.

8. CMEK से एन्क्रिप्ट किया गया फ़ंक्शन (पहली जनरेशन) बनाना

इस सेक्शन में, पहली जनरेशन के फ़ंक्शन बनाने के बारे में बताया गया है. अगर आपने पहले से ही दूसरी जनरेशन का फ़ंक्शन बनाया हुआ है, तो कृपया अगले सेक्शन पर जाएं.

अब आपने CMEK की सुविधा चालू करके, Artifact Registry रिपॉज़िटरी को कॉन्फ़िगर कर लिया है. साथ ही, Cloud Functions को अपनी कुंजी का ऐक्सेस दे दिया है. अब आपके पास ऐसा फ़ंक्शन डिप्लॉय करने का विकल्प है जिसे CMEK की कुंजी का इस्तेमाल करके एन्क्रिप्ट (सुरक्षित) किया गया है.

पहली जनरेशन के फ़ंक्शन के लिए तरीका:

पहली जनरेशन के फ़ंक्शन के लिए सोर्स कोड बनाना

इस कोडलैब में Node.js का इस्तेमाल किया गया है. हालांकि, आपके पास सपोर्ट किए गए किसी भी रनटाइम का इस्तेमाल करने का विकल्प है.

सबसे पहले, एक डायरेक्ट्री बनाएं और उस डायरेक्ट्री में cd करें.

mkdir ~/cmek-function-1stgen && cd $_

इसके बाद, package.json फ़ाइल बनाएं.

touch package.json

echo '{
    "name": "function-cmek-codelab",
    "version": "0.0.1"
}' > package.json

इसके बाद, index.js सोर्स फ़ाइल बनाएं.

touch index.js

echo "exports.helloWorld = (req, res) => {
    let message = req.query.message || req.body.message || 'Hello World!';
    res.status(200).send(message);
};" > index.js

CMEK एन्क्रिप्शन का इस्तेमाल करके, पहली जनरेशन के Cloud फ़ंक्शन को डिप्लॉय करना

ध्यान दें: यहां दिए गए उदाहरण में, आपकी मौजूदा डायरेक्ट्री के सोर्स का इस्तेमाल करके फ़ंक्शन को डिप्लॉय करने का तरीका बताया गया है. पक्का करें कि आप उसी डायरेक्ट्री में हों जिसमें आपके फ़ंक्शन का सोर्स कोड है.

FUNCTION_NAME=protect-me-cmek-1stgen
ENTRY_POINT=helloWorld

REPO_FULLPATH=projects/"$PROJECT_ID"/locations/"$REGION"/repositories/$REPO_NAME

gcloud functions deploy $FUNCTION_NAME  \
--region $REGION \
--kms-key $KEY_FULLPATH \
--docker-repository $REPO_FULLPATH \
--source . \
--trigger-http \
--allow-unauthenticated \
--runtime nodejs16 \
--entry-point $ENTRY_POINT

इस निर्देश को चलाने पर, आपको नतीजे के तौर पर मिले आउटपुट में सीएमईके कुंजी दिखेगी

gcloud functions describe $FUNCTION_NAME –region $REGION | grep kmsKeyName

पहली जनरेशन के फ़ंक्शन को आज़माना

अपने फ़ंक्शन की जांच करने के लिए, कर्ल करें:

FUNCTION_URL="$(gcloud functions describe $FUNCTION_NAME --region $REGION --format='get(httpsTrigger.url)')"

curl $FUNCTION_URL

जिसकी वजह से ये समस्याएं होती हैं:

Hello World!

एन्क्रिप्शन कुंजी चालू रहने तक, फ़ंक्शन कॉल करने वाले व्यक्ति को 'सफल' स्टेटस दिखाएगा. हालांकि, एन्क्रिप्शन कुंजी बंद होने के बाद, कॉल करने वाले व्यक्ति को गड़बड़ी का मैसेज मिलेगा.

अगले सेक्शन में, आपको यह जानकारी मिलेगी कि कुंजी बंद होने के बाद, फ़ंक्शन को चालू करने पर क्या होता है.

9. सीएमईके से एन्क्रिप्ट (सुरक्षित) किए गए ऐसे फ़ंक्शन को कॉल करना जिसकी एन्क्रिप्शन कुंजी बंद कर दी गई है

इस आखिरी सेक्शन में, आपको कुंजी को अमान्य करना होगा. साथ ही, गड़बड़ी का नतीजा देखने के लिए, फ़ंक्शन को फिर से शुरू करना होगा.

एन्क्रिप्शन कुंजी को बंद करना

कुंजी को बंद करने के लिए, इस निर्देश का इस्तेमाल किया जा सकता है. इस कोडलैब में, सिर्फ़ एक वर्शन की कुंजी बनाई जाती है. इसलिए, आपको वर्शन 1 बंद करना होगा.

gcloud kms keys versions disable 1 \
    --key=$KEY_NAME \
    --keyring=$KEYRING_NAME \
    --location=$REGION

इसके बाद, आपको यह जानकारी दिखेगी:

algorithm: GOOGLE_SYMMETRIC_ENCRYPTION
createTime: '2023-04-11T03:30:49.111832653Z'
generateTime: '2023-04-11T03:30:49.111832653Z'
name: projects/dogfood-gcf-saraford/locations/us-central1/keyRings/myKeyRing/cryptoKeys/encrypted-function/cryptoKeyVersions/1
protectionLevel: SOFTWARE
state: DISABLED

बंद किए गए बटन की मदद से फ़ंक्शन को चालू करना

अब curl फ़ंक्शन को फिर से लागू करें.

curl $FUNCTION_URL

और इस बार आपको Hello World का जवाब नहीं मिलेगा.

Cloud Function के लॉग में, आपको यह दिखेगा

User's CMEK key has been disabled. CMEK key: projects/<PROJECT-NAME>/locations/us-central1/keyRings/myKeyRing/cryptoKeys/encrypted-function

सीएमईके कुंजी बंद होने पर, संसाधनों को देखने की कोशिश करना

इस सेक्शन में, आपको यह जानकारी दिखेगी कि सीएमईके कुंजी बंद होने पर, ये संसाधन उपलब्ध नहीं होंगे:

  • फ़ंक्शन का सोर्स कोड
  • आपके सोर्स कोड से बनाई गई कंटेनर इमेज

उदाहरण के लिए, Cloud Functions के सोर्स टैब पर जाने पर, संग्रह को फ़ेच करते समय गड़बड़ी दिखती है. अगर सोर्स कोड वाली .zip फ़ाइल को सीधे Cloud Storage में देखने की कोशिश की जाती है, तो आपको इसी तरह की गड़बड़ी का मैसेज मिलेगा.

ac3307bb05d30e19.png

इसके अलावा, आपके पास Artifact Registry से फ़ंक्शन के लिए कंटेनर इमेज का इस्तेमाल करने का ऐक्सेस नहीं होगा. उदाहरण के लिए, अगर उस कंटेनर इमेज को Cloud Run पर डिप्लॉय करने की कोशिश की जाती है, तो आपको यह गड़बड़ी दिखेगी कि इमेज नहीं मिली.

एन्क्रिप्ट (सुरक्षित) किए गए संसाधनों की पूरी सूची देखने के लिए, कृपया सीएमईके फ़ंक्शन के दस्तावेज़ देखें.

10. बधाई हो

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

हमने क्या-क्या बताया

  • मौजूदा सिमेट्रिक की-रिंग पर सीएमईके की बनाने का तरीका
  • Artifact Registry में डेटाबेस बनाने का तरीका
  • Cloud Functions पर सीएमईके को कॉन्फ़िगर करने का तरीका

ज़्यादा जानकारी के लिए

Cloud Functions और सीएमईके के बारे में ज़्यादा जानकारी के लिए, यहां दिए गए लिंक पर जाएं: