Cloud डेटा लीक होने की रोकथाम के बारे में खास जानकारी

1. खास जानकारी

Cloud डेटा लीक होने की रोकथाम (डीएलपी) एक पूरी तरह से मैनेज की गई सेवा है. इसे संवेदनशील जानकारी को खोजने, उसकी कैटगरी तय करने, और उसे सुरक्षित रखने में मदद करने के लिए डिज़ाइन किया गया है. यह कोडलैब, Cloud DLP API की बुनियादी क्षमताओं के बारे में जानकारी देगा और डेटा को सुरक्षित रखने के लिए इसका इस्तेमाल करने के अलग-अलग तरीकों के बारे में बताएगा.

आपको क्या करना होगा

  • डीएलपी का इस्तेमाल करके, एक जैसी जानकारी वाली स्ट्रिंग और फ़ाइलों की जांच करें
  • डेटा की पहचान से जुड़ी जानकारी हटाने की तकनीकों के बारे में जानें और डेटा की पहचान करने के लिए डीएलपी का इस्तेमाल करें
  • फ़ॉर्मैट प्रोटेक्शन एन्क्रिप्शन (एफ़पीई) का इस्तेमाल करके, ऐसे डेटा की पहचान करने का तरीका जानें जिसकी पहचान से जुड़ी जानकारी हटा दी गई है
  • स्ट्रिंग और इमेज से अलग-अलग तरह की जानकारी छिपाने के लिए, डीएलपी का इस्तेमाल करें

आपको इन चीज़ों की ज़रूरत होगी

  • ऐसा Google Cloud प्रोजेक्ट जिसमें बिलिंग सेट अप हो. अगर आपके पास Google खाता नहीं है, तो आपको खाता बनाना होगा.

2. सेट अप किया जा रहा है

यह कोडलैब, Google Cloud Platform पर बिना किसी स्थानीय इंस्टॉलेशन या कॉन्फ़िगरेशन के पूरी तरह से चल सकता है.

क्लाउड शेल

इस पूरे कोडलैब के दौरान, हम Cloud Shell के ज़रिए कमांड लाइन का इस्तेमाल करके, क्लाउड के अलग-अलग संसाधनों और सेवाओं का प्रावधान और उन्हें मैनेज करेंगे.

साथी प्रोजेक्ट का डेटा स्टोर करने की जगह डाउनलोड करें:

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

प्रोजेक्ट कोड डाउनलोड होने के बाद, सैंपल डायरेक्ट्री में बदलें और ज़रूरी Node.js पैकेज इंस्टॉल करें:

cd samples && npm install

नीचे दिए गए gcloud कमांड की मदद से यह पक्का करें कि सही प्रोजेक्ट का इस्तेमाल किया जा रहा है:

gcloud config set project [PROJECT_ID]

एपीआई को चालू करना

यहां ऐसे एपीआई दिए गए हैं जिन्हें हमें अपने प्रोजेक्ट पर चालू करना होगा:

  • Cloud डेटा लॉस प्रिवेंशन एपीआई - यह टेक्स्ट, इमेज, और Google Cloud Platform के स्टोरेज स्टोर करने की जगहों में, निजता के हिसाब से संवेदनशील फ़्रैगमेंट का पता लगाने, जोखिम का विश्लेषण करने, और पहचान से जुड़ी जानकारी हटाने के तरीके मुहैया कराता है
  • Cloud Key Management Service (KMS) API - Google Cloud केएमएस की मदद से ग्राहक, एन्क्रिप्शन कुंजियों को मैनेज कर सकते हैं. साथ ही, उन कुंजियों की मदद से क्रिप्टोग्राफ़िक ऑपरेशन कर सकते हैं.

नीचे दिए गए gcloud कमांड के साथ ज़रूरी एपीआई चालू करें:

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

3. स्ट्रिंग और फ़ाइलों की जांच करें

पिछले चरण में डाउनलोड किए गए प्रोजेक्ट की सैंपल डायरेक्ट्री में, कई ऐसी JavaScript फ़ाइलें शामिल हैं जो क्लाउड डीएलपी के अलग-अलग फ़ंक्शन का इस्तेमाल करती हैं. 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);

4. पहचान से जुड़ी जानकारी हटाना

संवेदनशील डेटा की जांच और पता लगाने के अलावा, Cloud डीएलपी, पहचान से जुड़ी जानकारी भी हटा सकता है. डेटा से पहचान ज़ाहिर करने वाली जानकारी को हटाने की प्रोसेस है. एपीआई, अलग-अलग तरह की जानकारी के हिसाब से संवेदनशील जानकारी की पहचान करता है. इसके बाद, डेटा को मास्क करने, मिटाने या धुंधला करने के लिए, पहचान से जुड़ी जानकारी को पूरी तरह बदल देता है.

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 *****************************

ध्यान दें कि आर्बिट्रेरी ऑर्डर नंबर के बने रहने पर, स्ट्रिंग में ईमेल पता उलझा हुआ होता है. (पसंद के मुताबिक जानकारी जोड़ी जा सकती है, लेकिन यह कोडलैब के दायरे से बाहर है).

आइए, अब उस फ़ंक्शन के बारे में जानते हैं जो मास्क से पहचान करने वाली सुविधा को हटाने के लिए, डीएलपी 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);

फ़ॉर्मैट को सुरक्षित रखने के तरीके से पहचान करने की सुविधा बंद करें

डीएलपी एपीआई की मदद से, क्रिप्टोग्राफ़िक कुंजी का इस्तेमाल करके, संवेदनशील डेटा वैल्यू को एन्क्रिप्ट (सुरक्षित) किया जा सकता है.

