গ্রাহক-পরিচালিত এনক্রিপশন কী (CMEK) ব্যবহার করে ক্লাউড ফাংশন এনক্রিপ্ট করুন

1. ভূমিকা

ওভারভিউ

ক্লাউড ফাংশন হল ডেভেলপারদের জন্য একক-উদ্দেশ্য, স্বতন্ত্র ফাংশন তৈরি করার জন্য একটি হালকা কম্পিউট সমাধান যা সার্ভার বা রানটাইম পরিবেশ পরিচালনার প্রয়োজন ছাড়াই ক্লাউড ইভেন্টগুলিতে সাড়া দেয়।

আপনি ক্লাউড ফাংশন এবং বিশ্রামে সম্পর্কিত ডেটা সুরক্ষিত করতে ক্লাউড কী ম্যানেজমেন্ট পরিষেবা গ্রাহক-পরিচালিত এনক্রিপশন কী (CMEK) ব্যবহার করতে পারেন। একটি CMEK এর সাথে একটি ফাংশন স্থাপন করা আপনার সম্পূর্ণ নিয়ন্ত্রণে থাকা একটি এনক্রিপশন কী ব্যবহার করে এটির সাথে সম্পর্কিত ডেটা রক্ষা করে। এই ধরনের এনক্রিপশন আপনাকে আর্থিক পরিষেবার মতো নির্দিষ্ট কিছু শিল্পে সম্মতির প্রয়োজনীয়তা পূরণ করতে দেয়। যেহেতু চাবিটি আপনার মালিকানাধীন এবং Google দ্বারা নিয়ন্ত্রিত নয়, তাই কেউ (আপনি সহ) এই এনক্রিপশন কীগুলির দ্বারা সুরক্ষিত ডেটা অ্যাক্সেস করতে পারে না যখন কীগুলি অক্ষম বা ধ্বংস হয়ে যায়৷

ক্লাউড ফাংশনগুলির জন্য, CMEK নিম্নলিখিতগুলি এনক্রিপ্ট করে:

  • ফাংশন সোর্স কোড স্থাপনের জন্য আপলোড করা হয়েছে এবং Google দ্বারা ক্লাউড স্টোরেজে সংরক্ষণ করা হয়েছে, যা বিল্ড প্রক্রিয়ায় ব্যবহৃত হয়।
  • ফাংশন বিল্ড প্রক্রিয়ার ফলাফল, আপনার ফাংশন সোর্স কোড থেকে তৈরি কন্টেইনার ইমেজ সহ, যে ফাংশনটি স্থাপন করা হয়েছে তার প্রতিটি উদাহরণ।
  • অভ্যন্তরীণ ইভেন্ট পরিবহন চ্যানেলের জন্য বিশ্রামের ডেটা (শুধুমাত্র 1ম প্রজন্ম)।

ক্লাউড ফাংশন CMEK ডকুমেন্টেশনে কোন ডেটা এনক্রিপ্ট করা হয়েছে সে সম্পর্কে আপনি আরও তথ্য পেতে পারেন।

আপনি কি নির্মাণ করবেন

এই কোডল্যাবটি দেখায় কিভাবে একটি ক্লাউড ফাংশন (হয় 1ম বা 2য় জেন) স্থাপন করতে হয় যা CMEK ব্যবহার করে এনক্রিপ্ট করা হয়। এই কোডল্যাবটি একটি পাবলিক ক্লাউড ফাংশন ব্যবহার করে, যেমন ডেমো উদ্দেশ্যে প্রমাণীকরণের প্রয়োজন হয় না। আপনি প্রমাণীকরণের প্রয়োজন এমন অন্যান্য ক্লাউড ফাংশনের মতোই একটি প্রমাণীকৃত CMEK-সক্ষম ফাংশন আহ্বান করতে পারেন।

আপনি কি শিখবেন

  • বিদ্যমান সিমেট্রিক কী রিংয়ে কীভাবে একটি CMEK কী তৈরি করবেন
  • কীভাবে একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করবেন
  • 1ম এবং 2য় জেনার উভয়ের জন্য একটি ক্লাউড ফাংশনে CMEK কীভাবে কনফিগার করবেন

2. সেটআপ এবং প্রয়োজনীয়তা

