Google Cloud डेटा लीक होने की रोकथाम का एक्सटेंशन

Apigee Edge के दस्तावेज़ देखे जा रहे हैं.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

वर्शन: 2.0.2

इस एक्सटेंशन का इस्तेमाल करके, कॉन्टेंट और इमेज से संवेदनशील डेटा को छिपाएं. उदाहरण के लिए, क्रेडिट कार्ड नंबर, नाम, और सोशल सिक्योरिटी नंबर छिपाए जा सकते हैं.

ज़रूरी शर्तें

इस कॉन्टेंट में, इस एक्सटेंशन को कॉन्फ़िगर करने और इस्तेमाल करने के बारे में जानकारी दी गई है. ExtensionCallout नीति का इस्तेमाल करके, एपीआई प्रॉक्सी से एक्सटेंशन का इस्तेमाल करने से पहले, आपको ये काम करने होंगे:

  1. अपने प्रोजेक्ट के लिए, Google Cloud DLP API चालू करें.

  2. एक्सटेंशन के लिए, आपको जिस लेवल का ऐक्सेस चाहिए उसके लिए अनुमति दें.

  3. Google Cloud Console का इस्तेमाल करके, सेवा खाते के लिए कुंजी जनरेट करें.

  4. कॉन्फ़िगरेशन रेफ़रंस का इस्तेमाल करके एक्सटेंशन को जोड़ने और कॉन्फ़िगर करने के दौरान, जनरेट हुई कुंजी वाली JSON फ़ाइल के कॉन्टेंट का इस्तेमाल करें.

Cloud Data Loss Prevention (DLP) के बारे में जानकारी

Cloud Data Loss Prevention (DLP) एक एपीआई है. इसका इस्तेमाल टेक्स्ट, इमेज, और अन्य डेटा की जांच करने के लिए किया जाता है. इससे संवेदनशील डेटा की पहचान करने और उसे मैनेज करने में मदद मिलती है.

ज़्यादा जानकारी के लिए, डीएलपी की खास जानकारी देखें. इस एक्सटेंशन के ज़रिए उपलब्ध कराए गए एपीआई के बारे में जानने के लिए, Cloud Data Loss Prevention (DLP) API देखें.

सैंपल

यहां दिए गए उदाहरणों में, ExtensionCallout नीति का इस्तेमाल करके, Cloud DLP एक्सटेंशन की कार्रवाइयों के लिए सहायता को कॉन्फ़िगर करने का तरीका बताया गया है.

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

सितारों वाला मास्क

इस उदाहरण में, deidentifyWithMask कार्रवाई का इस्तेमाल करके, नीति में बताए गए वर्ण (यहां * वर्ण) से, तय किए गए टाइप के टेक्स्ट को मास्क किया गया है.

यहां दी गई AssignMessage नीति, उदाहरण के तौर पर request.content वैरिएबल सेट करती है. आम तौर पर, आपको क्लाइंट के अनुरोध से अनुरोध का कॉन्टेंट मिलता है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

