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

1. ভূমিকা

সংক্ষিপ্ত বিবরণ

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

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

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

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

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

তুমি কী তৈরি করবে

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

তুমি কি শিখবে

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

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

পূর্বশর্ত

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

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

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

55efc1aaa7a4d3ad.png সম্পর্কে

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

9c92662c6a846a5c.png সম্পর্কে

ক্লাউড শেলের সাথে সংযোগ স্থাপন এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগবে।

9f0e51b578fecce5.png সম্পর্কে

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

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

  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].

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

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

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

gcloud kms keyrings create $KEYRING_NAME --location $REGION

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

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

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

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

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

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

আর্টিফ্যাক্ট রেজিস্ট্রি পরিষেবা অ্যাকাউন্টে কী-এর অনুমতি পেতে CryptoKey Encrypter/Decrypter 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 auth list চালিয়ে আপনার বর্তমান সক্রিয় অ্যাকাউন্ট যাচাই করতে পারেন।

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

৫. পরিষেবা অ্যাকাউন্টগুলিকে কী (দ্বিতীয় প্রজন্ম) অ্যাক্সেস প্রদান করুন

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

CryptoKey Encrypter/Decrypter 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-এনক্রিপ্টেড ফাংশন তৈরি এবং স্থাপন করতে হয়।

৬. পরিষেবা অ্যাকাউন্টগুলিকে কী (প্রথম প্রজন্ম) অ্যাক্সেস প্রদান করুন

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

CryptoKey Encrypter/Decrypter 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-এনক্রিপ্টেড ফাংশন তৈরি এবং স্থাপন করতে হয়।

৭. একটি CMEK-এনক্রিপ্টেড ফাংশন তৈরি করুন (দ্বিতীয় প্রজন্ম)

এই বিভাগে দ্বিতীয় প্রজন্মের ফাংশন তৈরি করা সম্পর্কে আলোচনা করা হয়েছে। প্রথম প্রজন্মের নির্দেশাবলীর জন্য আপনি পরবর্তী বিভাগে যেতে পারেন।

এখন যেহেতু আপনার কাছে CMEK সক্ষম করে একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি কনফিগার করা আছে এবং ক্লাউড ফাংশনগুলিকে আপনার কীতে অ্যাক্সেস দেওয়া হয়েছে, আপনি এখন আপনার 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 এনক্রিপশন ব্যবহার করে দ্বিতীয় প্রজন্মের ক্লাউড ফাংশন স্থাপন করুন

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

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 $REGION | grep kmsKeyName বর্ণনা করে

দ্বিতীয় প্রজন্মের ফাংশনটি পরীক্ষা করুন

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

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

curl $FUNCTION_URL

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

Hello World!

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

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

৮. একটি CMEK-এনক্রিপ্টেড ফাংশন তৈরি করুন (প্রথম প্রজন্ম)

এই বিভাগে প্রথম জেনারেশন ফাংশন তৈরি করা সম্পর্কে আলোচনা করা হয়েছে। যদি আপনি পূর্বে দ্বিতীয় জেনারেশন ফাংশন তৈরি করে থাকেন, তাহলে অনুগ্রহ করে পরবর্তী বিভাগে যান।

এখন যেহেতু আপনার কাছে CMEK সক্ষম করে একটি আর্টিফ্যাক্ট রেজিস্ট্রি রিপোজিটরি কনফিগার করা আছে এবং ক্লাউড ফাংশনগুলিকে আপনার কীতে অ্যাক্সেস দেওয়া হয়েছে, আপনি এখন আপনার 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 এনক্রিপশন ব্যবহার করে প্রথম প্রজন্মের ক্লাউড ফাংশন স্থাপন করুন

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

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 $REGION | grep kmsKeyName বর্ণনা করে

প্রথম জেনারেশন ফাংশনটি পরীক্ষা করুন

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

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

curl $FUNCTION_URL

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

Hello World!

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

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

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

এই শেষ অংশে, আপনি কীটি বাতিল করবেন এবং ফলাফলের ত্রুটিটি দেখতে আবার ফাংশনটি চালু করবেন।

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

আপনি এই কমান্ডটি ব্যবহার করে কীটি নিষ্ক্রিয় করতে পারেন। যেহেতু এই কোডল্যাবটি কেবল কীটির একটি সংস্করণ তৈরি করে, তাই আপনি সংস্করণ ১ নিষ্ক্রিয় করবেন।

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 এর কোন উত্তর পাবেন না।

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

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 ফাংশন ডক্স দেখুন।

১০. অভিনন্দন

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

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

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

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

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