Microsoft SQL Server (MSSQL)

Crittografia del traffico di rete

È buona prassi criptare il traffico di rete tra l'applicazione Looker e il database. Valuta la possibilità di utilizzare una delle opzioni descritte nella pagina della documentazione Abilitare l'accesso sicuro ai database.

Se vuoi utilizzare la crittografia SSL, consulta la documentazione di Microsoft.

Configurazione dell'autenticazione del server

Looker richiede "Autenticazione SQL Server" sul server MSSQL. Se il server MSSQL è configurato solo come "Autenticazione integrata di Windows", modifica la configurazione del server in "Autenticazione integrata di Windows e autenticazione SQL Server".

Se la configurazione del server non è impostata correttamente, Looker non potrà connettersi. Nei messaggi di log di SQL Server viene visualizzato il messaggio "Un tentativo di accesso utilizzando l'autenticazione SQL non è riuscito. Il server è configurato solo per l'autenticazione Windows."

Se questa modifica è necessaria, puoi completare i seguenti passaggi:

  1. In Esploratore oggetti di SQL Server Management Studio, fai clic con il tasto destro del mouse sul server e poi su Proprietà.
  2. Nella pagina Sicurezza, in Autenticazione server, seleziona la nuova modalità di autenticazione del server e poi fai clic su OK.
  3. Nella finestra di dialogo SQL Server Management Studio, fai clic su OK per confermare il requisito di riavviare SQL Server.
  4. In Esploratore oggetti, fai clic con il tasto destro del mouse sul server e poi su Riavvia. Se l'agente SQL Server è in esecuzione, deve essere riavviato.

Per saperne di più, consulta la documentazione di Microsoft.

Creazione di un utente di Looker

Looker esegue l'autenticazione nel database utilizzando l'autenticazione SQL Server. L'utilizzo di un account di dominio non è supportato.

Per creare un account, esegui i seguenti comandi. Cambia some_password_here con una password unica e sicura:

CREATE LOGIN looker
  WITH PASSWORD = 'some_password_here';
USE MyDatabase;
CREATE USER looker FOR LOGIN looker;
GO

Concedere all'utente di Looker l'autorizzazione SELECT dalle tabelle

Looker richiede l'autorizzazione SELECT per ogni tabella o schema su cui vuoi eseguire query. Esistono diversi modi per assegnare l'autorizzazione SELECT:

  • Per concedere l'autorizzazione SELECT ai singoli schemi, esegui il seguente comando per ogni schema:

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • Per concedere l'autorizzazione SELECT alle singole tabelle, esegui il seguente comando per ogni tabella:

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • Per MSSQL versione 2012 o successive, in alternativa puoi assegnare all'utente di Looker il ruolo db_datareader utilizzando questi comandi:

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Concedere all'utente di Looker l'autorizzazione per visualizzare e interrompere l'esecuzione delle query

Looker deve essere autorizzato a rilevare e interrompere l'esecuzione delle query, il che richiede le seguenti autorizzazioni:

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

Per concedere queste autorizzazioni, esegui i seguenti comandi:

USE Master;
GRANT ALTER ANY CONNECTION TO looker;
GRANT VIEW SERVER STATE to looker;
GO

Concedere all'utente di Looker l'autorizzazione a creare tabelle

Per concedere all'utente di Looker l'autorizzazione per creare PDT, esegui i seguenti comandi:

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

Configurazione dello schema temporaneo

Per creare uno schema di proprietà dell'utente di Looker e concedere all'utente i diritti necessari, esegui questo comando:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Configurazione dell'autenticazione Kerberos

Se utilizzi l'autenticazione Kerberos con il tuo database MSSQL, segui i passaggi per configurare Looker in modo che si connetta utilizzando Kerberos, come descritto nella sezione seguente.

Configurazione del client Kerberos

Innanzitutto, devi assicurarti l'installazione di diversi software e la presenza di diversi file sulla macchina Looker.

Client Kerberos

Verifica che il client Kerberos sia installato sulla macchina di Looker eseguendo kinit. Se il client Kerberos non è installato, installa i file binari del client Kerberos.

Ad esempio, su Redhat o CentOS, il comando sarà il seguente:

sudo yum install krb5-workstation krb5-libs krb5-auth-dialog

Java 8

Java 8 deve essere installato sulla macchina di Looker e nei percorsi PATH e JAVA_HOME dell'utente di Looker. Se necessario, installalo localmente nella directory looker.