यहां दी गई ExtensionCallout नीति, request.content वैरिएबल की वैल्यू को वापस लाती है और उसे Cloud DLP एक्सटेंशन (यहां इसे example-dlp कहा गया है) को पास करती है. इस एक्सटेंशन को, URL और EMAIL_ADDRESS infoTypes के आधार पर वैल्यू को मास्क करने के लिए कॉन्फ़िगर किया गया है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithMask</Action>
    <Input><![CDATA[{
        "text" : "{request.content}",
        "mask" : "*"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

नीचे दी गई AssignMessage नीति, एक्सटेंशन के आउटपुट को वापस लाती है, ताकि उसे Trace टूल में दिखाया जा सके.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

इस कोड से मिलने वाले आउटपुट का एक उदाहरण यहां दिया गया है.

{"text":"Visit my site at ******************* Or contact me at *****************."}

नाम वाला मास्क

इस उदाहरण में, deidentifyWithType कार्रवाई का इस्तेमाल करके, तय किए गए टाइप के टेक्स्ट को इन्फ़ोटाइप के नाम से ही मास्क किया गया है. उदाहरण के लिए, यह ईमेल पते gladys@example.com को EMAIL_ADDRESS से बदल देगा.

यहां दी गई AssignMessage नीति, उदाहरण के तौर पर request.content वैरिएबल सेट करती है. आम तौर पर, आपको क्लाइंट के अनुरोध से अनुरोध का कॉन्टेंट मिलता है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Set-Variable">
    <DisplayName>Set Variable</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <AssignVariable>
        <Name>request.content</Name>
        <Value>Visit my site at https://example.com. Or contact me at gladys@example.com.</Value>
    </AssignVariable>
</AssignMessage>

नीचे दी गई ExtensionCallout नीति, request.content वैरिएबल की वैल्यू को वापस लाती है और उसे Cloud DLP एक्सटेंशन (यहां इसे example-dlp कहा गया है) को पास करती है. इस एक्सटेंशन को, URL और EMAIL_ADDRESS infoTypes के आधार पर वैल्यू को मास्क करने के लिए कॉन्फ़िगर किया गया है.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Data-Loss-Extension-Callout">
    <DisplayName>Data Loss Prevention Extension Callout</DisplayName>
    <Connector>example-dlp</Connector>
    <Action>deidentifyWithType</Action>
    <Input><![CDATA[{
        "text" : "{request.content}"
    }]]></Input>
    <Output>masked.output</Output>
</ConnectorCallout>

नीचे दी गई AssignMessage नीति, एक्सटेंशन के आउटपुट को वापस लाती है, ताकि उसे Trace टूल में दिखाया जा सके.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-DLP-Output">
    <DisplayName>Get DLP Output</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{masked.output}</Payload>
    </Set>
</AssignMessage>

इस कोड से मिलने वाले आउटपुट का एक उदाहरण यहां दिया गया है.

{"text":"Visit my site at [URL] Or contact me at [EMAIL_ADDRESS]."}

कार्रवाइयां

deidentifyWithMask

text से संवेदनशील डेटा की पहचान हटाएं और mask वर्ण का इस्तेमाल करके डेटा को मास्क करें. इस कार्रवाई से, text के उन हिस्सों को मास्क किया जाता है जिन्हें एक्सटेंशन कॉन्फ़िगरेशन में infoTypes प्रॉपर्टी से तय किया गया है.

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

सिंटैक्स

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify",
  "mask" : "masking-character"
}]]></Input>

उदाहरण

यहां दिए गए उदाहरण में, मास्क करने के लिए इनपुट के तौर पर एक ईमेल पते का इस्तेमाल किया गया है. यह ईमेल पता, input.email.address फ़्लो वैरिएबल में सेव किया गया है. इस उदाहरण के लिए, इस एक्सटेंशन को EMAIL_ADDRESS infoType के साथ काम करने के लिए कॉन्फ़िगर किया जाना चाहिए. infoType की सूची देखने के लिए, InfoType Detector Reference देखें.

<Action>deidentifyWithMask</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}",
    "mask" : "*"
}]]></Input>
<Output>masked.output</Output>

इस उदाहरण के लिए, आउटपुट यह होगा:

{"text":"*****************"}

अनुरोध के पैरामीटर

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
टेक्स्ट वह टेक्स्ट जिसकी पहचान छिपाना है. स्ट्रिंग कोई नहीं. हां.
मास्क संवेदनशील डेटा को मास्क करने के लिए इस्तेमाल किया जाने वाला वर्ण. स्ट्रिंग कोई नहीं. हां.

जवाब

इनपुट टेक्स्ट में, तय किए गए वर्ण से बदले गए infoTypes की वैल्यू. उदाहरण के लिए,

{"text":"*********"}

deidentifyWithTemplate

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

टेंप्लेट, कॉन्फ़िगरेशन को अलग करने के लिए काम आते हैं. जैसे, आपको किस चीज़ की जांच करनी है और एपीआई कॉल के लागू होने से पहले, आपको उसे कैसे पहचान से जुड़ी जानकारी हटाकर सुरक्षित करना है. टेंप्लेट की मदद से, कॉन्फ़िगरेशन को फिर से इस्तेमाल किया जा सकता है. साथ ही, उपयोगकर्ताओं और डेटा सेट के बीच एकरूपता बनाए रखी जा सकती है.

