Best practice per la sicurezza per analisi incorporate

Con l'analisi incorporata di Looker, puoi consentire a utenti e clienti di esplorare i dati incorporati in un iframe in qualsiasi pagina web, portale o applicazione in formato HTML. L'iframe esegue l'intera applicazione Looker, richiedendo solo i dati necessari per visualizzare la query. Per impostazione predefinita, un iframe non è autorizzato a leggere o scrivere dati dal tuo sito web o dalla tua applicazione esterni.

L'incorporamento dei dati a volte potrebbe comportare problemi di privacy o di sicurezza. Per attenuare questi problemi, consigliamo agli amministratori di Looker di seguire queste best practice:

  • Se incorpora contenuti di Looker ai clienti, configurali su un'istanza Looker separata da quella che utilizzi per l'analisi interna.
  • Connetti i dati solo all'istanza incorporata di Looker, che dovrebbe essere accessibile agli utenti incorporati, che potrebbero essere pubblici.
  • Proteggi i token casuali all'interno degli URL incorporati pubblici come se fossero credenziali utente e disattiva gli URL pubblici se non vengono utilizzati.
  • Il valore external_user_id assegnato deve essere univoco per ogni insieme specifico di autorizzazioni, attributi utente e modelli. Assicurati di non utilizzare lo stesso external_user_id in diverse sessioni di incorporamento per utenti interattivi diversi e di non utilizzare lo stesso external_user_id per un singolo utente che ha autorizzazioni, valori degli attributi utente o accesso al modello diversi.
  • Attiva un sistema chiuso.
  • Proteggi il secret di incorporamento firmato come se fossero credenziali di amministratore per la tua istanza Looker incorporata e mantieni disabilitato l'incorporamento firmato se non lo utilizzi.
  • Utilizza l'autenticazione avanzata per le istanze incorporate di Looker (firmato incorporando, SAML, Google OAuth, 2FA).
  • Se utilizzi l'incorporamento senza cookie, proteggi il token di riferimento della sessione in modo che sia accessibile solo nel server host dell'applicazione incorporato. Il token di riferimento della sessione non deve mai essere esposto nel browser.
  • Se utilizzi l'incorporamento senza cookie e imposti il dominio incorporato consentito durante l'acquisizione della sessione senza cookie, non considerare mai attendibile l'origine del browser dell'utente incorporato. Mantieni sempre una mappatura dell'utente incorporato all'origine attendibile dell'utente nel server delle applicazioni di incorporamento.

Looker offre diversi tipi di metodi di incorporamento a seconda del livello di autenticazione richiesto agli utenti che accedono ai tuoi dati: pubblico, privato e incorporamento con firma digitale. Ognuno di questi metodi ti consente di interagire con l'iframe utilizzando JavaScript.

Incorporamento pubblico

Con l'opzione di accesso pubblico attivata di un Look,puoi incorporare una visualizzazione o una tabella di dati in un sito web esterno utilizzando un tag iframe HTML. Puoi anche condividere pubblicamente l'URL del Look o importare i dati in applicazioni per fogli di lavoro Google o Excel.

L'URL e l'URL incorporato all'interno del tag iframe contengono un token casuale e non possono essere intuiti, ma chiunque disponga dell'URL incorporato può accedere ai dati e non vengono applicati filtri o limitazioni aggiuntivi. Prima di attivare gli URL pubblici, ti consigliamo di prendere in considerazione le implicazioni sulla sicurezza derivanti dalla creazione e dalla condivisione di un URL pubblico per un determinato Look.

Gli URL pubblici e gli URL incorporati non scadono e non possono essere revocati. Quando condividi un URL pubblico, condividi la query e non i dati effettivi.

Incorporamento privato

Se non vuoi consentire l'accesso pubblico al Look, puoi anche incorporare un Look, oppure un'esplorazione o una dashboard, privatamente in un iframe, in modo che sia necessario l'accesso a Looker per visualizzare i contenuti.

Gli utenti autenticati possono accedere solo ai contenuti dettati dalle autorizzazioni Looker assegnate. Se modifichi le autorizzazioni in Looker, l'URL di incorporamento non cambia, ma ciò che l'utente può vedere quando accede all'URL potrebbe cambiare.

Se l'utente non è autenticato, puoi mostrare un errore o una schermata di accesso nell'iframe. Tuttavia, l'attivazione di una schermata di accesso nell'iframe non è compatibile con le protezioni della stessa origine di Looker.

Gli URL di incorporamento privati non scadono e non possono essere revocati. Tuttavia, poiché il link funziona solo per chi ha accesso alla tua istanza di Looker e a quei dati, l'invio di un link non dovrebbe causare un problema di sicurezza.

Incorporamento firmato

Contatta un esperto delle vendite di Google Cloud per aggiornare la tua licenza per questa funzionalità.

L'incorporamento firmato porta un ulteriore passo avanti all'incorporamento privato. L'incorporamento firmato non richiede agli utenti di eseguire l'autenticazione utilizzando un account utente Looker. ma possono essere autenticati tramite la tua applicazione utilizzando l'URL in un iframe. L'autenticazione crea una nuova sessione del browser e invia un cookie al browser.

