পাইথনের সাথে সিক্রেট ম্যানেজার ব্যবহার করা

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

এই কোডল্যাবে, আপনি পাইথনে সিক্রেট ম্যানেজার ব্যবহারের উপর মনোযোগ দেবেন।

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

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

আপনি যা শিখবেন

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

আপনার যা যা লাগবে

  • একটি গুগল ক্লাউড প্রজেক্ট
  • একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
  • পাইথন ৩ ব্যবহারে পরিচিতি

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

পাইথন নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

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

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চলমান একটি কমান্ড লাইন পরিবেশ।

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

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। 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].

৩. সিক্রেট ম্যানেজার এপিআই সক্রিয় করুন

সিক্রেট ম্যানেজার এপিআই ব্যবহার শুরু করার আগে, আপনাকে অবশ্যই এপিআইটি সক্রিয় করতে হবে। ক্লাউড শেল ব্যবহার করে, আপনি নিম্নলিখিত কমান্ডের মাধ্যমে এপিআইটি সক্রিয় করতে পারেন:

gcloud services enable secretmanager.googleapis.com

আপনি এইরকম আউটপুট দেখতে পাবেন:

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

৪. পাইথনের জন্য সিক্রেট ম্যানেজার ক্লায়েন্ট লাইব্রেরি ইনস্টল করা

সিক্রেট ম্যানেজার ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন:

pip3 install --user google-cloud-secret-manager==2.10.0

৫. ইন্টারেক্টিভ পাইথন শুরু করুন

এই টিউটোরিয়ালের একটি অংশে, আপনি IPython নামক একটি ইন্টারেক্টিভ পাইথন ইন্টারপ্রেটার ব্যবহার করবেন, যা ক্লাউড শেলে আগে থেকেই ইনস্টল করা থাকে। ক্লাউড শেলে ipython রান করে একটি সেশন শুরু করুন:

ipython

আপনার এইরকম কিছু দেখা উচিত:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.3.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

৬. গোপনীয়তা তৈরি করা

একটি সিক্রেটে এক বা একাধিক সিক্রেট ভার্সন থাকে। এগুলো gcloud কমান্ড-লাইন ব্যবহার করে তৈরি করা যায়, তবে পাইথন ব্যবহার করেও তৈরি করা সম্ভব।

একটি সিক্রেট ব্যবহার করার জন্য, প্রথমে আপনাকে সিক্রেটটির নামে সেটি তৈরি করতে হবে, তারপর সিক্রেটটির ভ্যালু হিসেবে এর একটি ভার্সন যোগ করতে হবে।

IPython-এর মধ্যে আপনার প্রজেক্ট আইডি সেট করুন:

PROJECT_ID = "<PROJECT_ID>"

একটি গোপনীয়তা তৈরি করুন

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

from google.cloud import secretmanager

def create_secret(secret_id):
    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the parent project.
    parent = f"projects/{PROJECT_ID}"

    # Build a dict of settings for the secret
    secret = {'replication': {'automatic': {}}}

    # Create the secret
    response = client.create_secret(secret_id=secret_id, parent=parent, secret=secret)

    # Print the new secret name.
    print(f'Created secret: {response.name}')   

my_secret_value নামে একটি নতুন সিক্রেট তৈরি করতে ফাংশনটি কল করুন:

create_secret("my_secret_value")

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

Created secret: projects/<PROJECT_NUM>/secrets/my_secret_value

একটি গোপন সংস্করণ যোগ করুন

এখন যেহেতু সিক্রেটটি তৈরি হয়েছে, আপনি একটি ভার্সন তৈরি করে সেটির একটি মান নির্ধারণ করতে পারেন।

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

def add_secret_version(secret_id, payload):
    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the parent secret.
    parent = f"projects/{PROJECT_ID}/secrets/{secret_id}"

    # Convert the string payload into a bytes. This step can be omitted if you
    # pass in bytes instead of a str for the payload argument.
    payload = payload.encode('UTF-8')

    # Add the secret version.
    response = client.add_secret_version(parent=parent, payload={'data': payload})

    # Print the new secret version name.
    print(f'Added secret version: {response.name}')   

একটি নতুন গোপন সংস্করণ তৈরি ও যোগ করতে ফাংশনটি কল করুন:

add_secret_version("my_secret_value", "Hello Secret Manager")

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

Added secret version: projects/<PROJECT_NUM>/secrets/my_secret_value/versions/1

গোপনীয় তথ্যের একাধিক সংস্করণ থাকতে পারে। ভিন্ন একটি মান দিয়ে ফাংশনটি আবার কল করুন:

add_secret_version("my_secret_value", "Hello Again, Secret Manager")

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

Added secret version: projects/<PROJECT_NUM>/secrets/my_secret_value/versions/2

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

৭. গোপনীয় তথ্যে প্রবেশ