Java Cryptography Extension

  1. Scarica e installa Java Cryptography Extension (JCE) per Java 8 da questa pagina di download di Oracle.

    • Individua la directory jre/lib/security per l'installazione di Java.
    • Rimuovi i seguenti file JAR da questa directory: local_policy.jar e US_export_policy.jar.
    • Sostituisci questi due file con i file JAR inclusi nel download dei file JCE Unlimited Strength Jurisdiction Policy.

    Potrebbe essere possibile utilizzare versioni di Java precedenti a Java 8 con JCE installato, ma non è consigliabile.

  2. Aggiorna JAVA_HOME e PATH in ~looker/.bash_profile in modo che rimandino all'installazione corretta di Java e source ~/.bash_profile oppure esci ed esegui nuovamente l'accesso.

  3. Verifica la versione Java con java -version.

  4. Verifica la variabile di ambiente JAVA_HOME con echo $JAVA_HOME.

gss-jaas.conf

Crea un file gss-jaas.conf nella directory looker con i seguenti contenuti:

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true;
};

Se necessario per i test, debug=true può essere aggiunto a questo file nel seguente modo:

com.sun.security.jgss.initiate {
    com.sun.security.auth.module.Krb5LoginModule required
    useTicketCache=true
    doNotPrompt=true
    debug=true;
};

krb5.conf