हम सबसे पहले क्लाउड केएमएस (KMS) का इस्तेमाल करके मुख्य रिंग बनाएंगे:

gcloud kms keyrings create dlp-keyring --location global

अब हम एक कुंजी बना सकते हैं जिसका इस्तेमाल हम डेटा को एन्क्रिप्ट करने के लिए करेंगे:

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

डीएलपी एपीआई, हमारी बनाई गई केएमएस कुंजी से एन्क्रिप्ट यानी सुरक्षित की गई कुंजी को स्वीकार करेगा. हम रैप की जाने वाली एक रैंडम स्ट्रिंग जनरेट कर सकते हैं. हमें बाद में इसकी फिर से पहचान करने की ज़रूरत होगी:

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

अब हम अपनी केएमएस कुंजी से स्ट्रिंग को एन्क्रिप्ट (सुरक्षित) कर सकते हैं. इससे एक बाइनरी फ़ाइल जनरेट होगी, जिसमें एन्क्रिप्ट (सुरक्षित) की गई स्ट्रिंग, साइफ़रटेक्स्ट के तौर पर होगी:

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,
    };
  }

एपीआई को किए गए अनुरोध में, deidentifyContent फ़ंक्शन की मदद से cryptoReplaceFfxFpeConfig ऑब्जेक्ट का इस्तेमाल किया जाता है:

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
) {
...
}

एक बार फिर से, एपीआई को किए गए अनुरोध में आर्ग्युमेंट का इस्तेमाल किया जाता है. इस बार 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 नाम की फ़ाइल जनरेट की जाएगी. इसमें तारीखों को 30 से 90 दिनों के बीच किसी भी क्रम में बदला जाएगा. जनरेट किए गए आउटपुट का एक उदाहरण यहां दिया गया है:

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
) {
...
}

ध्यान दें कि यह फ़ंक्शन, एफ़पीई के साथ पहचान से जुड़ी जानकारी हटाने की तरह ही रैप की गई कुंजी और कुंजी का नाम स्वीकार कर सकता है. इससे हमारे पास तारीख में बदलाव की पहचान करने के लिए, एन्क्रिप्ट (सुरक्षित) करने वाली कुंजी देने का विकल्प होता है. हमारे दिए गए आर्ग्युमेंट से, 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,
  };

5. स्ट्रिंग और इमेज छिपाने के लिए उनमें बदलाव करना

संवेदनशील जानकारी को छिपाने का एक और तरीका हटाना है. डेटा हटाने की सुविधा, मैच को उस जानकारी से बदल देगी जिससे मैच करने के लिए उसकी पहचान की गई है. 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]

यह तरीका तब फ़ायदेमंद होता है, जब आपको किसी संवेदनशील जानकारी को छिपाना हो, लेकिन फिर भी यह पता लगाना हो कि किस तरह की जानकारी हटाई जा रही है. डीएलपी एपीआई की मदद से, उन इमेज में मौजूद जानकारी को छिपाने के लिए उसमें बदलाव किया जा सकता है जिनमें टेक्स्ट मौजूद है. इसे दिखाने के लिए, सैंपल इमेज पर एक नज़र डालें:

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,
  };

6. व्यवस्थित करें

हमने यह पता लगाया है कि अपने डेटा से संवेदनशील जानकारी को छिपाने, उसकी पहचान करने, और उसे छिपाने के लिए, हम डीएलपी API का इस्तेमाल कैसे कर सकते हैं. अब समय आ गया है कि हम अपने बनाए गए किसी भी संसाधन से जुड़े प्रोजेक्ट को मिटाएं.

प्रोजेक्ट मिटाना

GCP कंसोल में, Cloud Resource Manager पेज पर जाएं:

प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिस पर हम काम कर रहे हैं और मिटाएं पर क्लिक करें. आपको प्रोजेक्ट आईडी टाइप करने के लिए कहा जाएगा. इसे डालें और शट डाउन करें पर क्लिक करें.

इसके अलावा, gcloud की मदद से पूरे प्रोजेक्ट को सीधे Cloud Shell से मिटाया जा सकता है:

gcloud projects delete $GOOGLE_CLOUD_PROJECT

7. बधाई हो!

वाह! आपने कर दिखाया! Cloud डीएलपी एक बेहतरीन टूल है. यह संवेदनशील जानकारी की बेहतर तरीके से जांच करने, उसे कैटगरी में बांटने, और पहचान से जुड़ी जानकारी हटाने वाले प्लैटफ़ॉर्म का ऐक्सेस देता है.

हमने इन विषयों के बारे में बताया

  • हमने देखा कि अलग-अलग तरह की जानकारी के लिए, स्ट्रिंग और फ़ाइलों की जांच करने के लिए, Cloud डीएलपी API का इस्तेमाल कैसे किया जा सकता है
  • हमने यह जाना कि डेटा मैचिंग की जानकारी के टाइप को छिपाने के लिए, डीएलपी एपीआई, मास्क वाली स्ट्रिंग की पहचान कैसे कर सकता है
  • हमने डीएलपी एपीआई का इस्तेमाल करके, एन्क्रिप्ट (सुरक्षित) करने के तरीके वाली एक कुंजी का इस्तेमाल करके, डेटा की पहचान करके उसकी फिर से पहचान की
  • हमने किसी स्ट्रिंग और इमेज के डेटा को छिपाने के लिए उसमें बदलाव करने के लिए, डीएलपी एपीआई का इस्तेमाल किया