बेहतर सेवाओं के साथ BigQuery की लाइन-लेवल की सुरक्षा

उदाहरण के लिए, मान लें कि आपको अपने बिक्री संगठन के लिए कोई समाधान बनाना है. बिक्री संगठन को कई क्षेत्रों में बांटा गया है, जहां हर इलाके का अपना रीजनल मैनेजर है. BigQuery के बिक्री डेटासेट में, इलाके और तारीख के हिसाब से बिक्री की रकम होती है.

दिए गए समाधान में एक डैशबोर्ड होगा, जहां क्षेत्रीय मैनेजर सिर्फ़ अपने क्षेत्रों का बिक्री डेटा देख सकेंगे.

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

  • डैशबोर्ड व्यूअर किसी Google खाते से साइन-इन होंगे.
  • उपयोगकर्ता के ईमेल और उस डेटा/पंक्तियों के बीच मैपिंग उपलब्ध होती है जिनका ऐक्सेस उनके पास है.
  • BigQuery डेटा को ऐक्सेस करने के लिए, सेवा खाते का इस्तेमाल किया जाएगा. इसलिए, बिलिंग को डैशबोर्ड देने वाली कंपनी ही एक ही जगह से और मैनेज करेगी.

सीमाएं

  • डैशबोर्ड पर पहली बार देखने पर, हर दर्शक को एक बार अनुमति देना ज़रूरी होता है.
  • दर्शक डैशबोर्ड में बदलाव नहीं कर सकते या उसे दूसरे लोगों के साथ शेयर नहीं कर सकते.
  • अगर आप Workspace के ग्राहक हैं और आपके एडमिन ने Drive में मौजूद फ़ाइलों को “वे सभी लोग जिनके पास लिंक है” पर शेयर करने की सुविधा बंद कर दी है, तो शेयर करने से जुड़ी पाबंदी को हटाएं या Gmail.com खाते पर इसकी मदद से समस्या हल करें.

समस्या का हल

समाधान लागू करने के लिए, नीचे दिए गए सभी चरणों को पूरा करें.

नया कम्यूनिटी कनेक्टर बनाएं

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

कनेक्टर कोड लिखें

  1. getAuthType() को NONE लौटाना चाहिए.
  2. getConfig() में कोई कॉन्फ़िगरेशन नहीं मिलेगा.
    • ज़रूरी नहीं: अगर आपको डैशबोर्ड कॉन्फ़िगर करने के लिए खास इनपुट चाहिए, तो यहां उपयोगकर्ता के इनपुट का अनुरोध करें.
  3. getSchema() को आपकी क्वेरी के लिए स्कीमा दिखाना चाहिए.
  4. getData() बाद के चरण में पूरा किया जाएगा.

मेनिफ़ेस्ट अपडेट करें

मेनिफ़ेस्ट रेफ़रंस देखें और मेनिफ़ेस्ट में नीचे दी गई सभी ज़रूरी जानकारी शामिल करें:

  1. dataStudio.forceViewersCredentials को true पर सेट करें.
  2. dataStudio.advancedServices.data को true पर सेट करें.
  3. oauthScopes के लिए, https://www.googleapis.com/auth/userinfo.email और https://www.googleapis.com/auth/script.external_request जोड़ें. ज़्यादा जानकारी के लिए, Apps Script के लिए अनुमति का दायरा देखें.
    • शर्त के साथ: कनेक्टर में इस्तेमाल की जाने वाली सेवाओं के लिए, काम के सभी स्कोप जोड़ें.

मेनिफ़ेस्ट को कुछ इस तरह दिखना चाहिए:

{
  ...
  "dataStudio": {
    "forceViewersCredentials": true,
    "advancedServices": {
       "data": true
    },
    ...
  }
  "oauthScopes": [
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/userinfo.email"
    ],
  ...
}

सेवा खाता लागू करना

  1. अपने Google Cloud प्रोजेक्ट में, सेवा खाता बनाएं. यह आपका बिलिंग प्रोजेक्ट होगा.
  2. पक्का करें कि इस सेवा खाते के पास, क्लाउड प्रोजेक्ट में BigQuery का ऐक्सेस है.
    • पहचान और ऐक्सेस मैनेजमेंट (IAM) से जुड़ी ज़रूरी भूमिकाएं: BigQuery Data Viewer, BigQuery Job User
  3. सेवा खातों की कुंजियां पाने के लिए, JSON फ़ाइल डाउनलोड करें. कुंजियों को अपने कनेक्टर प्रोजेक्ट की स्क्रिप्ट प्रॉपर्टी में सेव करें.
  4. अपने Apps Script प्रोजेक्ट में, Apps Script के लिए OAuth2 लाइब्रेरी को शामिल करें.
  5. सेवा खाते के लिए, ज़रूरी OAuth2 कोड लागू करें:
    var SERVICE_ACCOUNT_CREDS = 'SERVICE_ACCOUNT_CREDS';
    var SERVICE_ACCOUNT_KEY = 'private_key';
    var SERVICE_ACCOUNT_EMAIL = 'client_email';
    var BILLING_PROJECT_ID = 'project_id';
    
    /**
     * Copy the entire credentials JSON file from creating a service account in GCP.
     */
    function getServiceAccountCreds() {
      return JSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS));
    }
    
    function getOauthService() {
      var serviceAccountCreds = getServiceAccountCreds();
      var serviceAccountKey = serviceAccountCreds[SERVICE_ACCOUNT_KEY];
      var serviceAccountEmail = serviceAccountCreds[SERVICE_ACCOUNT_EMAIL];
    
      return OAuth2.createService('RowLevelSecurity')
        .setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
        .setTokenUrl('https://accounts.google.com/o/oauth2/token')
        .setPrivateKey(serviceAccountKey)
        .setIssuer(serviceAccountEmail)
        .setPropertyStore(scriptProperties)
        .setCache(CacheService.getScriptCache())
        .setScope(['https://www.googleapis.com/auth/bigquery.readonly']);
    }
    

getData() को लागू करें

  1. अपनी BigQuery क्वेरी बनाएं.
    • ईमेल का इस्तेमाल करके, ईमेल और डेटा के बीच मैपिंग देखें.
    • डेटा को फ़िल्टर करने के लिए, JOIN और/या WHERE क्लॉज़ का इस्तेमाल करें.
  2. प्रभावी उपयोगकर्ता का ईमेल पाएं (उपयोगकर्ता पहचान संदर्भ).
  3. getData से क्वेरी कॉन्फ़िगरेशन वापस लौटाने के लिए, Looker Studio की बेहतर सेवाएं का इस्तेमाल करें.
    • बनाई गई क्वेरी, बिलिंग प्रोजेक्ट, और सेवा खाते का OAuth टोकन पास करें.
    • शर्त के साथ: अगर getConfig कनेक्टर के ज़रिए उपयोगकर्ता का इनपुट लिया जा रहा है, तो आपको BigQuery पैरामीटर के तौर पर इनपुट शामिल करना होगा.

डैशबोर्ड बनाएं

  1. कनेक्टर के लिए डिप्लॉयमेंट और वर्शन के काम करने का तरीका जानें.
  2. कनेक्टर के लिए प्रोडक्शन डिप्लॉयमेंट बनाएं.
  3. Looker Studio में डेटा सोर्स और नई रिपोर्ट बनाने के लिए, प्रोडक्शन डिप्लॉयमेंट का इस्तेमाल करें.
  4. रिपोर्ट में सभी टेबल और चार्ट जोड़ें.
  5. डैशबोर्ड अब आपके उपयोगकर्ताओं के साथ शेयर किए जाने के लिए तैयार है.

उपयोगकर्ताओं को डैशबोर्ड उपलब्ध कराएं

  1. चुने गए उपयोगकर्ताओं या “लिंक वाले सभी लोग” के साथ कनेक्टर स्क्रिप्ट शेयर करें.
  2. चुने गए उपयोगकर्ताओं या “जिसके पास भी लिंक हो” के साथ डैशबोर्ड शेयर करें.
  3. ज़रूरी नहीं: डैशबोर्ड यूआरएल के लिए छोटा लिंक बनाने के लिए, यूआरएल छोटा करने वाली सेवा का इस्तेमाल करें. छोटे किए गए यूआरएल को अपने उपयोगकर्ताओं के साथ शेयर करें. इससे, ज़रूरत पड़ने पर बाद में डैशबोर्ड का यूआरएल बदला जा सकता है.
  4. ज़रूरी नहीं: अपनी रिपोर्ट के लिए Google Analytics सेट अप करके, डैशबोर्ड के इस्तेमाल का आकलन करें.

कोड का उदाहरण