একটি গোপন সংস্করণ অ্যাক্সেস করলে তার গোপন বিষয়বস্তু এবং সেই সাথে সংস্করণটি সম্পর্কে অতিরিক্ত মেটাডেটাও পাওয়া যায়। যখন আপনি একটি গোপন সংস্করণ অ্যাক্সেস করেন, তখন আপনি একটি নির্দিষ্ট সংস্করণ উল্লেখ করতে পারেন, অথবা শুধু "latest" উল্লেখ করে সর্বশেষ সংস্করণটি চাইতে পারেন।

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

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

নিম্নলিখিত কোডটি আপনার IPython সেশনে কপি করুন:

def access_secret_version(secret_id, version_id="latest"):
    # Create the Secret Manager client.
    client = secretmanager.SecretManagerServiceClient()

    # Build the resource name of the secret version.
    name = f"projects/{PROJECT_ID}/secrets/{secret_id}/versions/{version_id}"

    # Access the secret version.
    response = client.access_secret_version(name=name)

    # Return the decoded payload.
    return response.payload.data.decode('UTF-8')
    
import hashlib

def secret_hash(secret_value): 
  # return the sha224 hash of the secret value
  return hashlib.sha224(bytes(secret_value, "utf-8")).hexdigest()

গোপনীয় তথ্যটির মানের হ্যাশ হিসেবে তা পুনরুদ্ধার করতে ফাংশনটি কল করুন:

secret_hash(access_secret_version("my_secret_value"))

আপনি হ্যাশের মতো দেখতে একটি আউটপুট দেখতে পাবেন (সঠিক মানটি এই আউটপুটের সাথে নাও মিলতে পারে):

83f8a4edb555cde4271029354395c9f4b7d79706ffa90c746e021d11

যেহেতু আপনি কোনো সংস্করণ উল্লেখ করেননি, তাই সর্বশেষ মানটি নেওয়া হয়েছে।

নিশ্চিত করার জন্য প্রত্যাশিত সংস্করণ নম্বরটি যোগ করে ফাংশনটি কল করুন:

secret_hash(access_secret_version("my_secret_value", version_id=2))

আপনি শেষ কমান্ডের মতোই আউটপুট দেখতে পাবেন:

83f8a4edb555cde4271029354395c9f4b7d79706ffa90c746e021d11

ফাংশনটি আবার কল করুন, কিন্তু এবার প্রথম সংস্করণটি উল্লেখ করে:

secret_hash(access_secret_version("my_secret_value", version_id=1))

এবার আপনি একটি ভিন্ন হ্যাশ দেখতে পাবেন, যা একটি ভিন্ন আউটপুট নির্দেশ করে:

9a3fc8b809ddc611c82aee950c636c7557e220893560ec2c1eeeb177

৮. ক্লাউড ফাংশনের সাথে সিক্রেট ম্যানেজার ব্যবহার করা

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

আপনি যদি ক্লাউড ফাংশনে পাইথন ব্যবহার করতে আগ্রহী হন, তাহলে আপনি HTTP Google Cloud Functions in Python Codelab-টি অনুসরণ করতে পারেন।

exit ফাংশনটি কল করে IPython বন্ধ করুন:

exit

আপনাকে আপনার ক্লাউড শেলে ফিরিয়ে আনা হবে:

yourname@cloudshell:~ (<PROJECT_ID>)$

ক্লাউড ফাংশনস এপিআই ব্যবহার শুরু করার আগে, আপনাকে অবশ্যই এপিআইটি সক্রিয় করতে হবে। ক্লাউড শেল ব্যবহার করে, আপনি নিম্নলিখিত কমান্ডের মাধ্যমে এপিআইটি সক্রিয় করতে পারেন:

gcloud services enable cloudfunctions.googleapis.com cloudbuild.googleapis.com

আমাদের ফাংশনটি তৈরি করার জন্য একটি নতুন ফোল্ডার তৈরি করুন এবং লেখার জন্য খালি ফাইল তৈরি করুন:

mkdir secret-manager-api-demo
cd secret-manager-api-demo
touch main.py
touch requirements.txt

ক্লাউড শেলের উপরের ডান দিক থেকে কোড এডিটরটি খুলুন:

7651a97c51e11a24.png

secret-manager-api-demo ফোল্ডারের ভিতরে থাকা main.py ফাইলটিতে যান। এখানেই আপনার সমস্ত কোড রাখতে হবে।

৯. গোপনীয় তথ্য অ্যাক্সেস করার জন্য একটি ক্লাউড ফাংশন লেখা

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

আপনার পূর্বে তৈরি করা access_secret_version ফাংশনটিকে আপনি আপনার ক্লাউড ফাংশনের ভিত্তি হিসেবে ব্যবহার করতে পারেন।

নিম্নলিখিত কোডটি main.py ফাইলে কপি করুন:

main.py

import os

from google.cloud import secretmanager

project_id = os.environ["PROJECT_ID"]