পূর্বশর্ত

  • আপনি ক্লাউড কনসোলে লগ ইন করেছেন
  • আপনি পূর্বে একটি HTTP ট্রিগার করা ক্লাউড ফাংশন স্থাপন করেছেন (আপনার উপযুক্ত ভূমিকা এবং API সক্রিয় আছে তা যাচাই করতে)

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, ক্লাউড শেল সক্রিয় করুন ক্লিক করুন 853e55310c205094.png .

55efc1aaa7a4d3ad.png

যদি এটি আপনার প্রথমবার ক্লাউড শেল শুরু হয়, তাহলে এটি কী তা বর্ণনা করে আপনাকে একটি মধ্যবর্তী স্ক্রীন উপস্থাপন করা হবে। যদি আপনি একটি মধ্যবর্তী স্ক্রীনের সাথে উপস্থাপিত হন, তবে চালিয়ে যান ক্লিক করুন।

9c92662c6a846a5c.png

ক্লাউড শেলের সাথে সংযোগ করতে এবং সংযোগ করতে এটির মাত্র কয়েক মুহূর্ত লাগবে৷

9f0e51b578fecce5.png

এই ভার্চুয়াল মেশিনটি প্রয়োজনীয় সমস্ত বিকাশের সরঞ্জাম দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5 GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার অনেক কাজ, যদি সব না হয়, ব্রাউজার দিয়ে করা যেতে পারে।

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি প্রমাণীকৃত হয়েছেন এবং প্রকল্পটি আপনার প্রকল্প আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
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 কমান্ড আপনার প্রকল্প সম্পর্কে জানে তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি এটি না হয়, আপনি এই কমান্ড দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

3. ক্লাউড ফাংশনগুলির জন্য একটি নতুন কী রিং এবং কী তৈরি করুন৷

নিম্নলিখিত কমান্ডটি চালিয়ে ক্লাউড কেএমএস 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)")"

এর পরে, একটি কী রিং তৈরি করুন যা ক্লাউড কেএমএস কী এবং কী সংস্করণগুলির জন্য মূল সংস্থান।

gcloud kms keyrings create $KEYRING_NAME --location $REGION

অবশেষে, আপনি এখন ক্লাউড KMS-এর মধ্যে আপনার নতুন কী রিং-এ একটি প্রতিসম কী তৈরি করতে পারেন।

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

4. একটি CMEK-সক্ষম ডকার-ফরম্যাটেড আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করুন

এই বিভাগে, আপনি আর্টিফ্যাক্ট রেজিস্ট্রিতে একটি ডকার-ফরম্যাটেড রেপো তৈরি করবেন যা CMEK- সক্ষম । এই কীটি আপনার ক্লাউড ফাংশন স্থাপন করতে ব্যবহৃত একই কী হবে।

প্রথমে, আর্টিফ্যাক্ট রেজিস্ট্রির জন্য আপনার পরিষেবা অ্যাকাউন্টের প্রয়োজন হবে। আপনি এই কমান্ডটি চালিয়ে এটি তৈরি করতে পারেন:

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