अपने टेंप्लेट में, आपको infoTypes तय करने होंगे. ये ऐसे कॉन्टेंट के बारे में बताते हैं जिसमें से पहचान छिपाने वाली जानकारी हटानी है. infoType की सूची देखने के लिए, InfoType डिटेक्टर का रेफ़रंस देखें. पहचान छिपाने की सुविधा, टेंप्लेट में infoTypes प्रॉपर्टी के ज़रिए तय किए गए टेक्स्ट के उन हिस्सों को मास्क करती है.

सिंटैक्स

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
  "templateName" : "path-to-template"
}]]></Input>

उदाहरण

यहां दिए गए उदाहरण में, पहचान छिपाने के लिए इनपुट, अनुरोध का मुख्य हिस्सा है. इसे request.content फ़्लो वैरिएबल के ज़रिए भेजा जाता है.

<Action>deidentifyWithTemplate</Action>
<Input><![CDATA[{
    "text" : "{request.content}"
    "templateName" : "projects/[PROJECT_ID]/deidentifyTemplates/1231258663242"
}]]></Input>

इस उदाहरण के लिए, आउटपुट में अनुरोध का वह कॉन्टेंट दिखेगा जिसमें पहचान से जुड़ी जानकारी नहीं होगी.

अनुरोध के पैरामीटर

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
टेक्स्ट वह टेक्स्ट जिसकी पहचान छिपाना है. पहचान छिपाने की प्रोसेस इसी डेटा पर काम करती है. ऑब्जेक्ट कोई नहीं. हां.
templateName इस्तेमाल किया जाने वाला टेंप्लेट. यह टेंप्लेट का पाथ होगा, जो इस फ़ॉर्म में होगा: projects or organizations/PROJECT_ID/deidentifyTemplates/TEMPLATE_ID. Google API की मदद से टेंप्लेट बनाते समय, रिस्पॉन्स की name प्रॉपर्टी वैल्यू को templateName के तौर पर इस्तेमाल करें. स्ट्रिंग कोई नहीं. हां.

जवाब

इनपुट टेक्स्ट में, तय किए गए infoType की वैल्यू को infoType के नामों से बदल दिया जाता है.

deidentifyWithType

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

यहां दिए गए उदाहरण में, सेवा ने फ़ोन नंबर की पहचान की है. इसके बाद, इसे infoType के नाम से बदल दिया गया है.

  • इनपुट टेक्स्ट:

    John Smith, 123 Main St, Seattle, WA 98122, 206-555-0123.

  • नतीजे का टेक्स्ट:

    John Smith, 123 Main St, Seattle, WA 98122, PHONE_NUMBER.

सिंटैक्स

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
  "text" : "text-to-deidentify"
}]]></Input>

उदाहरण

यहां दिए गए उदाहरण में, मास्क करने के लिए इनपुट के तौर पर एक ईमेल पते का इस्तेमाल किया गया है. यह ईमेल पता, input.email.address फ़्लो वैरिएबल में सेव किया गया है. इस उदाहरण के लिए, इस एक्सटेंशन को EMAIL_ADDRESS infoType के साथ काम करने के लिए कॉन्फ़िगर किया जाना चाहिए. infoType की सूची देखने के लिए, InfoType Detector Reference देखें.

<Action>deidentifyWithType</Action>
<Input><![CDATA[{
    "text" : "{input.email.address}"
}]]></Input>

इस उदाहरण के लिए, आउटपुट यह होगा:

{"text":"EMAIL_ADDRESS"}

अनुरोध के पैरामीटर

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
टेक्स्ट वह टेक्स्ट जिसकी पहचान छिपाना है. स्ट्रिंग कोई नहीं. हां.

जवाब

