Microsoft SQL Server (MSSQL)

Netzwerkverkehr verschlüsseln

Es wird empfohlen, den Netzwerkverkehr zwischen der Looker-Anwendung und Ihrer Datenbank zu verschlüsseln. Prüfen Sie eine der Optionen, die auf der Dokumentationsseite Sicheren Datenbankzugriff ermöglichen beschrieben werden.

Wenn Sie an der Verwendung von SSL-Verschlüsselung interessiert sind, lesen Sie die Microsoft-Dokumentation.

Serverauthentifizierung konfigurieren

Looker erfordert die „SQL Server-Authentifizierung“ auf Ihrem MSSQL-Server. Wenn Ihr MSSQL-Server nur als „Integrierte Windows-Authentifizierung“ konfiguriert ist, ändern Sie die Serverkonfiguration in „Integrierte Windows-Authentifizierung und SQL Server-Authentifizierung“.

Wenn die Serverkonfiguration nicht richtig festgelegt ist, kann Looker keine Verbindung herstellen. Dies wird in Ihren SQL Server-Protokollmeldungen angezeigt, z. B.: „Ein Versuch, sich mit der SQL-Authentifizierung anzumelden, ist fehlgeschlagen. Der Server ist nur für die Windows-Authentifizierung konfiguriert.“

Wenn diese Änderung erforderlich ist, führen Sie die folgenden Schritte aus:

  1. Klicken Sie im SQL Server Management Studio Object Explorer mit der rechten Maustaste auf den Server und dann auf Eigenschaften.
  2. Wählen Sie auf der Seite Sicherheit unter Serverauthentifizierung den neuen Serverauthentifizierungsmodus aus und klicken Sie dann auf OK.
  3. Klicken Sie im Dialogfeld SQL Server Management Studio auf OK, um die Aufforderung zum Neustarten von SQL Server zu bestätigen.
  4. Klicken Sie im Object Explorer mit der rechten Maustaste auf den Server und dann auf Neu starten. Wenn der SQL Server-Agent ausgeführt wird, muss er ebenfalls neu gestartet werden.

Weitere Informationen finden Sie in der Dokumentation von Microsoft.

Looker-Nutzer erstellen

Looker authentifiziert sich bei Ihrer Datenbank mit der SQL Server-Authentifizierung. Die Verwendung eines Domainkontos wird nicht unterstützt.

Führen Sie die folgenden Befehle aus, um ein Konto zu erstellen. Ändern Sie some_password_here in ein eindeutiges, sicheres Passwort:

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

Looker-Nutzer die SELECT-Berechtigung für Tabellen erteilen

In Looker ist die Berechtigung SELECT für jede Tabelle oder jedes Schema erforderlich, die bzw. das Sie abfragen möchten. Es gibt mehrere Möglichkeiten, die SELECT-Berechtigung zuzuweisen:

  • Wenn Sie die Berechtigung SELECT für einzelne Schemas gewähren möchten, führen Sie für jedes Schema den folgenden Befehl aus:

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • Wenn Sie einzelnen Tabellen die Berechtigung SELECT erteilen möchten, führen Sie für jede Tabelle den folgenden Befehl aus:

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • Bei MSSQL-Version 2012 oder höher können Sie dem Looker-Nutzer alternativ mit den folgenden Befehlen die Rolle db_datareader zuweisen:

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Looker-Nutzer die Berechtigung zum Ansehen und Beenden laufender Abfragen erteilen

Looker muss autorisiert sein, laufende Abfragen zu erkennen und anzuhalten. Dazu sind die folgenden Berechtigungen erforderlich:

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

Führen Sie die folgenden Befehle aus, um diese Berechtigungen zu erteilen:

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

Looker-Nutzer die Berechtigung zum Erstellen von Tabellen erteilen

Führen Sie die folgenden Befehle aus, um dem Looker-Nutzer die Berechtigung zum Erstellen von PDTs zu erteilen:

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

Einrichtung eines temporären Schemas

Führen Sie diesen Befehl aus, um ein Schema zu erstellen, das dem Looker-Nutzer gehört, und ihm die erforderlichen Rechte zu gewähren:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Kerberos-Authentifizierung konfigurieren