Il server su cui è in esecuzione Looker deve avere anche un file krb5.conf valido. Per impostazione predefinita, questo file si trova in /etc/krb5.conf. Se si trova in un'altra posizione, deve essere indicato nell'ambiente (KRB5_CONFIG nell'ambiente shell).

Potresti dover copiare questo file da un'altra macchina client Kerberos.

lookerstart.cfg

Fai riferimento ai file gss-jaas.conf e krb5.conf creando un file nella directory looker (la stessa directory contenente lo script di avvio looker) denominato lookerstart.cfg contenente le seguenti righe:

  JAVAARGS="-Djava.security.auth.login.config=/path/to/gss-jaas.conf -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf=/etc/krb5.conf"
  LOOKERARGS=""

Se il file krb5.conf non si trova in /etc/krb5.conf, sarà necessario aggiungere anche questa variabile:

  -Djava.security.krb5.conf=/path/to/krb5.conf

Per il debug, aggiungi queste variabili:

  -Dsun.security.jgss.debug=true -Dsun.security.krb5.debug=true

Quindi riavvia Looker con ./looker restart.

Autenticazione con Kerberos

Autenticazione degli utenti

  1. Se krb5.conf non è in /etc/, utilizza la variabile di ambiente KRB5_CONFIG per indicarne la posizione.

  2. Esegui il comando klist per assicurarti che nella cache delle richieste Kerberos sia presente una richiesta valida.

  3. Se non esiste un ticket, esegui kinit username@REALM o kinit username per crearlo.

  4. L'account utilizzato con Looker sarà probabilmente headless, quindi puoi ottenere un file keytab da Kerberos per archiviare la credenziale per un uso a lungo termine. Utilizza un comando come kinit -k -t looker_user.keytab username@REALM per ottenere il ticket Kerberos.

Rinnovo automatico della richiesta

Configura un job cron che venga eseguito di tanto in tanto per mantenere un ticket attivo nella cache dei ticket Kerberos. La frequenza di esecuzione dipende dalla configurazione del cluster. klist dovrebbe fornire un'indicazione sulla scadenza dei biglietti.

Creazione della connessione di Looker al database

Per creare la connessione da Looker al database:

  1. Nella sezione Amministrazione di Looker, seleziona Connessioni e poi fai clic su Aggiungi connessione.
  2. Nel menu a discesa Dialetto, seleziona la versione di Microsoft SQL Server.

  3. In Host remoto e Porta, inserisci il nome host e la porta (la porta predefinita è 1433).

    Se devi specificare una porta non predefinita diversa da 1433 e il tuo database richiede l'utilizzo di una virgola anziché di due punti, puoi aggiungere useCommaHostPortSeparator=true nel campo Parametri JDBC aggiuntivi più in basso nelle impostazioni di connessione, in modo da poter utilizzare una virgola per Host remoto:Porta. Ad esempio:

    jdbc:sqlserver://hostname,1434

  4. Compila il resto dei dettagli della connessione. La maggior parte delle impostazioni è comune alla maggior parte dei dialetti di database. Per informazioni, consulta la pagina della documentazione Connessione di Looker al tuo database.

  5. Per verificare che la connessione sia andata a buon fine, fai clic su Test. Per informazioni sulla risoluzione dei problemi, consulta la pagina della documentazione Testare la connettività del database.

  6. Per salvare queste impostazioni, fai clic su Connetti.

Configurazione della connessione a Looker

Segui le istruzioni riportate nella pagina della documentazione Connessione di Looker al database per creare una connessione al database MSSQL. Nella sezione Parametri JDBC aggiuntivi della pagina Impostazioni di connessione, aggiungi quanto segue:

;integratedSecurity=true;authenticationScheme=JavaKerberos

Alcune reti sono configurate per due realm Kerberos, uno per Windows Active Directory e l'altro per Linux e altri sistemi non Windows. In questo caso, quando il realm basato su Linux e il realm Active Directory sono configurati in modo da fidarsi l'uno dell'altro, si parla di "autenticazione tra realm".

Se la tua rete utilizza l'autenticazione tra domini, devi specificare esplicitamente l'entità Kerberos per MSSQL Server. Nel campo Parametri JDBC aggiuntivi, aggiungi quanto segue:

;serverSpn=service_name/FQDN\:PORT@REALM

Sostituisci FQDN e PORT@REALM con le informazioni sulla tua rete. Ad esempio:

;serverSpn=MSSQLSvc/dbserver.internal.example.com:1433@AD.EXAMPLE.COM

Inoltre, la pagina Impostazioni connessione in Looker richiede voci nei campi Nome utente e Password, ma queste non sono necessarie per Kerberos. Inserisci valori fittizi in questi campi.

Verifica la connessione per assicurarti che sia configurata correttamente.

Funzionalità supportate

Affinché Looker supporti alcune funzionalità, anche il dialetto del database deve supportarle.

A partire da Looker 24.20, Microsoft SQL Server 2008 e versioni successive supportano le seguenti funzionalità:

Funzionalità Supportato?
Livello di assistenza
Integrazione
Looker (Google Cloud core)
No
Aggregati simmetrici
Tabelle derivate
Tabelle derivate SQL permanenti
Tabelle derivate native permanenti
Visualizzazioni stabili
Interruzioni delle query
Pivot basati su SQL
Fusi orari
No
SSL
Subtotali
Parametri aggiuntivi JDBC
Sensibilità alle maiuscole
No
Tipo di località
Tipo di elenco
No
Percentile
No
Percentile distinto
No
Processi di visualizzazione di SQL Runner
Tabella Describe di SQL Runner
Indici di SQL Runner Show
SQL Runner Select 10
Conteggio di SQL Runner
SQL Explain
No
Credenziali OAuth
No
Commenti contestuali
Pool di connessioni
No
Schizzi HLL
No
Aggregate Awareness
PDT incrementali
No
Millisecondi
Microsecondi
Viste materializzate
No
Conteggio approssimativo valori distinti
No

Microsoft SQL Server 2016 supporta le seguenti funzionalità a partire da Looker 24.20:

Funzionalità Supportato?
Livello di assistenza
Supportato
Looker (Google Cloud core)
No
Aggregati simmetrici
Tabelle derivate
Tabelle derivate SQL permanenti
Tabelle derivate native permanenti
Visualizzazioni stabili
Interruzioni delle query
Pivot basati su SQL
Fusi orari
SSL
Subtotali
Parametri aggiuntivi JDBC
Sensibilità alle maiuscole
No
Tipo di località
Tipo di elenco
No
Percentile
No
Percentile distinto
No
Processi di visualizzazione di SQL Runner
Tabella Describe di SQL Runner
Indici di SQL Runner Show
SQL Runner Select 10
Conteggio di SQL Runner
SQL Explain
No
Credenziali OAuth
No
Commenti contestuali
Pool di connessioni
No
Schizzi HLL
No
Aggregate Awareness
PDT incrementali
No
Millisecondi
Microsecondi
Viste materializzate
No
Conteggio approssimativo valori distinti
No

Microsoft SQL Server 2017 e versioni successive supportano le seguenti funzionalità a partire da Looker 24.20:

Funzionalità Supportato?
Livello di assistenza
Supportato
Looker (Google Cloud core)
Aggregati simmetrici
Tabelle derivate
Tabelle derivate SQL permanenti
Tabelle derivate native permanenti
Visualizzazioni stabili
Interruzioni delle query
Pivot basati su SQL
Fusi orari
SSL
Subtotali
Parametri aggiuntivi JDBC
Sensibilità alle maiuscole
No
Tipo di località
Tipo di elenco
No
Percentile
No
Percentile distinto
No
Processi di visualizzazione di SQL Runner
Tabella Describe di SQL Runner
Indici di SQL Runner Show
SQL Runner Select 10
Conteggio di SQL Runner
SQL Explain
No
Credenziali OAuth
No
Commenti contestuali
Pool di connessioni
No
Schizzi HLL
No
Aggregate Awareness
PDT incrementali
No
Millisecondi
Microsecondi
Viste materializzate
No
Conteggio approssimativo valori distinti
No