इनपुट टेक्स्ट में, तय किए गए infoType की वैल्यू को infoType के नामों से बदल दिया जाता है. उदाहरण के लिए,

{"text":"EMAIL_ADDRESS"}

redactImage

ऐसी जानकारी को छिपाना जो infoType की किसी कैटगरी में आती है. जिस कॉन्टेंट को छिपाया गया है उसका पता लगाया जाता है और उसे अपारदर्शी आयत से छिपा दिया जाता है. इस कार्रवाई से, image_data के उन हिस्सों को मास्क किया जाता है जिन्हें एक्सटेंशन कॉन्फ़िगरेशन में infoTypes प्रॉपर्टी से तय किया गया है.

infoType की सूची देखने के लिए, InfoType डिटेक्टर का रेफ़रंस देखें.

अनुरोध के पैरामीटर

<Action>redactImage</Action>
<Input><![CDATA[{
  "image_data" : "base64-encoded-image-to-analyze",
  "image_type" : "type-of-image"
}]]></Input>
पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
image_data base64 में कोड में बदला गया इमेज डेटा. स्ट्रिंग कोई नहीं. हां.
image_type इमेज टाइप का कॉन्स्टेंट. उपलब्ध वैल्यू ये हैं: IMAGE_JPEG, IMAGE_BMP, IMAGE_PNG, IMAGE_SVG. स्ट्रिंग कोई नहीं. हां.

जवाब

टेक्स्ट वाली इमेज में, टेक्स्ट को छिपाया गया है.

कॉन्फ़िगरेशन का रेफ़रंस

एपीआई प्रॉक्सी में इस्तेमाल करने के लिए इस एक्सटेंशन को कॉन्फ़िगर और डिप्लॉय करते समय, इनका इस्तेमाल करें. Apigee कंसोल का इस्तेमाल करके एक्सटेंशन को कॉन्फ़िगर करने का तरीका जानने के लिए, एक्सटेंशन जोड़ना और उसे कॉन्फ़िगर करना लेख पढ़ें.

एक्सटेंशन की सामान्य प्रॉपर्टी

हर प्रॉपर्टी के लिए नीचे दी गई प्रॉपर्टी मौजूद हैं.

प्रॉपर्टी जानकारी डिफ़ॉल्ट ज़रूरी है
name वह नाम, जिसे आप एक्सटेंशन का यह कॉन्फ़िगरेशन दे रहे हैं. कभी नहीं हां
packageName एक्सटेंशन पैकेज का नाम, जो Apigee Edge से दिया गया है. कभी नहीं हां
version उस एक्सटेंशन पैकेज का वर्शन नंबर जिससे आपको एक्सटेंशन कॉन्फ़िगर करना है. कभी नहीं हां
configuration आप जिस एक्सटेंशन को जोड़ रहे हैं उसके लिए खास तौर पर कॉन्फ़िगरेशन वैल्यू. इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी देखें कभी नहीं हां

इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी

इस एक्सटेंशन के लिए, यहां दी गई कॉन्फ़िगरेशन प्रॉपर्टी की वैल्यू तय करें.

प्रॉपर्टी ब्यौरा डिफ़ॉल्ट ज़रूरी है
projectId वह Google Cloud प्रोजेक्ट आईडी जिसके लिए Cloud Data Loss Prevention API चालू है. कोई नहीं. हां.
infoTypes संवेदनशील डेटा के बारे में जानकारी देने वाले टाइप. अगर इसे शामिल नहीं किया जाता है, तो सेवा पहले से मौजूद सभी टाइप का पता लगाएगी. Google Cloud DLP सेवा के साथ काम करने वाले infoType की सूची देखने के लिए, InfoType Detector Reference देखें. कोई नहीं. नहीं.
क्रेडेंशियल Apigee Edge कंसोल में डालने पर, यह आपकी सेवा खाते की कुंजी फ़ाइल का कॉन्टेंट होता है. Management API का इस्तेमाल करके भेजे जाने पर, यह सेवा खाते की कुंजी फ़ाइल से जनरेट की गई base64-encoded वैल्यू होती है. कोई नहीं. हां.