DLP API এবং ক্লাউড ফাংশন সহ ক্লাউড স্টোরেজে আপলোড করা ডেটার স্বয়ংক্রিয় শ্রেণীবিভাগ

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

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

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

তুমি কি করবে

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

তোমার যা লাগবে

  • বিলিং সেট আপ সহ একটি গুগল ক্লাউড প্রকল্প। যদি আপনার কাছে এটি না থাকে তবে আপনাকে একটি তৈরি করতে হবে।

2. সেট আপ করা

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

gcloud config set project [PROJECT_ID] দিয়ে সেট করে নিশ্চিত করুন যে আপনি সঠিক প্রজেক্টটি ব্যবহার করছেন।

API গুলি সক্ষম করুন

আপনার গুগল ক্লাউড প্রোজেক্টে প্রয়োজনীয় API গুলি সক্ষম করুন:

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

পরিষেবা অ্যাকাউন্টের অনুমতি

একটি পরিষেবা অ্যাকাউন্ট হল একটি বিশেষ ধরণের অ্যাকাউন্ট যা অ্যাপ্লিকেশন এবং ভার্চুয়াল মেশিনগুলি অনুমোদিত API কল করার জন্য ব্যবহার করে।

অ্যাপ ইঞ্জিন ডিফল্ট পরিষেবা অ্যাকাউন্ট

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

প্রথমে, আমরা আমাদের পরিষেবা অ্যাকাউন্টকে ডেটা ক্ষতি প্রতিরোধের কাজগুলি পরিচালনা করার জন্য প্রয়োজনীয় DLP প্রশাসকের ভূমিকা প্রদান করব:

gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
--member serviceAccount:$GOOGLE_CLOUD_PROJECT@appspot.gserviceaccount.com \
--role roles/dlp.admin

এবং পরিশেষে, DLP API সার্ভিস এজেন্ট ভূমিকা প্রদান করুন যা বিগকুয়েরি, স্টোরেজ, ডেটাস্টোর, পাবসাব এবং কী ম্যানেজমেন্ট পরিষেবার জন্য পরিষেবা অ্যাকাউন্টের অনুমতি দেবে:

gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
--member serviceAccount:$GOOGLE_CLOUD_PROJECT@appspot.gserviceaccount.com \
--role roles/dlp.serviceAgent

ডিএলপি পরিষেবা অ্যাকাউন্ট

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

gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT \
--member serviceAccount:service-`gcloud projects list --filter="PROJECT_ID:$GOOGLE_CLOUD_PROJECT" --format="value(PROJECT_NUMBER)"`@dlp-api.iam.gserviceaccount.com \
--role roles/viewer

৩. ক্লাউড স্টোরেজ বালতি

এখন আমাদের ডেটা সংরক্ষণের জন্য 3টি ক্লাউড স্টোরেজ বাকেট তৈরি করতে হবে:

  • কোয়ারেন্টাইন বাকেট: আমাদের তথ্য প্রাথমিকভাবে এখানে আপলোড করা হবে।
  • সংবেদনশীল ডেটা বাকেট: DLP API দ্বারা সংবেদনশীল বলে নির্ধারিত ডেটা এখানে সরানো হবে।
  • সংবেদনশীল নয় এমন ডেটা বাকেট: DLP API দ্বারা সংবেদনশীল নয় বলে নির্ধারিত ডেটা এখানে সরানো হবে।

আমরা gsutil কমান্ড ব্যবহার করে আমাদের তিনটি বাকেট একসাথে তৈরি করতে পারি:

gsutil mb gs://[YOUR_QUARANTINE_BUCKET] \
gs://[YOUR_SENSITIVE_DATA_BUCKET] \
gs://[YOUR_NON_SENSITIVE_DATA_BUCKET] 

আপনার তৈরি করা বালতিগুলির নামগুলি নোট করুন - আমাদের পরে সেগুলি প্রয়োজন হবে।

৪. প্রকাশক/উপ-বিষয় এবং সাবস্ক্রিপশন

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

প্রথমে, একটি বিষয় তৈরি করা যাক। আমাদের কোয়ারেন্টাইন স্টোরেজ বাকেটে প্রতিবার কোনও ফাইল যুক্ত হলে এখানে একটি বার্তা প্রকাশিত হবে। আমরা এটির নাম দেব 'classify-topic'।

gcloud pubsub topics create classify-topic

বিষয়বস্তু যখন একটি বার্তা প্রকাশ করবে তখন একটি সাবস্ক্রিপশনের বিজ্ঞপ্তি দেওয়া হবে। আসুন 'classify-sub' নামে একটি pubsub সাবস্ক্রিপশন তৈরি করি:

gcloud pubsub subscriptions create classify-sub --topic classify-topic

সেই সাবস্ক্রিপশনটি দ্বিতীয় ক্লাউড ফাংশনটি ট্রিগার করবে যা একটি DLP কাজ শুরু করবে যা ফাইলটি পরিদর্শন করবে এবং এটিকে তার সঠিক স্থানে স্থানান্তর করবে।

৫. ক্লাউড ফাংশন

ক্লাউড ফাংশন আমাদেরকে সার্ভার বা রানটাইম পরিবেশ পরিচালনা করার প্রয়োজন ছাড়াই হালকা, ইভেন্ট-ভিত্তিক, অ্যাসিঙ্ক্রোনাস একক-উদ্দেশ্য ফাংশন স্থাপন করতে দেয়। আমরা dlp-cloud-functions-tutorials/gcs-dlp-classification-python/ এ অবস্থিত প্রদত্ত main.py ফাইল ব্যবহার করে 2টি ক্লাউড ফাংশন স্থাপন করতে যাচ্ছি।

ভেরিয়েবল প্রতিস্থাপন করুন

আমাদের ফাংশন তৈরি করার আগে, আমাদের main.py ফাইলে কিছু ভেরিয়েবল প্রতিস্থাপন করতে হবে।

ক্লাউড শেল এডিটরে, পূর্বে তৈরি করা সংশ্লিষ্ট বাকেটগুলি ব্যবহার করে ২৮ থেকে ৩৪ লাইনে প্রজেক্ট আইডি এবং বাকেট ভেরিয়েবলের মানগুলি প্রতিস্থাপন করে main.py সামঞ্জস্য করুন:

main.py সম্পর্কে

PROJECT_ID = '[PROJECT_ID_HOSTING_STAGING_BUCKET]'
"""The bucket the to-be-scanned files are uploaded to."""
STAGING_BUCKET = '[YOUR_QUARANTINE_BUCKET]'
"""The bucket to move "sensitive" files to."""
SENSITIVE_BUCKET = '[YOUR_SENSITIVE_DATA_BUCKET]'
"""The bucket to move "non sensitive" files to."""
NONSENSITIVE_BUCKET = '[YOUR_NON_SENSITIVE_DATA_BUCKET]'

অতিরিক্তভাবে, pub/sub topic ভেরিয়েবলের মানটি পূর্ববর্তী ধাপে তৈরি pub/sub topic দিয়ে প্রতিস্থাপন করুন:

""" Pub/Sub topic to notify once the  DLP job completes."""
PUB_SUB_TOPIC = 'classify-topic'

ফাংশন স্থাপন করুন

আপনার ক্লাউড শেলে, যেখানে main.py ফাইলটি বিদ্যমান সেখানে ডিরেক্টরিগুলিকে gcs-dlp-classification-python এ পরিবর্তন করুন:

cd ~/cloudshell_open/dlp-cloud-functions-tutorials/gcs-dlp-classification-python

কিছু ফাংশন স্থাপনের সময় এসেছে।

প্রথমে, create_DLP_job ফাংশনটি স্থাপন করুন, [YOUR_QUARANTINE_BUCKET] কে সঠিক বাকেট নাম দিয়ে প্রতিস্থাপন করুন। এই ফাংশনটি তখনই ট্রিগার হয় যখন নতুন ফাইলগুলি মনোনীত ক্লাউড স্টোরেজ কোয়ারেন্টাইন বাকেটে আপলোড করা হয় এবং প্রতিটি আপলোড করা ফাইলের জন্য একটি DLP জব তৈরি করবে:

gcloud functions deploy create_DLP_job --runtime python37 \
--trigger-event google.storage.object.finalize \
--trigger-resource [YOUR_QUARANTINE_BUCKET]

এরপর, resolve_DLP ফাংশনটি স্থাপন করুন, যা আমাদের বিষয়কে এর ট্রিগার হিসেবে নির্দেশ করে। এই ফাংশনটি উপরের ফাংশন থেকে পরবর্তী DLP জব থেকে শুরু হওয়া pub/sub নোটিফিকেশন শোনে। pub/sub নোটিফিকেশন পাওয়ার সাথে সাথে, এটি DLP জব থেকে ফলাফল সংগ্রহ করে এবং সেই অনুযায়ী ফাইলটিকে সংবেদনশীল বাকেট বা অ-সংবেদনশীল বাকেটের দিকে নিয়ে যায়:

gcloud functions deploy resolve_DLP --runtime python37 \
--trigger-topic classify-topic

