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

1. ওভারভিউ

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

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

আপনি কি করবেন

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

আপনি কি প্রয়োজন হবে

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

2. সেট আপ করা হচ্ছে

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

gcloud config set project [PROJECT_ID] এর সাথে সেট করে আপনি সঠিক প্রকল্প ব্যবহার করছেন তা নিশ্চিত করুন

এপিআই সক্ষম করুন

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

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

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

একটি পরিষেবা অ্যাকাউন্ট হল একটি বিশেষ ধরনের অ্যাকাউন্ট যা অনুমোদিত 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 পরিষেবা অ্যাকাউন্টও ব্যবহার করব৷ এই পরিষেবা অ্যাকাউন্টটি স্বয়ংক্রিয়ভাবে তৈরি হয়েছিল যখন 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. ক্লাউড স্টোরেজ বালতি

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

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

আমরা gsutil কমান্ডটি ব্যবহার করতে পারি আমাদের তিনটি বালতি এক ঝাঁকুনিতে তৈরি করতে:

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

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

4. পাব/সাব বিষয় এবং সদস্যতা

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

প্রথমে একটি বিষয় তৈরি করা যাক। প্রতিবার আমাদের কোয়ারেন্টাইন স্টোরেজ বালতিতে একটি ফাইল যোগ করা হলে এখানে একটি বার্তা প্রকাশিত হবে। আমরা এটির নাম দেব 'শ্রেণীবদ্ধ বিষয়'

gcloud pubsub topics create classify-topic

বিষয় একটি বার্তা প্রকাশ করার সময় একটি সদস্যতা অবহিত করা হবে. আসুন 'classify-sub' নামে একটি পাবসাব সাবস্ক্রিপশন তৈরি করি:

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

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

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

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

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

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

ক্লাউড শেল এডিটরে, আগে তৈরি করা সংশ্লিষ্ট বালতিগুলি ব্যবহার করে 28 থেকে 34 লাইনে প্রজেক্ট আইডি এবং বালতি ভেরিয়েবলের মানগুলি প্রতিস্থাপন করে 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 to notify once the  DLP job completes."""
PUB_SUB_TOPIC = 'classify-topic'

ফাংশন স্থাপন

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

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 কাজ থেকে শুরু করা পাব/সাব বিজ্ঞপ্তি শোনে। এটি পাব/সাব নোটিফিকেশন পাওয়ার সাথে সাথে এটি ডিএলপি কাজ থেকে ফলাফল তুলে নেয় এবং সেই অনুযায়ী ফাইলটিকে সংবেদনশীল বাকেট বা অসংবেদনশীল বালতিতে নিয়ে যায়:

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 পড়বে যখন এটি সফলভাবে স্থাপন করা হবে।

6. নমুনা ডেটা দিয়ে পরীক্ষা করুন

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

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

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

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-এর ডেটা সংবেদনশীল বলে বিবেচিত হবে না:

sample_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 ফাংশনের জন্য অ্যাকশন মেনুতে ক্লিক করুন এবং লগ দেখুন নির্বাচন করুন:

89211a959bf30392.png

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

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

c864dff5a03c75a9.png

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

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

6af34e72ecb83faf.png

আপনি আরও বিশদ দেখতে এই কাজের যে কোনও আইডিতে ক্লিক করতে পারেন।

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

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

5025bd672cba90a0.png

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

gsutil ls gs://[YOUR_QUARANTINE_BUCKET]

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

7. পরিষ্কার করা

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

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

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

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

বিকল্পভাবে, আপনি gcloud দিয়ে সরাসরি ক্লাউড শেল থেকে সম্পূর্ণ প্রকল্প মুছে ফেলতে পারেন:

gcloud projects delete [PROJECT_ID]

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

ক্লাউড ফাংশন

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

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

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

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

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

8. অভিনন্দন!

উহু! আপনি এটা করেছেন. আপনি ফাইলের শ্রেণীবিভাগ স্বয়ংক্রিয় করতে ক্লাউড ফাংশন সহ DLP API কীভাবে ব্যবহার করবেন তা শিখেছেন!

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

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