ক্লাউড ডেটা ক্ষতি প্রতিরোধ ওভারভিউ

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

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

আপনি যা করবেন

  • তথ্য প্রকারের মিল খুঁজে বের করতে স্ট্রিং এবং ফাইল পরিদর্শন করার জন্য DLP ব্যবহার করুন।
  • পরিচয় গোপন করার কৌশল সম্পর্কে জানুন এবং ডেটা পরিচয়হীন করতে ডিএলপি ব্যবহার করুন।
  • ফরম্যাট প্রিজার্ভিং এনক্রিপশন (FPE) ব্যবহার করে পরিচয় গোপন করা ডেটাকে কীভাবে পুনরায় শনাক্ত করতে হয় তা জানুন।
  • স্ট্রিং এবং ছবি থেকে তথ্যের ধরণ গোপন করতে DLP ব্যবহার করুন।

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

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

২. প্রস্তুতি গ্রহণ

এই কোডল্যাবটি কোনো স্থানীয় ইনস্টলেশন বা কনফিগারেশন ছাড়াই সম্পূর্ণভাবে গুগল ক্লাউড প্ল্যাটফর্মে চালানো যায়।

ক্লাউড শেল

এই কোডল্যাব জুড়ে, আমরা ক্লাউড শেল-এর মাধ্যমে কমান্ড লাইন ব্যবহার করে বিভিন্ন ক্লাউড রিসোর্স ও সার্ভিস প্রোভিশন এবং ম্যানেজ করব।

সহযোগী প্রজেক্ট রিপোজিটরি ডাউনলোড করুন:

git clone https://github.com/googleapis/nodejs-dlp

প্রজেক্ট কোড ডাউনলোড হয়ে গেলে, samples ডিরেক্টরিতে যান এবং প্রয়োজনীয় Node.js প্যাকেজগুলো ইনস্টল করুন:

cd samples && npm install

নিম্নলিখিত gcloud কমান্ডটি ব্যবহার করে আপনি সঠিক প্রজেক্টটি সেট করছেন কিনা তা নিশ্চিত করুন:

gcloud config set project [PROJECT_ID]

এপিআই সক্রিয় করুন

আমাদের প্রোজেক্টে যে API গুলো সক্রিয় করতে হবে, সেগুলো নিচে দেওয়া হলো:

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

নিম্নলিখিত gcloud কমান্ডের সাহায্যে প্রয়োজনীয় API-গুলি সক্রিয় করুন:

gcloud services enable dlp.googleapis.com cloudkms.googleapis.com \
--project ${GOOGLE_CLOUD_PROJECT}

৩. স্ট্রিং এবং ফাইলগুলো পরিদর্শন করুন

পূর্ববর্তী ধাপে ডাউনলোড করা প্রজেক্টের স্যাম্পলস ডিরেক্টরিতে বেশ কিছু জাভাস্ক্রিপ্ট ফাইল রয়েছে, যেগুলো ক্লাউড ডিএলপি-র বিভিন্ন কার্যকারিতা ব্যবহার করে। inspect.js প্রদত্ত কোনো স্ট্রিং বা ফাইলে সংবেদনশীল তথ্যের ধরন পরীক্ষা করবে।

এটি পরীক্ষা করার জন্য, আপনি string অপশন এবং কিছু সম্ভাব্য সংবেদনশীল তথ্যসহ একটি নমুনা স্ট্রিং প্রদান করতে পারেন:

node inspect.js -c $GOOGLE_CLOUD_PROJECT \
string 'My email address is jenny@somedomain.com and you can call me at 555-867-5309'

আউটপুটে প্রতিটি মিলে যাওয়া তথ্যের ধরণ সম্পর্কিত ফলাফল জানানো উচিত, যার মধ্যে অন্তর্ভুক্ত রয়েছে:

উদ্ধৃতি : টেমপ্লেটটি নির্দিষ্ট করে

InfoType : স্ট্রিং-এর ঐ অংশের জন্য শনাক্ত করা তথ্যের ধরণ। আপনি এখানে সম্ভাব্য তথ্য প্রকারগুলির একটি সম্পূর্ণ তালিকা পাবেন। ডিফল্টরূপে, inspect.js শুধুমাত্র CREDIT_CARD_NUMBER , PHONE_NUMBER এবং EMAIL_ADDRESS তথ্য প্রকারগুলি পরীক্ষা করবে।