যাচাই করুন

আমাদের দুটি ক্লাউড ফাংশন gcloud functions describe কমান্ডের সাহায্যে সফলভাবে স্থাপন করা হয়েছে কিনা তা যাচাই করুন:

gcloud functions describe create_DLP_job
gcloud functions describe resolve_DLP

সফলভাবে স্থাপন করা হলে আউটপুটটি স্ট্যাটাসের জন্য ACTIVE পড়বে।

৬. নমুনা তথ্য দিয়ে পরীক্ষা করুন

সমস্ত যন্ত্রাংশ তৈরি হওয়ার পর, আমরা এখন কিছু নমুনা ফাইল ব্যবহার করে পরীক্ষা করতে পারি। আপনার ক্লাউড শেলে আপনার বর্তমান কার্যকরী ডিরেক্টরিটি sample_data এ পরিবর্তন করুন:

cd ~/cloudshell_open/dlp-cloud-functions-tutorials/sample_data

আমাদের নমুনা ফাইলগুলিতে txt এবং csv ফাইল রয়েছে যেখানে বিভিন্ন ধরণের ডেটা রয়েছে। 'sample_s' এর সাথে প্রিফিক্স করা ফাইলগুলিতে সংবেদনশীল ডেটা থাকবে, যখন 'sample_n' এর সাথে প্রিফিক্স করা ফাইলগুলিতে থাকবে না। উদাহরণস্বরূপ, sample_s20.csv-এ এমন কিছু রয়েছে যা মার্কিন সামাজিক নিরাপত্তা নম্বরের মতো দেখতে ফর্ম্যাট করা হয়েছে:

নমুনা_এস২০.সিএসভি

Name,SSN,metric 1,metric 2
Maria Johnson,284-73-5110,5,43
Tyler Parker,284-73-5110,8,17
Maria Johnson,284-73-5110,54,63
Maria Johnson,245-25-8698,53,19
Tyler Parker,475-15-8499,6,67
Maria Johnson,719-12-6560,75,83
Maria Johnson,616-69-3226,91,13
Tzvika Roberts,245-25-8698,94,61

অন্যদিকে, sample_n15.csv-এর ডেটা সংবেদনশীল বলে বিবেচিত হবে না:

নমুনা_n15.csv

record id,metric 1,metric 2,metric 3
1,59,93,100
2,53,13,17
3,59,67,53
4,52,93,34
5,14,22,88
6,18,88,3
7,32,49,5
8,93,46,14

আমাদের সেট আপ আমাদের ফাইলগুলিকে কীভাবে ব্যবহার করবে তা দেখার জন্য, আসুন আমাদের সমস্ত পরীক্ষার ফাইলগুলি আমাদের কোয়ারেন্টাইনে আপলোড করি।

বালতি:

gsutil -m cp * gs://[YOUR_QUARANTINE_BUCKET]

প্রাথমিকভাবে, আমাদের ফাইলগুলি কোয়ারেন্টাইন বাকেটে থাকবে যেখানে আমরা সেগুলি আপলোড করেছি। এটি যাচাই করার জন্য, ফাইলগুলি আপলোড করার সাথে সাথেই, কোয়ারেন্টাইন বাকেটের বিষয়বস্তু তালিকাভুক্ত করুন:

gsutil ls gs://[YOUR_QUARANTINE_BUCKET]

আমাদের শুরু করা ইভেন্টগুলির সিরিজটি দেখতে, ক্লাউড ফাংশন পৃষ্ঠায় নেভিগেট করে শুরু করুন:

create_DLP_job ফাংশনের জন্য Actions মেনুতে ক্লিক করুন এবং View Logs নির্বাচন করুন:

89211a959bf30392.png সম্পর্কে

এই ফাংশনের লগে আমরা প্রতিটি ফাইলের জন্য কমপক্ষে ৪টি এন্ট্রি দেখতে পাই যা নির্দেশ করে:

  • ফাংশন এক্সিকিউশন শুরু হয়েছে
  • ফাংশনটি একটি নির্দিষ্ট ফাইলের জন্য ট্রিগার করা হয়েছিল
  • একটি চাকরি তৈরি হয়েছিল
  • ফাংশনটি কার্যকর করা শেষ হয়েছে

c864dff5a03c75a9.png সম্পর্কে

প্রতিটি ফাইলের জন্য create_DLP_job ফাংশনটি সম্পূর্ণ হয়ে গেলে, সংশ্লিষ্ট DLP কাজ শুরু হয়। সারিতে থাকা DLP কাজের তালিকা দেখতে DLP জবস পৃষ্ঠায় নেভিগেট করুন:

আপনি মুলতুবি, চলমান, অথবা সম্পন্ন কাজের একটি তালিকা দেখতে পাবেন। এগুলির প্রতিটি আমাদের আপলোড করা ফাইলগুলির একটির সাথে সম্পর্কিত:

6af34e72ecb83faf.png সম্পর্কে

আরও বিস্তারিত জানার জন্য আপনি এই চাকরিগুলির যেকোনো একটির আইডিতে ক্লিক করতে পারেন।

যদি আপনি ক্লাউড ফাংশন পৃষ্ঠায় ফিরে যান এবং resolve_DLP ফাংশনের লগ আউট পরীক্ষা করেন, তাহলে আপনি প্রতিটি ফাইলের জন্য কমপক্ষে 8টি এন্ট্রি দেখতে পাবেন, যা নির্দেশ করে:

  • ফাংশন এক্সিকিউশন শুরু হয়েছে
  • একটি পাব/সাব বিজ্ঞপ্তি পাওয়া গেছে।
  • সংশ্লিষ্ট DLP কাজের নাম
  • একটি স্ট্যাটাস কোড
  • সংবেদনশীল তথ্যের সংখ্যা (যদি থাকে)
  • যে বাকেটে ফাইলটি সরানো হবে
  • DLP কাজটি ফাইলটি পার্স করা শেষ করেছে।
  • ফাংশনটি কার্যকর করা শেষ হয়েছে

5025bd672cba90a0.png সম্পর্কে

resolve_DLP ফাংশনে সমস্ত কল চালানো শেষ হওয়ার সাথে সাথে, কোয়ারেন্টাইন বাকেটের বিষয়বস্তু আবার পরীক্ষা করে দেখুন:

gsutil ls gs://[YOUR_QUARANTINE_BUCKET]

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

৭. পরিষ্কার-পরিচ্ছন্নতা

এখন আমরা দেখেছি কিভাবে ক্লাউড ফাংশনের সাথে DLP API ব্যবহার করে ডেটা শ্রেণীবদ্ধ করতে হয়, আসুন আমরা আমাদের তৈরি করা সমস্ত রিসোর্স থেকে আমাদের প্রকল্পটি পরিষ্কার করি।

প্রকল্পটি মুছুন

আপনি যদি চান, তাহলে পুরো প্রকল্পটি মুছে ফেলতে পারেন। GCP কনসোলে, ক্লাউড রিসোর্স ম্যানেজার পৃষ্ঠায় যান:

প্রকল্পের তালিকায়, আমরা যে প্রকল্পে কাজ করছি তা নির্বাচন করুন এবং "মুছুন" এ ক্লিক করুন। আপনাকে প্রকল্পের আইডি টাইপ করতে বলা হবে। এটি প্রবেশ করান এবং "শাট ডাউন" এ ক্লিক করুন।

বিকল্পভাবে, আপনি gcloud ব্যবহার করে ক্লাউড শেল থেকে সরাসরি পুরো প্রকল্পটি মুছে ফেলতে পারেন:

gcloud projects delete [PROJECT_ID]

আপনি যদি একে একে বিভিন্ন উপাদান মুছে ফেলতে চান, তাহলে পরবর্তী বিভাগে যান।

ক্লাউড ফাংশন

gcloud দিয়ে আমাদের দুটি ক্লাউড ফাংশন মুছে ফেলুন:

gcloud functions delete -q create_DLP_job && gcloud functions delete -q resolve_DLP

স্টোরেজ বালতি

gsutil ব্যবহার করে আপলোড করা সমস্ত ফাইল মুছে ফেলুন এবং buckets মুছে ফেলুন:

gsutil rm -r gs://[YOUR_QUARANTINE_BUCKET] \
gs://[YOUR_SENSITIVE_DATA_BUCKET] \
gs://[YOUR_NON_SENSITIVE_DATA_BUCKET] 

পাব/সাব

প্রথমে gcloud দিয়ে পাব/সাব সাবস্ক্রিপশন মুছে ফেলুন:

gcloud pubsub subscriptions delete classify-sub

এবং অবশেষে, gcloud দিয়ে পাব/সাব টপিকটি মুছে ফেলুন:

gcloud pubsub topics delete classify-topic

৮. অভিনন্দন!

বাহ! তুমি পেরেছো। তুমি শিখেছো কিভাবে ফাইলের শ্রেণীবিভাগ স্বয়ংক্রিয় করার জন্য ক্লাউড ফাংশনের সাথে DLP API ব্যবহার করতে হয়!

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

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