Le autorizzazioni, gli identificatori e gli attributi utente vengono tutti trasmessi come parametri all'interno dell'URL, firmato con una chiave segreta. Chiunque abbia accesso alla chiave segreta può creare un URL per accedere a qualsiasi modello a cui è connessa l'istanza di Looker, come qualsiasi utente, con qualsiasi autorizzazione. Consulta il nostro codice di esempio per scoprire come generare URL firmati.

Il clickjacking è un problema di sicurezza del browser che può verificarsi quando un codice incorporato o uno script esegue una funzione all'insaputa dell'utente o senza il suo consenso, ad esempio un pulsante che appare per fare qualcos'altro. Il clickjacking richiede in genere un URL statico. L'URL generato per un incorporamento firmato è segreto e deve essere fornito solo dall'utente che visualizza l'incorporamento. L'utilizzo dell'incorporamento firmato non aumenta il rischio di clickjacking per il sito web esterno.

Parametri di incorporamento firmati

I parametri inclusi nell'URL iframe sono visibili per gli utenti incorporati, ma non possono essere modificati. Tra questi figurano:

  • user_attributes: vengono utilizzati per filtrare ulteriormente i dati. Le user_attributes sono molto efficaci, perciò valuta come possono essere applicate alla tua istanza Looker.
  • session_length: mantieni questo limite di tempo al minimo necessario.

Alcuni parametri, come user_attributes, possono essere nascosti nell'interfaccia utente, ma verrebbero comunque codificati nell'URL di incorporamento. Ciò potrebbe essere indesiderato se, ad esempio, il valore della password è all'interno del user_attribute di un utente. Per risolvere il problema, crea un gruppo temporaneo, imposta la password come attributo a livello di gruppo e poi trasmetti l'ID gruppo nell'URL incorporato. Puoi eliminare il gruppo dopo la sessione di incorporamento per evitare un numero eccessivo di gruppi non più attivi.

La parte firmata dell'URL contiene un timestamp. Dopo aver utilizzato l'URL per l'accesso, l'intervallo di tempo deve essere +/- 5 minuti dall'ora attuale. Puoi specificare in session_length la durata della sessione di incorporamento dal momento in cui viene utilizzato l'URL per l'accesso.

Gestione dell'accesso all'incorporamento firmato

Quando crei l'URL per i contenuti incorporati:

  • Utilizza il livello di autorizzazioni minimo necessario.
  • Assegna l'accesso solo ai modelli specifici a cui l'utente deve essere in grado di accedere.
  • Utilizza group_ids per assegnare un utente a un gruppo e consenti all'utente incorporato di controllare l'accesso alla propria cartella Looker.

API Looker

Utilizzando l'API di Looker, puoi abilitare l'accesso ai contenuti incorporati utilizzando un'applicazione proxy o un server proxy inverso. In questo scenario, l'autenticazione viene eseguita utilizzando chiavi API, che sono associate a un utente specifico e hanno le stesse autorizzazioni dell'utente che le genera. Le chiavi API sono composte da un ID client e una chiave client secret.

Gestione dell'accesso incorporato utilizzando l'API

Per abilitare l'accesso ai contenuti incorporati utilizzando l'API di Looker, ti consigliamo di:

  • Creazione di account di servizi dedicati per l'accesso all'API programmatica con il set minimo di privilegi necessari.
  • Proteggere l'ID client e il client secret che costituiscono la chiave API (se esegui l'autenticazione con un SDK).

Tutti gli attributi utente impostati per gli utenti incorporati che utilizzano l'API ma non specificati nell'URL di incorporamento firmato vengono reimpostati sui valori predefiniti al successivo accesso all'URL di incorporamento firmato.

Eventi JavaScript incorporati

Dopo aver configurato l'iframe incorporato (pubblicamente, privatamente, con incorporamento firmato o tramite l'API), puoi interagire con tale iframe utilizzando JavaScript. Per verificare che le informazioni su cui stai lavorando provengano effettivamente dall'iframe di Looker, puoi ascoltare gli eventi JavaScript.

Quando aggiungi domini alla lista consentita, utilizza il carattere jolly per consentire solo a sottodomini specifici di accedere ai tuoi eventi JavaScript.

Se utilizzi la funzione JavaScript eval, assicurati che il valore della stringa nell'argomento eval provenga da una fonte attendibile, come il server Looker o la rete CDN, e che si trovi nel trasporto HTTPS.

Nessun dato dei clienti passa mai attraverso le CDN di Looker. Solo gli asset statici delle applicazioni web di Looker (codice JavaScript, pagine HTML, stili CSS) vengono pubblicati da CDN.

Deployment ospitati dal cliente

L'hosting della tua istanza Looker potrebbe sembrare un modo sicuro per bloccare l'accesso ai dati, in particolare ai contenuti incorporati. Tuttavia, se gli utenti devono accedere all'URL di incorporamento su Internet, non ci sono vantaggi speciali per l'hosting di Looker in autonomia.

Le implementazioni ospitate dal cliente possono essere più appropriate quando:

  • Gli utenti non sono tenuti ad accedere a Looker tramite internet.
  • Stai eseguendo il frontend di Looker e accedi ai contenuti incorporati utilizzando l'API.