Microsoft SQL Server (MSSQL)

Netzwerk-Datenverkehr verschlüsseln

Es empfiehlt sich, den Netzwerkverkehr zwischen der Looker-Anwendung und Ihrer Datenbank zu verschlüsseln. Sehen Sie sich eine der Optionen an, die auf der Dokumentationsseite Sicheren Datenbankzugriff aktivieren beschrieben werden.

Informationen zur Verwendung der SSL-Verschlüsselung finden Sie in der Microsoft-Dokumentation.

Serverauthentifizierung konfigurieren

Looker erfordert eine „SQL Server-Authentifizierung“ auf Ihrem MSSQL-Server. Wenn Ihr MSSQL-Server nur als "Windows Integrated Authentication" (Integrierte Windows-Authentifizierung) konfiguriert ist, ändern Sie die Serverkonfiguration in "Windows Integrated Authentication and SQL Server Authentication" (Windows-integrierte Authentifizierung und SQL Server-Authentifizierung).

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

Falls diese Änderung erforderlich ist, können Sie die folgenden Schritte ausführen:

  1. Klicken Sie im Objekt-Explorer von SQL Server Management Studio 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 auf OK.
  3. Klicken Sie im Dialogfeld SQL Server Management Studio auf OK, um zu bestätigen, dass SQL Server neu gestartet werden muss.
  4. Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf Ihren Server und klicken Sie dann auf Neu starten. Wenn der SQL Server-Agent ausgeführt wird, muss er ebenfalls neu gestartet werden.

Weitere Informationen hierzu finden Sie in der Dokumentation von Microsoft.

Looker-Nutzer erstellen

Looker authentifiziert sich mithilfe der SQL Server-Authentifizierung bei Ihrer Datenbank. 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

Dem Looker-Benutzer die Berechtigung zum Auswählen von Tabellen gewähren

Looker benötigt die Berechtigung SELECT für jede Tabelle oder jedes Schema, das Sie abfragen möchten. Es gibt mehrere Möglichkeiten, die Berechtigung SELECT zuzuweisen:

  • Führen Sie den folgenden Befehl für jedes Schema aus, um die Berechtigung SELECT für einzelne Schemas zu erteilen:

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • Führen Sie den folgenden Befehl für jede Tabelle aus, um die Berechtigung SELECT für einzelne Tabellen zu erteilen:

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • Ab MSSQL-Version 2012 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
    

Dem Looker-Benutzer die Berechtigung zum Anzeigen und Beenden von Abfragen gewähren

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

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

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

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

Dem Looker-Nutzer die Berechtigung zum Erstellen von Tabellen gewähren

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 den folgenden Befehl aus, um ein Schema zu erstellen, das dem Looker-Benutzer gehört, und dem Looker-Benutzer die erforderlichen Rechte zu gewähren:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Kerberos-Authentifizierung konfigurieren

Wenn Sie die Kerberos-Authentifizierung mit Ihrer MSSQL-Datenbank verwenden, folgen Sie den Schritten zur Konfiguration von Looker für die Verbindung mithilfe von Kerberos, wie im folgenden Abschnitt beschrieben.

Kerberos-Clientkonfiguration einrichten

Zunächst müssen Sie sicherstellen, dass mehrere Softwarekomponenten installiert und mehrere Dateien auf dem Looker-Rechner vorhanden sind.

Kerberos-Client

Prüfen Sie, ob der Kerberos-Client auf der Looker-Maschine installiert ist, indem Sie kinit ausführen. Wenn der Kerberos-Client nicht installiert ist, installieren Sie die Binärdateien des Kerberos-Clients.

Unter Redhat oder CentOS wäre dies zum Beispiel so:

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

Java 8

Java 8 muss auf dem Looker-Computer sowie in den PATH und JAVA_HOME des Looker-Nutzers installiert sein. Falls erforderlich, installieren Sie sie lokal im Verzeichnis looker.

Java Cryptography-Erweiterung

  1. Laden Sie die Java Cryptography Extension (JCE) für Java 8 von dieser 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 Richtliniendateien für die JCE Unlimited notwendig sind.

    Es ist zwar möglich, ältere Java 8-Versionen 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 korrekte 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 Datei gss-jaas.conf mit folgendem Inhalt:

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