আর্টিফ্যাক্ট রেজিস্ট্রি পরিষেবা অ্যাকাউন্টে CryptoKey এনক্রিপ্টার/ডিক্রিপ্টার IAM ভূমিকা ( 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 প্রমাণীকরণ তালিকা চালিয়ে আপনার বর্তমান সক্রিয় অ্যাকাউন্ট যাচাই করতে পারেন।

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

এখন আপনি একটি ডকার-ফরম্যাটেড রেপো তৈরি করতে পারেন যা CMEK-সক্ষম।

দ্রষ্টব্য: যে অঞ্চলটি অবশ্যই CMEK কী হিসাবে একই অঞ্চল হতে হবে৷

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

আপনি এই কমান্ডটি চালিয়ে আপনার নতুন আর্টিফ্যাক্ট রেজিস্ট্রি রেপো দেখতে পারেন:

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

5. চাবিতে পরিষেবা অ্যাকাউন্টের অ্যাক্সেস মঞ্জুর করুন (২য় প্রজন্ম)

এই বিভাগে 2nd জেনার ফাংশনগুলির জন্য পরিষেবা অ্যাকাউন্ট তৈরি করা রয়েছে। আপনি যদি 1st gen ফাংশন তৈরি করেন, অনুগ্রহ করে পরবর্তী বিভাগে যান।

CryptoKey এনক্রিপ্টার/ডিক্রিপ্টার IAM ভূমিকা ( roles/cloudkms.cryptoKeyEncrypterDecrypter ) মঞ্জুর করে আপনাকে অবশ্যই বেশ কয়েকটি পরিষেবা এজেন্টকে কীটিতে অ্যাক্সেস দিতে হবে। এই পরিষেবা এজেন্টগুলি ক্লাউড স্টোরেজে সঞ্চিত সোর্স কোডে অ্যাক্সেস পেতে, আর্টিফ্যাক্ট রেজিস্ট্রিতে একটি CMEK-সুরক্ষিত সংগ্রহস্থলে ফাংশন চিত্র সংরক্ষণ করতে এবং একটি CMEK-এনক্রিপ্ট করা ক্লাউড ফাংশন স্থাপন করতে ব্যবহৃত হয়।

২য় জেনার ফাংশনের জন্য ধাপ

  1. ক্লাউড রান পরিষেবা এজেন্টকে কীটিতে অ্যাক্সেস দিন:
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. আর্টিফ্যাক্ট রেজিস্ট্রি পরিষেবা এজেন্টকে কীটিতে অ্যাক্সেস দিন:
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. ক্লাউড স্টোরেজ পরিষেবা এজেন্টদের কীটিতে অ্যাক্সেস দিন:
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

পরবর্তী বিভাগে, আপনি কিভাবে একটি CMEK-এনক্রিপ্ট করা ফাংশন তৈরি এবং স্থাপন করবেন তা দেখতে পাবেন।

6. চাবিতে পরিষেবা অ্যাকাউন্টের অ্যাক্সেস মঞ্জুর করুন (1ম প্রজন্ম)

এই বিভাগে 1st gen ফাংশনগুলির জন্য পরিষেবা অ্যাকাউন্ট তৈরি করা কভার করে৷ আপনি যদি পূর্বে 2nd gen ফাংশনের জন্য পরিষেবা অ্যাকাউন্ট তৈরি করে থাকেন, অনুগ্রহ করে পরবর্তী বিভাগে যান।

CryptoKey এনক্রিপ্টার/ডিক্রিপ্টার IAM ভূমিকা ( roles/cloudkms.cryptoKeyEncrypterDecrypter ) মঞ্জুর করে আপনাকে অবশ্যই বেশ কয়েকটি পরিষেবা এজেন্টকে কীটিতে অ্যাক্সেস দিতে হবে। এই পরিষেবা এজেন্টগুলি ক্লাউড স্টোরেজে সঞ্চিত সোর্স কোডে অ্যাক্সেস পেতে, আর্টিফ্যাক্ট রেজিস্ট্রিতে একটি CMEK-সুরক্ষিত সংগ্রহস্থলে ফাংশন চিত্র সংরক্ষণ করতে এবং একটি CMEK-এনক্রিপ্ট করা ক্লাউড ফাংশন স্থাপন করতে ব্যবহৃত হয়।

১ম জেনার ফাংশনের জন্য ধাপ

  1. ক্লাউড ফাংশন পরিষেবা এজেন্টকে কীটিতে অ্যাক্সেস দিন:
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. আর্টিফ্যাক্ট রেজিস্ট্রি পরিষেবা এজেন্টকে কীটিতে অ্যাক্সেস দিন:
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. ক্লাউড স্টোরেজ পরিষেবা এজেন্টদের কীটিতে অ্যাক্সেস দিন:
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

পরবর্তী বিভাগে, আপনি কিভাবে একটি CMEK-এনক্রিপ্ট করা ফাংশন তৈরি এবং স্থাপন করবেন তা দেখতে পাবেন।

7. একটি CMEK-এনক্রিপ্ট করা ফাংশন তৈরি করুন (২য় প্রজন্ম)

এই বিভাগে 2nd gen ফাংশন তৈরি করা কভার. আপনি প্রথম জেনার নির্দেশাবলীর জন্য পরবর্তী বিভাগে যেতে পারেন।

এখন যেহেতু আপনার কাছে একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল রয়েছে যা CMEK সক্ষম সহ কনফিগার করা হয়েছে এবং ক্লাউড ফাংশনগুলিকে আপনার কীতে অ্যাক্সেস দেওয়া হয়েছে, আপনি এখন আপনার CMEK কী ব্যবহার করে এনক্রিপ্ট করা একটি ফাংশন স্থাপন করতে পারেন৷

২য় জেনার ফাংশনের জন্য ধাপ:

ফাংশনের জন্য সোর্স কোড তৈরি করুন

যদিও এই কোডল্যাব Node.js ব্যবহার করে, আপনি যেকোনো সমর্থিত রানটাইম ব্যবহার করতে পারেন।

প্রথমে একটি ডিরেক্টরি তৈরি করুন এবং সেই ডিরেক্টরিতে সিডি করুন।

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 এনক্রিপশন ব্যবহার করে ২য় প্রজন্মের ক্লাউড ফাংশন স্থাপন করুন

দ্রষ্টব্য: নীচের উদাহরণটি দেখায় কিভাবে আপনার বর্তমান ডিরেক্টরি থেকে উত্স ব্যবহার করে একটি ফাংশন স্থাপন করতে হয়। নিশ্চিত করুন যে আপনি আপনার ফাংশনের জন্য সোর্স কোড হিসাবে একই ডিরেক্টরিতে আছেন।

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

আপনি এই কমান্ডটি চালানোর ফলে ফলাফল থেকে CMEK কী দেখতে পারেন

gcloud ফাংশন $FUNCTION_NAME –অঞ্চল $REGION | বর্ণনা করে grep kmsKeyName

২য় জেনার ফাংশন পরীক্ষা করুন

আপনি এটি কার্লিং করে আপনার ফাংশন পরীক্ষা করতে পারেন:

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

curl $FUNCTION_URL

যার ফলে নিম্নলিখিত হয়:

Hello World!

যতক্ষণ এনক্রিপশন কী সক্রিয় থাকে, ফাংশনটি কলারের কাছে সাফল্য ফিরিয়ে দেবে। যাইহোক, একবার এনক্রিপশন কী অক্ষম হয়ে গেলে, কলকারী একটি ত্রুটি পাবে।

পরবর্তী বিভাগে, আপনি কীটি নিষ্ক্রিয় করার পরে ফাংশনটি চালু করলে কী ঘটে তা আপনি দেখতে পাবেন।

8. একটি CMEK-এনক্রিপ্ট করা ফাংশন তৈরি করুন (1ম প্রজন্ম)

এই বিভাগটি 1ম জেনার ফাংশন তৈরি করে। আপনি যদি আগে একটি 2nd gen ফাংশন তৈরি করে থাকেন, অনুগ্রহ করে পরবর্তী বিভাগে যান।

এখন যেহেতু আপনার কাছে একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল রয়েছে যা CMEK সক্ষম সহ কনফিগার করা হয়েছে এবং ক্লাউড ফাংশনগুলিকে আপনার কীতে অ্যাক্সেস দেওয়া হয়েছে, আপনি এখন আপনার CMEK কী ব্যবহার করে এনক্রিপ্ট করা একটি ফাংশন স্থাপন করতে পারেন৷

১ম জেনার ফাংশনের জন্য ধাপ:

১ম জেনার ফাংশনের জন্য সোর্স কোড তৈরি করুন

যদিও এই কোডল্যাব Node.js ব্যবহার করে, আপনি যেকোনো সমর্থিত রানটাইম ব্যবহার করতে পারেন।

প্রথমে একটি ডিরেক্টরি তৈরি করুন এবং সেই ডিরেক্টরিতে সিডি করুন।

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 এনক্রিপশন ব্যবহার করে 1st gen ক্লাউড ফাংশন স্থাপন করুন

দ্রষ্টব্য: নীচের উদাহরণটি দেখায় কিভাবে আপনার বর্তমান ডিরেক্টরি থেকে উত্স ব্যবহার করে একটি ফাংশন স্থাপন করতে হয়। নিশ্চিত করুন যে আপনি আপনার ফাংশনের জন্য সোর্স কোড হিসাবে একই ডিরেক্টরিতে আছেন।

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

আপনি এই কমান্ডটি চালানোর ফলে ফলাফল থেকে CMEK কী দেখতে পারেন

gcloud ফাংশন $FUNCTION_NAME –অঞ্চল $REGION | বর্ণনা করে grep kmsKeyName

1 ম জেনার ফাংশন পরীক্ষা করুন

আপনি এটি কার্লিং করে আপনার ফাংশন পরীক্ষা করতে পারেন:

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

curl $FUNCTION_URL

যার ফলে নিম্নলিখিত হয়:

Hello World!

যতক্ষণ এনক্রিপশন কী সক্রিয় থাকে, ফাংশনটি কলারের কাছে সাফল্য ফিরিয়ে দেবে। যাইহোক, একবার এনক্রিপশন কী অক্ষম হয়ে গেলে, কলকারী একটি ত্রুটি পাবে।

পরবর্তী বিভাগে, আপনি কীটি নিষ্ক্রিয় করার পরে ফাংশনটি চালু করলে কী ঘটে তা আপনি দেখতে পাবেন।

9. একটি CMEK-এনক্রিপ্ট করা ফাংশন চালু করুন যেখানে এনক্রিপশন কী নিষ্ক্রিয় করা হয়েছে

এই চূড়ান্ত বিভাগে, আপনি কীটি বাতিল করবেন এবং ফলাফলের ত্রুটি দেখতে আবার ফাংশনটি চালু করবেন।

এনক্রিপশন কী অক্ষম করুন

আপনি কী নিষ্ক্রিয় করতে এই কমান্ডটি চালাতে পারেন। যেহেতু এই কোডল্যাব শুধুমাত্র কীটির একটি সংস্করণ তৈরি করে, আপনি সংস্করণ 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

এবং আপনি এই সময় একটি হ্যালো ওয়ার্ল্ড প্রতিক্রিয়া পাবেন না.

ক্লাউড ফাংশনের লগগুলিতে, আপনি দেখতে পাবেন

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

যখন CMEK কী নিষ্ক্রিয় থাকে তখন সংস্থানগুলি দেখার চেষ্টা করুন৷

এই বিভাগে, আপনি CMEK কী নিষ্ক্রিয় হয়ে গেলে নিম্নলিখিত সংস্থানগুলি অনুপলব্ধ হয়ে যেতে দেখবেন:

  • ফাংশন সোর্স কোড
  • আপনার সোর্স কোড থেকে কন্টেইনার ইমেজ তৈরি করুন

উদাহরণস্বরূপ, ক্লাউড ফাংশনের জন্য সোর্স ট্যাবে যাওয়া আর্কাইভ আনার সময় একটি ত্রুটি দেখায়। আপনি যদি সরাসরি ক্লাউড স্টোরেজে সোর্স কোড ধারণকারী .zip ফাইলটি দেখার চেষ্টা করেন তাহলে আপনি একই ধরনের ত্রুটি পাবেন।

ac3307bb05d30e19.png

উপরন্তু, আর্টিফ্যাক্ট রেজিস্ট্রি থেকে ফাংশনের জন্য কন্টেইনার ইমেজ ব্যবহার করার জন্য আপনার অ্যাক্সেস থাকবে না। উদাহরণস্বরূপ, যদি আপনি ক্লাউড রানে সেই কন্টেইনার চিত্রটি স্থাপন করার চেষ্টা করেন, আপনি একটি ত্রুটি পাবেন যে চিত্রটি পাওয়া যায়নি।

এনক্রিপ্ট করা সম্পদের সম্পূর্ণ তালিকার জন্য অনুগ্রহ করে CMEK ফাংশন ডক্স দেখুন।

10. অভিনন্দন

অভিনন্দন, আপনি কোডল্যাব শেষ করেছেন!

আমরা কভার করেছি কি

  • বিদ্যমান সিমেট্রিক কী রিংয়ে কীভাবে একটি CMEK কী তৈরি করবেন
  • কীভাবে একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করবেন
  • ক্লাউড ফাংশনে সিএমইকে কীভাবে কনফিগার করবেন

আরো তথ্যের জন্য

আপনি নিম্নলিখিত লিঙ্কগুলিতে ক্লাউড ফাংশন এবং CMEK সম্পর্কে আরও তথ্য পেতে পারেন: