Sicurezza di BigQuery a livello di riga con i servizi avanzati

Ad esempio, supponiamo che tu stia cercando di creare una soluzione per le tue dell'organizzazione. L'organizzazione delle vendite è divisa in più regioni, dove ogni ha un proprio Regional Manager. Il set di dati sulle vendite in BigQuery contiene per regione e data.

La soluzione proposta avrà un'unica dashboard in cui i responsabili regionali possono visualizzare i dati sulle vendite solo per le proprie regioni.

Requisiti

  • I visualizzatori della dashboard accederanno con un Account Google.
  • È disponibile una mappatura tra l'email dell'utente e i dati/righe di cui dispone a cui accedono.
  • Per accedere ai dati BigQuery verrà utilizzato un account di servizio. Di conseguenza, la fatturazione saranno centralizzate e gestite dal provider della dashboard.

Limitazioni

  • La dashboard richiede prima un'autorizzazione una tantum da parte di ogni visualizzatore vista.
  • I visualizzatori non possono modificare la dashboard né condividerla con altri.
  • Se sei un cliente di Workspace e l'amministratore ha disattivato la condivisione File di Drive in "Chiunque abbia un link", rimuovi la condivisione limitazione o sviluppare la soluzione su un account Gmail.com.

Soluzione

Completa tutti i seguenti passaggi per implementare la soluzione.

Crea un nuovo connettore della community

Consulta Come funzionano i connettori della community e completa il Connettore della community Codelab per iniziare. Utilizza lo Strumento per sviluppatori per creare connettori per un un processo di sviluppo più rapido e semplice.

Scrivi il codice del connettore

  1. getAuthType() dovrebbe restituire NONE.
  2. getConfig() deve restituire una configurazione vuota.
    • (Facoltativo) Se hai bisogno di input specifici per la configurazione della dashboard, può richiedere l'input dell'utente qui.
  3. getSchema() deve restituire lo schema per la tua query.
    • (Facoltativo) Puoi aggiungere campi e calcoli personalizzati nel linguaggio SQL query o l'utilizzo di campi calcolati come parte dello schema.
  4. L'operazione getData() verrà completata in un passaggio successivo.

Aggiorna manifest

Visualizza il riferimento del file manifest e completa il file manifest con tutti i requisiti richiesti informazioni, tra cui:

  1. imposta dataStudio.forceViewersCredentials su true.
  2. imposta dataStudio.advancedServices.data su true.
  3. Per oauthScopes, aggiungi https://www.googleapis.com/auth/userinfo.email e https://www.googleapis.com/auth/script.external_request. Vedi Autorizzazione Ambiti di Apps Script per ulteriori informazioni.
      .
    • Condizionale:aggiungi tutti gli ambiti pertinenti per i servizi utilizzati nel di rete.

Il file manifest dovrebbe avere il seguente aspetto:

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

Implementare un account di servizio

  1. Crea un account di servizio nel tuo progetto Google Cloud. Questo sarà il tuo progetto di fatturazione.
  2. Assicurati che questo account di servizio disponga dell'accesso a BigQuery nel progetto cloud.
    • Ruoli IAM (Identity and Access Management) richiesti: BigQuery Data Viewer, BigQuery Job User
  3. Scarica il file JSON per recuperare le chiavi degli account di servizio. Conserva le chiavi le proprietà dello script del progetto connettore.
  4. Includi la libreria OAuth2 per Apps Script nel tuo progetto Apps Script.
  5. Implementa il codice OAuth2 richiesto per l'account di servizio:
    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']);
    }
    

Implementa getData()

  1. Creare la tua query in BigQuery.
    • Utilizzando l'email, cerca la mappatura tra l'email e i dati.
    • Utilizza la clausola JOIN e/o WHERE per filtrare i dati.
  2. Recupera l'indirizzo email dell'utente effettivo (riferimento sull'identità dell'utente).
  3. Utilizza i servizi avanzati di Looker Studio per restituire la configurazione della query. da getData.
    • Passa la query creata, il progetto di fatturazione e l'account di servizio Token OAuth.
    • Condizionale:se accetti l'input utente tramite il connettore getConfig, è necessario incorporare l'input come parametri BigQuery.

Crea la dashboard

  1. Scopri come funzionano i deployment e le versioni per i connettori.
  2. Crea un deployment di produzione per il connettore.
  3. Utilizza il deployment Produzione per creare un'origine dati e un nuovo report in e Looker Studio.
  4. Aggiungi tutte le tabelle e i grafici al report.
  5. La dashboard è ora pronta per essere condivisa con i tuoi utenti.

Rendi la dashboard disponibile per gli utenti

  1. Condividi lo script del connettore con gli utenti selezionati o con "Chiunque con link".
  2. Condividi la dashboard con utenti selezionati o con "Chiunque abbia ".
  3. Facoltativo:utilizza un servizio di abbreviazione di URL per creare un link breve per il . Condividi l'URL abbreviato con i tuoi utenti. Ciò consente di sostituire l'URL della dashboard in un secondo momento, se necessario.
  4. Facoltativo: misura l'utilizzo della dashboard configurando Google Analytics per il tuo report.

Codice di esempio