Wenn Sie die Kerberos-Authentifizierung für Ihre MSSQL-Datenbank verwenden, folgen Sie der Anleitung im folgenden Abschnitt, um Looker so zu konfigurieren, dass eine Verbindung über Kerberos hergestellt wird.

Kerberos-Clientkonfiguration einrichten

Zuerst müssen Sie dafür sorgen, dass mehrere Softwarekomponenten installiert sind und mehrere Dateien auf dem Looker-Rechner vorhanden sind.

Kerberos-Client

Prüfen Sie, ob der Kerberos-Client auf dem Looker-Rechner installiert ist. Führen Sie dazu kinit aus. Wenn der Kerberos-Client nicht installiert ist, installieren Sie die Binärdateien des Kerberos-Clients.

Unter Redhat oder CentOS sieht das beispielsweise so aus:

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

Java 8

Java 8 muss auf dem Looker-Computer und in den PATH und JAVA_HOME des Looker-Nutzers installiert sein. Installieren Sie es gegebenenfalls lokal im Verzeichnis looker.

Java Cryptography Extension

  1. Laden Sie die Java Cryptography Extension (JCE) für Java 8 von der Oracle-Downloadseite herunter und installieren Sie sie.

    • Suchen Sie das Verzeichnis jre/lib/security für die Java-Installation.
    • Entfernen Sie die folgenden JAR-Dateien aus diesem Verzeichnis: local_policy.jar und US_export_policy.jar.
    • Ersetzen Sie diese beiden Dateien durch die JAR-Dateien, die im Download der JCE Unlimited Strength Jurisdiction Policy Files enthalten sind.

    Es ist möglicherweise möglich, Versionen von Java vor Java 8 mit installierter JCE zu verwenden. Dies wird jedoch nicht empfohlen.

  2. Aktualisieren Sie JAVA_HOME und PATH in ~looker/.bash_profile, damit sie auf die richtige Installation von Java und source ~/.bash_profile verweisen, oder melden Sie sich ab und wieder an.

  3. Prüfen Sie die Java-Version mit java -version.

  4. Prüfen Sie die Umgebungsvariable JAVA_HOME mit echo $JAVA_HOME.

gss-jaas.conf

Erstellen Sie im Verzeichnis looker eine gss-jaas.conf-Datei mit folgendem Inhalt:

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

Falls für den Test erforderlich, kann debug=true dieser Datei so hinzugefügt werden:

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

krb5.conf

Auf dem Server, auf dem Looker ausgeführt wird, muss sich auch eine gültige krb5.conf-Datei befinden. Standardmäßig befindet sich diese Datei unter /etc/krb5.conf. Wenn sich das Script an einem anderen Speicherort befindet, muss dies in der Umgebung angegeben werden (KRB5_CONFIG in der Shell-Umgebung).

Möglicherweise müssen Sie diese von einem anderen Kerberos-Clientcomputer kopieren.

lookerstart.cfg

Verweisen Sie auf die Dateien gss-jaas.conf und krb5.conf, indem Sie im Verzeichnis looker (demselben Verzeichnis, das das Startskript looker enthält) eine Datei namens lookerstart.cfg mit den folgenden Zeilen erstellen:

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

Wenn sich die Datei krb5.conf nicht unter /etc/krb5.conf befindet, müssen Sie auch diese Variable hinzufügen:

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

Fügen Sie zum Debuggen die folgenden Variablen hinzu:

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

Starten Sie Looker dann mit ./looker restart neu.

Mit Kerberos authentifizieren

Nutzerauthentifizierung

  1. Wenn sich krb5.conf nicht in /etc/ befindet, geben Sie den Speicherort mit der Umgebungsvariablen KRB5_CONFIG an.

  2. Führen Sie den Befehl klist aus, um sicherzustellen, dass sich im Kerberos-Ticket-Cache ein gültiges Ticket befindet.

  3. Wenn kein Ticket vorhanden ist, führe kinit username@REALM oder kinit username aus, um ein Ticket zu erstellen.

  4. Das mit Looker verwendete Konto ist wahrscheinlich headless. Sie können also eine Keytab-Datei von Kerberos abrufen, um die Anmeldedaten für die langfristige Verwendung zu speichern. Verwenden Sie einen Befehl wie kinit -k -t looker_user.keytab username@REALM, um das Kerberos-Ticket abzurufen.

Automatische Verlängerung des Tickets

Richten Sie einen Cron-Job ein, der in regelmäßigen Abständen ausgeführt wird, um ein aktives Ticket im Kerberos-Ticket-Cache zu halten. Wie oft dies erfolgen sollte, hängt von der Konfiguration des Clusters ab. klist sollte einen Hinweis darauf geben, wie bald Tickets ablaufen.

Looker-Verbindung zu Ihrer Datenbank erstellen

So erstellen Sie die Verbindung von Looker zu Ihrer Datenbank:

  1. Wählen Sie in Looker im Bereich Verwaltung die Option Verbindungen aus und klicken Sie dann auf Verbindung hinzufügen.
  2. Wählen Sie im Drop-down-Menü Dialekt die Version von Microsoft SQL Server aus.

  3. Geben Sie unter Remote Host und Port den Hostnamen und den Port ein. Der Standardport ist 1433.

    Wenn Sie einen anderen Port als 1433 angeben müssen und in Ihrer Datenbank ein Komma anstelle eines Doppelpunkts verwendet werden muss, können Sie unten in den Verbindungseinstellungen im Feld Zusätzliche JDBC-Parameter den Wert useCommaHostPortSeparator=true hinzufügen. Dadurch können Sie ein Komma für Remote Host:Port verwenden. Beispiel:

    jdbc:sqlserver://hostname,1434

  4. Füllen Sie die restlichen Verbindungsdetails aus. Der Großteil der Einstellungen gilt für die meisten Datenbankdialekte. Weitere Informationen finden Sie auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden.

  5. Klicken Sie auf Testen, um zu prüfen, ob die Verbindung erfolgreich hergestellt wurde. Informationen zur Fehlerbehebung finden Sie auf der Dokumentationsseite Datenbankkonnektivität testen.

  6. Klicken Sie auf Verbinden, um diese Einstellungen zu speichern.

Looker-Verbindung konfigurieren

Folgen Sie der Anleitung auf der Dokumentationsseite Looker mit Ihrer Datenbank verbinden, um eine Verbindung zu Ihrer MSSQL-Datenbank herzustellen. Fügen Sie auf der Seite Verbindungseinstellungen im Abschnitt Zusätzliche JDBC-Parameter Folgendes hinzu:

;integratedSecurity=true;authenticationScheme=JavaKerberos

Einige Netzwerke sind für zwei Kerberos-Realms konfiguriert, eines für Windows Active Directory und das andere für Linux und andere Nicht-Windows-Systeme. Wenn in diesem Fall der Linux-orientierte und der Active Directory-Realm so konfiguriert sind, dass sie sich gegenseitig vertrauen, wird dies als „realmübergreifende Authentifizierung“ bezeichnet.

Wenn in Ihrem Netzwerk eine realmübergreifende Authentifizierung verwendet wird, müssen Sie den Kerberos-Principal für MSSQL Server explizit angeben. Fügen Sie im Feld Additional JDBC parameters (Zusätzliche JDBC-Parameter) Folgendes hinzu:

;serverSpn=service_name/FQDN\:PORT@REALM

Ersetzen Sie FQDN und PORT@REALM durch Ihre Netzwerkinformationen. Beispiel:

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

Außerdem sind auf der Seite Verbindungseinstellungen in Looker Einträge in den Feldern Nutzername und Passwort erforderlich. Für Kerberos sind diese jedoch nicht erforderlich. Geben Sie in diese Felder Dummy-Werte ein.

Testen Sie die Verbindung, um sicherzustellen, dass sie richtig konfiguriert ist.

Funktionsunterstützung

Damit Looker einige Funktionen unterstützen kann, müssen diese auch von Ihrem Datenbankdialekt unterstützt werden.

Microsoft SQL Server 2008 und höher unterstützt ab Looker 25.0 die folgenden Funktionen:

Feature Unterstützt?
Supportstufe
Integration
Looker (Google Cloud Core)
Nein
Symmetrische Summen
Ja
Abgeleitete Tabellen
Ja
Persistente SQL-abgeleitete Tabellen
Ja
Nichtflüchtige native abgeleitete Tabellen
Ja
Stabile Ansichten
Ja
Abfrage beenden
Ja
SQL-basierte Pivot-Tabellen
Ja
Zeitzonen
Nein
SSL
Ja
Zwischensummen
Ja
Zusätzliche JDBC-Parameter
Ja
Groß-/Kleinschreibung beachten
Nein
Standorttyp
Ja
Listentyp
Nein
Perzentil
Nein
Perzentil der unterschiedlichen Werte
Nein
SQL Runner-Prozesse anzeigen
Ja
SQL Runner Describe Table
Ja
SQL Runner-Indexe für Serien
Ja
SQL Runner Select 10
Ja
Anzahl der SQL-Runner
Ja
SQL Explain
Nein
OAuth-Anmeldedaten
Nein
Kontextkommentare
Ja
Verbindungs-Pooling
Nein
HLL-Skizzen
Nein
Aggregatfunktion
Ja
Inkrementelle PDTs
Nein
Millisekunden
Ja
Mikrosekunden
Ja
Materialisierte Ansichten
Nein
Ungefähre Anzahl einzelner Aufrufe
Nein

Microsoft SQL Server 2016 unterstützt ab Looker 25.0 die folgenden Funktionen:

Feature Unterstützt?
Supportstufe
Unterstützt
Looker (Google Cloud Core)
Nein
Symmetrische Summen
Ja
Abgeleitete Tabellen
Ja
Persistente SQL-abgeleitete Tabellen
Ja
Nichtflüchtige native abgeleitete Tabellen
Ja
Stabile Ansichten
Ja
Abfrage beenden
Ja
SQL-basierte Pivot-Tabellen
Ja
Zeitzonen
Ja
SSL
Ja
Zwischensummen
Ja
Zusätzliche JDBC-Parameter
Ja
Groß-/Kleinschreibung beachten
Nein
Standorttyp
Ja
Listentyp
Nein
Perzentil
Nein
Perzentil der unterschiedlichen Werte
Nein
SQL Runner-Prozesse anzeigen
Ja
SQL Runner Describe Table
Ja
SQL Runner-Indexe für Serien
Ja
SQL Runner Select 10
Ja
Anzahl der SQL-Runner
Ja
SQL Explain
Nein
OAuth-Anmeldedaten
Nein
Kontextkommentare
Ja
Verbindungs-Pooling
Nein
HLL-Skizzen
Nein
Aggregatfunktion
Ja
Inkrementelle PDTs
Nein
Millisekunden
Ja
Mikrosekunden
Ja
Materialisierte Ansichten
Nein
Ungefähre Anzahl einzelner Aufrufe
Nein

Microsoft SQL Server 2017 und höher unterstützt ab Looker 25.0 die folgenden Funktionen:

Feature Unterstützt?
Supportstufe
Unterstützt
Looker (Google Cloud Core)
Ja
Symmetrische Summen
Ja
Abgeleitete Tabellen
Ja
Persistente SQL-abgeleitete Tabellen
Ja
Nichtflüchtige native abgeleitete Tabellen
Ja
Stabile Ansichten
Ja
Abfrage beenden
Ja
SQL-basierte Pivot-Tabellen
Ja
Zeitzonen
Ja
SSL
Ja
Zwischensummen
Ja
Zusätzliche JDBC-Parameter
Ja
Groß-/Kleinschreibung beachten
Nein
Standorttyp
Ja
Listentyp
Nein
Perzentil
Nein
Perzentil der unterschiedlichen Werte
Nein
SQL Runner-Prozesse anzeigen
Ja
SQL Runner Describe Table
Ja
SQL Runner-Indexe für Serien
Ja
SQL Runner Select 10
Ja
Anzahl der SQL-Runner
Ja
SQL Explain
Nein
OAuth-Anmeldedaten
Nein
Kontextkommentare
Ja
Verbindungs-Pooling
Nein
HLL-Skizzen
Nein
Aggregatfunktion
Ja
Inkrementelle PDTs
Nein
Millisekunden
Ja
Mikrosekunden
Ja
Materialisierte Ansichten
Nein
Ungefähre Anzahl einzelner Aufrufe
Nein