সম্ভাবনা : ফলাফলগুলোকে তাদের প্রত্যেকটির মিল হওয়ার সম্ভাবনার উপর ভিত্তি করে শ্রেণীবদ্ধ করা হয়। সম্ভাবনার মাত্রা VERY_UNLIKELY থেকে VERY_LIKELY পর্যন্ত হতে পারে।

উপরের কমান্ড অনুরোধের ফলাফলগুলো হলো:

Findings:
        Quote: jenny@somedomain.com
        Info type: EMAIL_ADDRESS
        Likelihood: LIKELY
        Quote: 555-867-5309
        Info type: PHONE_NUMBER
        Likelihood: VERY_LIKELY

একইভাবে, আমরা ফাইলের তথ্য প্রকারগুলো পরীক্ষা করতে পারি। নমুনা accounts.txt ফাইলটি দেখুন:

resources/accounts.txt

My credit card number is 1234 5678 9012 3456, and my CVV is 789.

inspect.js আবার চালান, এবার ফাইল অপশনটি সহ:

node inspect.js -c $GOOGLE_CLOUD_PROJECT file resources/accounts.txt

ফলাফল:

Findings:
        Quote: 5678 9012 3456
        Info type: CREDIT_CARD_NUMBER
        Likelihood: VERY_LIKELY

উভয় ধরণের কোয়েরির জন্যই, আমরা সম্ভাব্যতা বা তথ্যের ধরণ অনুসারে ফলাফল সীমিত করতে পারি। উদাহরণস্বরূপ:

node inspect.js -c $GOOGLE_CLOUD_PROJECT \
string 'Call 900-649-2568 or email me at anthony@somedomain.com' \
-m VERY_LIKELY

সর্বনিম্ন সম্ভাবনা হিসেবে ‘খুবই সম্ভাব্য VERY_LIKELY উল্লেখ করার মাধ্যমে, এর চেয়ে কম VERY_LIKELY যেকোনো মিল বাদ দেওয়া হয়:

Findings:
        Quote: 900-649-2568
        Info type: PHONE_NUMBER
        Likelihood: VERY_LIKELY

সীমাবদ্ধতা ছাড়া সম্পূর্ণ ফলাফল হবে:

Findings:
        Quote: 900-649-2568
        Info type: PHONE_NUMBER
        Likelihood: VERY_LIKELY
        Quote: anthony@somedomain.com
        Info type: EMAIL_ADDRESS
        Likelihood: LIKELY

একইভাবে, আমরা যে তথ্যের ধরনটি যাচাই করছি তা নির্দিষ্ট করে দিতে পারি:

node inspect.js -c $GOOGLE_CLOUD_PROJECT \
string 'Call 900-649-2568 or email me at anthony@somedomain.com' \
-t EMAIL_ADDRESS

পাওয়া গেলে শুধুমাত্র নির্দিষ্ট তথ্য প্রকারটিই ফেরত দেওয়া হয়:

Findings:
        Quote: anthony@somedomain.com
        Info type: EMAIL_ADDRESS
        Likelihood: LIKELY

নিচে অ্যাসিঙ্ক্রোনাস ফাংশনটি দেওয়া হলো, যা ইনপুট পরীক্ষা করার জন্য এপিআই ব্যবহার করে:

inspect.js

async function inspectString(
  callingProjectId,
  string,
  minLikelihood,
  maxFindings,
  infoTypes,
  customInfoTypes,
  includeQuote
) {
...
}

উপরের প্যারামিটারগুলোর জন্য প্রদত্ত আর্গুমেন্টগুলো একটি রিকোয়েস্ট অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এরপর সেই রিকোয়েস্টটি inspectContent ফাংশনে পাঠানো হয় একটি রেসপন্স পাওয়ার জন্য, যার ফলে আমরা আমাদের আউটপুটটি পাই:

inspect.js

  // Construct item to inspect
  const item = {value: string};

  // Construct request
  const request = {
    parent: dlp.projectPath(callingProjectId),
    inspectConfig: {
      infoTypes: infoTypes,
      customInfoTypes: customInfoTypes,
      minLikelihood: minLikelihood,
      includeQuote: includeQuote,
      limits: {
        maxFindingsPerRequest: maxFindings,
      },
    },
    item: item,
  };
...
...
 const [response] = await dlp.inspectContent(request);

৪. পরিচয় গোপনকরণ

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

deid.js বিভিন্ন উপায়ে পরিচয় গোপনকরণ প্রদর্শন করবে। পরিচয় গোপনকরণের সবচেয়ে সহজ পদ্ধতি হলো একটি মাস্ক ব্যবহার করা:

node deid.js deidMask -c $GOOGLE_CLOUD_PROJECT \
"My order number is F12312399. Email me at anthony@somedomain.com"

মাস্ক ব্যবহার করলে এপিআইটি মিলে যাওয়া তথ্য প্রকারের অক্ষরগুলোকে একটি ভিন্ন অক্ষর দিয়ে প্রতিস্থাপন করবে, যা ডিফল্টরূপে *। আউটপুটটি হবে:

My order number is F12312399. Email me at *****************************

লক্ষ্য করুন যে স্ট্রিং-এর মধ্যে থাকা ইমেল ঠিকানাটি অস্পষ্ট করা হয়েছে, কিন্তু যথেচ্ছ অর্ডার নম্বরটি অক্ষত রয়েছে। (কাস্টম তথ্য প্রকার সম্ভব, কিন্তু তা এই কোডল্যাবের আওতার বাইরে)।

চলুন সেই ফাংশনটি দেখি যা মাস্ক ব্যবহার করে পরিচয় গোপন করার জন্য DLP API ব্যবহার করে:

deid.js

async function deidentifyWithMask(
  callingProjectId,
  string,
  maskingCharacter,
  numberToMask
) {
...
}

আবারও, এই আর্গুমেন্টগুলো একটি রিকোয়েস্ট অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এবার এটি deidentifyContent ফাংশনে প্রদান করা হয়:

deid.js

  // Construct deidentification request
  const item = {value: string};
  const request = {
    parent: dlp.projectPath(callingProjectId),
    deidentifyConfig: {
      infoTypeTransformations: {
        transformations: [
          {
            primitiveTransformation: {
              characterMaskConfig: {
                maskingCharacter: maskingCharacter,
                numberToMask: numberToMask,
              },
            },
          },
        ],
      },
    },
    item: item,
  };
... 
... 
const [response] = await dlp.deidentifyContent(request);

ফরম্যাট সংরক্ষণকারী এনক্রিপশনের মাধ্যমে পরিচয় গোপন করুন

ডিএলপি এপিআই একটি ক্রিপ্টোগ্রাফিক কী ব্যবহার করে সংবেদনশীল ডেটা মান এনক্রিপ্ট করার সুবিধাও প্রদান করে।

আমরা ক্লাউড কেএমএস ব্যবহার করে একটি কী রিং তৈরি করার মাধ্যমে শুরু করব:

gcloud kms keyrings create dlp-keyring --location global

এখন আমরা একটি কী তৈরি করতে পারি যা আমরা ডেটা এনক্রিপ্ট করতে ব্যবহার করব:

gcloud kms keys create dlp-key \
--purpose='encryption' \
--location=global \
--keyring=dlp-keyring

DLP API আমাদের তৈরি করা KMS কী দিয়ে এনক্রিপ্ট করা একটি র‍্যাপড কী গ্রহণ করবে। আমরা একটি র‍্যান্ডম স্ট্রিং তৈরি করতে পারি যা র‍্যাপ করা হবে। পরবর্তীতে পুনরায় শনাক্ত করার জন্য আমাদের এটির প্রয়োজন হবে:

export AES_KEY=`head -c16 < /dev/random | base64 -w 0`

এখন আমরা আমাদের KMS কী ব্যবহার করে স্ট্রিংটি এনক্রিপ্ট করতে পারি। এর ফলে একটি বাইনারি ফাইল তৈরি হবে, যাতে এনক্রিপ্ট করা স্ট্রিংটি সাইফারটেক্সট হিসেবে থাকবে:

echo -n $AES_KEY | gcloud kms encrypt \
--location global \
--keyring dlp-keyring  \
--key dlp-key \
--plaintext-file - \
--ciphertext-file ./ciphertext.bin 

deid.js ব্যবহার করে আমরা এখন নিচের নমুনা স্ট্রিং-এ থাকা ফোন নম্বরটিকে এনক্রিপশনের মাধ্যমে পরিচয়হীন করতে পারি:

node deid.js deidFpe -c $GOOGLE_CLOUD_PROJECT \
"My client's cell is 9006492568" `base64 -w 0 ciphertext.bin` \
projects/${GOOGLE_CLOUD_PROJECT}/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key \
-s PHONE_NUMBER

আউটপুটটি এমন একটি স্ট্রিং ফেরত দেবে যেখানে মিলে যাওয়া ইনফো টাইপগুলোকে একটি এনক্রিপ্টেড স্ট্রিং দ্বারা প্রতিস্থাপন করা হবে এবং এর আগে -s ফ্ল্যাগ দ্বারা নির্দেশিত ইনফো টাইপটি যুক্ত থাকবে:

My client's cell is PHONE_NUMBER(10):vSt55z79nR

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

deid.js

async function deidentifyWithFpe(
  callingProjectId,
  string,
  alphabet,
  surrogateType,
  keyName,
  wrappedKey
) {
...
}

আর্গুমেন্টগুলো একটি cryptoReplaceFfxFpeConfig অবজেক্ট তৈরি করতে ব্যবহৃত হয়:

deid.js

  const cryptoReplaceFfxFpeConfig = {
    cryptoKey: {
      kmsWrapped: {
        wrappedKey: wrappedKey,
        cryptoKeyName: keyName,
      },
    },
    commonAlphabet: alphabet,
  };
  if (surrogateType) {
    cryptoReplaceFfxFpeConfig.surrogateInfoType = {
      name: surrogateType,
    };
  }

` cryptoReplaceFfxFpeConfig অবজেক্টটি আবার deidentifyContent ফাংশনের মাধ্যমে API-তে অনুরোধ করার জন্য ব্যবহৃত হয়:

deid.js

  // Construct deidentification request
  const item = {value: string};
  const request = {
    parent: dlp.projectPath(callingProjectId),
    deidentifyConfig: {
      infoTypeTransformations: {
        transformations: [
          {
            primitiveTransformation: {
              cryptoReplaceFfxFpeConfig: cryptoReplaceFfxFpeConfig,
            },
          },
        ],
      },
    },
    item: item,
  };

  try {
    // Run deidentification request
    const [response] = await dlp.deidentifyContent(request);

ডেটা পুনরায় শনাক্ত করুন

ডেটা পুনরায় শনাক্ত করার জন্য, ডিএলপি এপিআই পূর্ববর্তী ধাপে আমাদের তৈরি করা সাইফারটেক্সটটি ব্যবহার করবে:

node deid.js reidFpe -c $GOOGLE_CLOUD_PROJECT \
"<YOUR_DEID_OUTPUT>" \
PHONE_NUMBER `base64 -w 0 ciphertext.bin`  \
projects/${GOOGLE_CLOUD_PROJECT}/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key

আউটপুটটি হবে মূল স্ট্রিং, যেখানে কোনো অংশ বাদ দেওয়া বা বিকল্প প্রকারের ইঙ্গিত থাকবে না:

My client's cell is 9006492568

ডেটা পুনরায় শনাক্ত করতে ব্যবহৃত ফাংশনটি, ডেটা পরিচয়হীন করতে ব্যবহৃত ফাংশনের মতোই:

deid.js

async function reidentifyWithFpe(
  callingProjectId,
  string,
  alphabet,
  surrogateType,
  keyName,
  wrappedKey
) {
...
}

এবং আবারও, আর্গুমেন্টগুলো API-তে একটি অনুরোধে ব্যবহৃত হয়, এবার reidentifyContent ফাংশনে:

deid.js

  // Construct deidentification request
  const item = {value: string};
  const request = {
    parent: dlp.projectPath(callingProjectId),
    reidentifyConfig: {
      infoTypeTransformations: {
        transformations: [
          {
            primitiveTransformation: {
              cryptoReplaceFfxFpeConfig: {
                cryptoKey: {
                  kmsWrapped: {
                    wrappedKey: wrappedKey,
                    cryptoKeyName: keyName,
                  },
                },
                commonAlphabet: alphabet,
                surrogateInfoType: {
                  name: surrogateType,
                },
              },
            },
          },
        ],
      },
    },
    inspectConfig: {
      customInfoTypes: [
        {
          infoType: {
            name: surrogateType,
          },
          surrogateType: {},
        },
      ],
    },
    item: item,
  };

  try {
    // Run reidentification request
    const [response] = await dlp.reidentifyContent(request);

তারিখ পরিবর্তনের মাধ্যমে তারিখগুলোকে পরিচয়হীন করুন

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

resources/dates.csv

name,birth_date,register_date,credit_card
Ann,01/01/1980,07/21/1996,4532908762519852
James,03/06/1988,04/09/2001,4301261899725540
Dan,08/14/1945,11/15/2011,4620761856015295
Laura,11/03/1992,01/04/2017,4564981067258901

ডেটাতে দুটি ফিল্ড রয়েছে যেগুলিতে আমরা তারিখ পরিবর্তন করতে পারি: birth_date এবং register_date । deid.js তারিখগুলি এলোমেলোভাবে কত দিন পরিবর্তন করা হবে, তার একটি পরিসীমা নির্ধারণ করতে একটি নিম্নসীমা এবং একটি উচ্চসীমা গ্রহণ করবে।

node deid.js deidDateShift -c $GOOGLE_CLOUD_PROJECT resources/dates.csv datesShifted.csv 30 90 birth_date

datesShifted.csv নামের একটি ফাইল তৈরি হবে, যেখানে তারিখগুলো ৩০ থেকে ৯০ দিনের মধ্যে এলোমেলোভাবে স্থানান্তরিত হবে। তৈরি হওয়া আউটপুটের একটি উদাহরণ নিচে দেওয়া হলো:

name,birth_date,register_date,credit_card
Ann,2/6/1980,7/21/1996,4532908762519852
James,5/18/1988,4/9/2001,4301261899725540
Dan,9/16/1945,11/15/2011,4620761856015295
Laura,12/16/1992,1/4/2017,4564981067258901

লক্ষ্য করুন যে, আমরা CSV ফাইলের কোন তারিখের কলামটি সরাতে চাই, সেটাও নির্দিষ্ট করে দিতে পেরেছি। birth_date ফিল্ডটি এবং register_date ফিল্ডটি অপরিবর্তিত থাকে।

চলুন সেই ফাংশনটি দেখে নেওয়া যাক যা ডেটশিফটের সাথে ডিআইডেন্টিফিকেশন পরিচালনা করে:

deid.js

async function deidentifyWithDateShift(
  callingProjectId,
  inputCsvFile,
  outputCsvFile,
  dateFields,
  lowerBoundDays,
  upperBoundDays,
  contextFieldId,
  wrappedKey,
  keyName
) {
...
}

লক্ষ্য করুন যে, এই ফাংশনটি FPE-এর ডিআইডেন্টিফিকেশনের মতোই একটি র‍্যাপড কী এবং একটি কী-নেম গ্রহণ করতে পারে, যার ফলে একটি ডেট শিফটকে পুনরায় শনাক্ত করার জন্য আমাদের কাছে একটি এনক্রিপশন কী সরবরাহ করার বিকল্প থাকে। আমাদের সরবরাহ করা আর্গুমেন্টগুলো একটি dateShiftConfig অবজেক্ট তৈরি করে:

deid.js

  // Construct DateShiftConfig
  const dateShiftConfig = {
    lowerBoundDays: lowerBoundDays,
    upperBoundDays: upperBoundDays,
  };

  if (contextFieldId && keyName && wrappedKey) {
    dateShiftConfig.context = {name: contextFieldId};
    dateShiftConfig.cryptoKey = {
      kmsWrapped: {
        wrappedKey: wrappedKey,
        cryptoKeyName: keyName,
      },
    };
  } else if (contextFieldId || keyName || wrappedKey) {
    throw new Error(
      'You must set either ALL or NONE of {contextFieldId, keyName, wrappedKey}!'
    );
  }

  // Construct deidentification request
  const request = {
    parent: dlp.projectPath(callingProjectId),
    deidentifyConfig: {
      recordTransformations: {
        fieldTransformations: [
          {
            fields: dateFields,
            primitiveTransformation: {
              dateShiftConfig: dateShiftConfig,
            },
          },
        ],
      },
    },
    item: tableItem,
  };

৫. স্ট্রিং এবং ছবি গোপন করুন

সংবেদনশীল তথ্য গোপন করার আরেকটি পদ্ধতি হলো রিডাকশন । রিডাকশন কোনো ম্যাচকে সেই তথ্য প্রকার দিয়ে প্রতিস্থাপন করে, যার সাথে এটি মিলে যাওয়ার জন্য শনাক্ত করা হয়েছে। redact.js রিডাকশন প্রদর্শন করে:

node redact.js -c $GOOGLE_CLOUD_PROJECT \
string "Please refund the purchase to my credit card 4012888888881881" \
-t 'CREDIT_CARD_NUMBER'

আউটপুটটি নমুনা ক্রেডিট কার্ড নম্বরটিকে CREDIT_CARD_NUMBER তথ্য টাইপ দিয়ে প্রতিস্থাপন করে:

Please refund the purchase on my credit card [CREDIT_CARD_NUMBER]

এটি তখন কাজে আসে যখন আপনি সংবেদনশীল তথ্য গোপন করতে চান কিন্তু কী ধরনের তথ্য সরানো হচ্ছে তা শনাক্ত করতে চান। DLP API একইভাবে টেক্সটযুক্ত ছবি থেকেও তথ্য মুছে ফেলতে পারে। উদাহরণস্বরূপ, চলুন একটি নমুনা ছবি দেখা যাক:

resources/test.png

bf3719cfeb5676ff.png

উপরের ছবি থেকে ফোন নম্বর এবং ইমেল ঠিকানা গোপন করতে:

node redact.js -c $GOOGLE_CLOUD_PROJECT \
image resources/test.png ./redacted.png \
-t PHONE_NUMBER -t EMAIL_ADDRESS

নির্দেশনা অনুযায়ী, redacted.png নামের একটি নতুন ছবি তৈরি করা হবে, যেখানে অনুরোধ করা তথ্যগুলো কালো কালি দিয়ে ঢেকে দেওয়া হবে:

ce023dd95cccc40f.png

এখানে সেই ফাংশনটি দেওয়া হলো যা একটি স্ট্রিং থেকে গোপন তথ্য বাদ দিতে ব্যবহৃত হয়:

redact.js

async function redactText(
  callingProjectId, 
  string,
  minLikelihood,
  infoTypes
) {
...}

এবং এই হলো সেই অনুরোধ যা deidentifyContent ফাংশনে প্রদান করা হবে:

redact.js

const request = {
    parent: dlp.projectPath(callingProjectId),
    item: {
      value: string,
    },
    deidentifyConfig: {
      infoTypeTransformations: {
        transformations: [replaceWithInfoTypeTransformation],
      },
    },
    inspectConfig: {
      minLikelihood: minLikelihood,
      infoTypes: infoTypes,
    },
  };

একইভাবে, একটি ছবি গোপন করার ফাংশনটি হলো:

redact.js

async function redactImage(
  callingProjectId,
  filepath,
  minLikelihood,
  infoTypes,
  outputPath
) {
...}

এবং এই হলো সেই অনুরোধ যা redactImage ফাংশনে প্রদান করা হবে:

redact.js

// Construct image redaction request
  const request = {
    parent: dlp.projectPath(callingProjectId),
    byteItem: {
      type: fileTypeConstant,
      data: fileBytes,
    },
    inspectConfig: {
      minLikelihood: minLikelihood,
      infoTypes: infoTypes,
    },
    imageRedactionConfigs: imageRedactionConfigs,
  };

৬. পরিষ্কার করুন

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

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

GCP কনসোলে, ক্লাউড রিসোর্স ম্যানেজার পৃষ্ঠায় যান:

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

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

gcloud projects delete $GOOGLE_CLOUD_PROJECT

৭. অভিনন্দন!

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

আমরা যা আলোচনা করেছি

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