Wenn dies für Tests erforderlich ist, 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

Der Server, auf dem Looker ausgeführt wird, sollte ebenfalls eine gültige krb5.conf-Datei haben. Diese Datei befindet sich standardmäßig in /etc/krb5.conf. Wenn sie sich an einem anderen Ort befindet, muss dies in der Umgebung angegeben werden (KRB5_CONFIG in der Shell-Umgebung).

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

lookerstart.cfg

Verweisen Sie auf die Dateien gss-jaas.conf und krb5.conf. Erstellen Sie dazu im Verzeichnis looker (dem Verzeichnis, in dem sich das Startskript looker befindet) eine Datei namens lookerstart.cfg, die die folgenden Zeilen enthält:

  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, muss zusätzlich diese Variable hinzugefügt werden:

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

Fügen Sie zur Fehlerbehebung folgende 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, verwenden Sie die Umgebungsvariable KRB5_CONFIG, um den Speicherort anzugeben.

  2. Prüfen Sie mit dem Befehl klist, ob im Kerberos-Ticket-Cache ein gültiges Ticket vorhanden ist.

  3. Wenn kein Ticket vorhanden ist, führen Sie kinit username@REALM oder kinit username aus, um das Ticket zu erstellen.

  4. Das Konto, das mit Looker verwendet wird, ist wahrscheinlich monitorlos, sodass Sie eine Keytab-Datei von Kerberos abrufen können, 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.

Ticket automatisch verlängern

Richten Sie einen Cronjob ein, der regelmäßig ausgeführt wird, um ein aktives Ticket im Kerberos-Ticket-Cache zu speichern. Wie oft dies ausgeführt werden soll, hängt von der Konfiguration des Clusters ab. klist sollte einen Hinweis darauf geben, wann Tickets ablaufen.

Looker-Verbindung zu Ihrer Datenbank erstellen

Führen Sie die folgenden Schritte aus, um die Verbindung von Looker zu Ihrer Datenbank herzustellen:

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

  3. Geben Sie für Remote-Host und Port den Hostnamen und den Port ein. Der Standardport ist 1433.

    Wenn Sie einen anderen, nicht standardmäßigen Port als 1433 angeben müssen und für Ihre Datenbank ein Komma anstelle eines Doppelpunktes erforderlich ist, können Sie useCommaHostPortSeparator=true im Feld Zusätzliche JDBC-Parameter weiter unten in den Verbindungseinstellungen hinzufügen, damit Sie ein Komma für Remote Host:Port verwenden können. Beispiel:

    jdbc:sqlserver://hostname,1434

  4. Füllen Sie die restlichen Verbindungsdetails aus. Die meisten Einstellungen sind den meisten Datenbankdialekten gemeinsam. 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 Datenbankverbindung 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 unter Zusätzliche JDBC-Parameter Folgendes hinzu:

;integratedSecurity=true;authenticationScheme=JavaKerberos

Einige Netzwerke sind für zwei Kerberos-Bereiche konfiguriert, einer für Windows Active Directory und der andere für Linux und andere Nicht-Windows-Systeme. Wenn der Linux-fokussierte Bereich und der Active Directory-Bereich so konfiguriert sind, dass sie einander vertrauen, wird dies als „bereichsübergreifende Authentifizierung“ bezeichnet.

Wenn Ihr Netzwerk die bereichsübergreifende Authentifizierung verwendet, müssen Sie das Kerberos-Principal für MSSQL Server explizit angeben. Fügen Sie im Feld 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

Zusätzlich sind auf der Seite Verbindungseinstellungen in Looker Einträge in den Feldern Nutzername und Passwort erforderlich. Für Kerberos sind diese Eingaben jedoch nicht erforderlich. Geben Sie in diese Felder Beispielwerte ein.

Testen Sie die Verbindung, um zu prüfen, ob sie richtig konfiguriert ist.

Unterstützte Funktionen

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

Microsoft SQL Server 2008+ unterstützt die folgenden Funktionen ab Looker 24.10:

Feature Unterstützt?
Supportstufe
Integration
Looker (Google Cloud Core)
Nein
Symmetrische Summen
Yes
Abgeleitete Tabellen
Yes
Persistente SQL-Abgeleitete Tabellen
Yes
Nichtflüchtige native abgeleitete Tabellen
Yes
Stabile Ansichten
Yes
Anfrage wird abgebrochen
Yes
SQL-basierte Drehpunkte
Yes
Zeitzonen
Nein
SSL
Yes
Zwischensummen
Yes
Zusätzliche JDBC-Parameter
Yes
Groß-/Kleinschreibung beachten
Nein
Standorttyp
Yes
Listentyp
Nein
Perzentil
Nein
Unterschiedliches Perzentil
Nein
SQL Runner – Prozesse anzeigen
Yes
SQL Runner – Tabelle beschreiben
Yes
SQL Runner – Indexe anzeigen
Yes
SQL Runner – Select 10
Yes
Anzahl der SQL-Runner
Yes
SQL Explain
Nein
OAuth-Anmeldedaten
Nein
Kontextkommentare
Yes
Verbindungs-Pooling
Nein
HLL-Skizzen
Nein
Aggregatfunktion
Yes
Inkrementelle PDTs
Nein
Millisekunden
Yes
Mikrosekunden
Yes
Materialisierte Ansicht
Nein
Ungefähre Anzahl einzelner
Nein

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

Feature Unterstützt?
Supportstufe
Unterstützt
Looker (Google Cloud Core)
Nein
Symmetrische Summen
Yes
Abgeleitete Tabellen
Yes
Persistente SQL-Abgeleitete Tabellen
Yes
Nichtflüchtige native abgeleitete Tabellen
Yes
Stabile Ansichten
Yes
Anfrage wird abgebrochen
Yes
SQL-basierte Drehpunkte
Yes
Zeitzonen
Yes
SSL
Yes
Zwischensummen
Yes
Zusätzliche JDBC-Parameter
Yes
Groß-/Kleinschreibung beachten
Nein
Standorttyp
Yes
Listentyp
Nein
Perzentil
Nein
Unterschiedliches Perzentil
Nein
SQL Runner – Prozesse anzeigen
Yes
SQL Runner – Tabelle beschreiben
Yes
SQL Runner – Indexe anzeigen
Yes
SQL Runner – Select 10
Yes
Anzahl der SQL-Runner
Yes
SQL Explain
Nein
OAuth-Anmeldedaten
Nein
Kontextkommentare
Yes
Verbindungs-Pooling
Nein
HLL-Skizzen
Nein
Aggregatfunktion
Yes
Inkrementelle PDTs
Nein
Millisekunden
Yes
Mikrosekunden
Yes
Materialisierte Ansicht
Nein
Ungefähre Anzahl einzelner
Nein

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

Feature Unterstützt?
Supportstufe
Unterstützt
Looker (Google Cloud Core)
Yes
Symmetrische Summen
Yes
Abgeleitete Tabellen
Yes
Persistente SQL-Abgeleitete Tabellen
Yes
Nichtflüchtige native abgeleitete Tabellen
Yes
Stabile Ansichten
Yes
Anfrage wird abgebrochen
Yes
SQL-basierte Drehpunkte
Yes
Zeitzonen
Yes
SSL
Yes
Zwischensummen
Yes
Zusätzliche JDBC-Parameter
Yes
Groß-/Kleinschreibung beachten
Nein
Standorttyp
Yes
Listentyp
Nein
Perzentil
Nein
Unterschiedliches Perzentil
Nein
SQL Runner – Prozesse anzeigen
Yes
SQL Runner – Tabelle beschreiben
Yes
SQL Runner – Indexe anzeigen
Yes
SQL Runner – Select 10
Yes
Anzahl der SQL-Runner
Yes
SQL Explain
Nein
OAuth-Anmeldedaten
Nein
Kontextkommentare
Yes
Verbindungs-Pooling
Nein
HLL-Skizzen
Nein
Aggregatfunktion
Yes
Inkrementelle PDTs
Nein
Millisekunden
Yes
Mikrosekunden
Yes
Materialisierte Ansicht
Nein
Ungefähre Anzahl einzelner
Nein