client = secretmanager.SecretManagerServiceClient()
name = f"projects/{project_id}/secrets/my_secret_value/versions/latest"
response = client.access_secret_version(name=name)
my_secret_value = response.payload.data.decode("UTF-8")


def secret_hello(request):
    if "Again" in my_secret_value:
        return "We meet again!\n"

    return "Hello there.\n"

আপনার ফাংশনটি ডেপ্লয় করার আগে, আপনাকে এনভায়রনমেন্টের সেটআপ চূড়ান্ত করতে হবে। এর জন্য আপনাকে আপনার ফাংশন ডিপেন্ডেন্সি সেট আপ করতে হবে।

requirements.txt নামে একটি নতুন ফাইল তৈরি করুন এবং এতে google-cloud-secret-manager প্যাকেজটি যোগ করুন:

requirements.txt

google-cloud-secret-manager==2.10.0

এখন আপনার কাছে এমন একটি ফোল্ডার থাকার কথা, যেখানে শুধু main.py এবং requirements.txt ফাইল দুটি রয়েছে।

আপনার গোপনীয় তথ্যে প্রবেশের অনুমতি দেওয়া

আপনার ফাংশনটি স্থাপন করার আগে, আপনাকে ক্লাউড ফাংশনসকে আপনার গোপনীয় তথ্য অ্যাক্সেস করার অনুমতি দিতে হবে।

টার্মিনালে ফিরে যান:

c5b686edf94b5222.png

আপনার গোপনীয় তথ্য অ্যাক্সেস করার জন্য ক্লাউড ফাংশনস সার্ভিস অ্যাকাউন্টকে অনুমতি দিন:

export PROJECT_ID=$(gcloud config get-value core/project)

gcloud secrets add-iam-policy-binding my_secret_value \
    --role roles/secretmanager.secretAccessor \
    --member serviceAccount:${PROJECT_ID}@appspot.gserviceaccount.com

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

Updated IAM policy for secret [my_secret_value].
bindings:
- members:
  - serviceAccount:<PROJECT_ID>@appspot.gserviceaccount.com
  role: roles/secretmanager.secretAccessor
etag: BwWiRUt2oB4=
version: 1

১০. আপনার ক্লাউড ফাংশন স্থাপন করা

পূর্ববর্তী বিভাগগুলিতে আপনার সেটআপ করা অনুযায়ী, আপনি এখন আপনার ক্লাউড ফাংশনটি ডেপ্লয় এবং টেস্ট করতে পারেন।

আপনার তৈরি করা শুধু দুটি ফাইল থাকা ফোল্ডারটির ভেতরে ফাংশনটি ডিপ্লয় করুন:

gcloud functions deploy secret_hello \
    --runtime python39 \
    --set-env-vars PROJECT_ID=${PROJECT_ID} \
    --trigger-http \
    --allow-unauthenticated

আপনি নিম্নলিখিত আউটপুটটি দেখতে পাবেন (সংক্ষিপ্ত):

Deploying function (may take a while - up to 2 minutes)...done.

...

entryPoint: secret_hello
httpsTrigger:
  url: https://<REGION>-<PROJECT_ID>.cloudfunctions.net/secret_hello
...
status: ACTIVE
...

নিম্নলিখিত কমান্ডের সাহায্যে আপনার ফাংশনের URL ( httpsTrigger.url মেটাডেটা) সংগ্রহ করুন:

FUNCTION_URL=$(gcloud functions describe secret_hello --format 'value(httpsTrigger.url)')

এখন, আপনার ফাংশনটি কল করে পরীক্ষা করুন যে এটি প্রত্যাশিত রিটার্ন মান দিয়ে অ্যাক্সেস করা যায় কিনা:

curl $FUNCTION_URL

আপনি নিম্নলিখিত আউটপুট দেখতে পাবেন:

We meet again!

এই ফাংশনটি সিক্রেটটির সর্বশেষ সংস্করণকে নির্দেশ করে, যেটিতে "Again" স্ট্রিংটি সেট করা ছিল, সুতরাং এই ফাংশনটি প্রত্যাশিতভাবেই কাজ করছে।

১১. অভিনন্দন!

আপনি পাইথন ব্যবহার করে সিক্রেট ম্যানেজার এপিআই (Secret Manager API) ব্যবহার করতে শিখেছেন!

পরিষ্কার করা

এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলির জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে:

  • ক্লাউড কনসোলে, রিসোর্স পরিচালনা (Manage resources) পৃষ্ঠায় যান।
  • প্রজেক্ট তালিকা থেকে আপনার প্রজেক্টটি নির্বাচন করে ডিলিট-এ ক্লিক করুন।
  • ডায়ালগ বক্সে প্রজেক্ট আইডি টাইপ করুন এবং তারপর প্রজেক্টটি মুছে ফেলার জন্য 'শাট ডাউন'-এ ক্লিক করুন।

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে লাইসেন্সকৃত।