Microsoft SQL Server (MSSQL)

Chiffrement du trafic réseau

Il est recommandé de chiffrer le trafic réseau entre l'application Looker et votre base de données. Envisagez l'une des options décrites sur la page de documentation Activer l'accès sécurisé à la base de données.

Si vous souhaitez utiliser le chiffrement SSL, consultez la documentation Microsoft.

Configurer l'authentification du serveur

Looker requiert une "authentification SQL Server" sur votre serveur MSSQL. Si votre serveur MSSQL est configuré en tant qu'"authentification intégrée Windows", modifiez la configuration du serveur en "authentification intégrée Windows et authentification SQL Server".

Si la configuration du serveur n'est pas définie correctement, Looker ne pourra pas se connecter. Ce message apparaîtra dans vos messages de journal SQL Server comme suit: "Échec de la tentative de connexion à l'aide de l'authentification SQL. Le serveur est configuré pour l'authentification Windows uniquement. »

Si cette modification est nécessaire, vous pouvez procéder comme suit:

  1. Dans l'Explorateur d'objets SQL Server Management Studio, faites un clic droit sur le serveur, puis cliquez sur Propriétés.
  2. Sur la page Sécurité, sous Authentification du serveur, sélectionnez le nouveau mode d'authentification du serveur, puis cliquez sur OK.
  3. Dans la boîte de dialogue SQL Server Management Studio, cliquez sur OK pour confirmer que vous devez redémarrer SQL Server.
  4. Dans l'explorateur d'objets, effectuez un clic droit sur votre serveur, puis cliquez sur Redémarrer. Si l'agent SQL Server est en cours d'exécution, il doit également être redémarré.

Pour en savoir plus, consultez la documentation de Microsoft.

Créer un utilisateur Looker

Looker s'authentifie auprès de votre base de données à l'aide de l'authentification SQL Server. Il n'est pas possible d'utiliser un compte de domaine.

Pour créer un compte, exécutez les commandes suivantes. Remplacez some_password_here par un mot de passe unique et sécurisé:

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

Accorder à l'utilisateur Looker l'autorisation de sélectionner (SELECT) à partir des tables

Looker a besoin de l'autorisation SELECT pour chaque table ou schéma que vous souhaitez interroger. Il existe plusieurs façons d'attribuer l'autorisation SELECT:

  • Pour accorder l'autorisation SELECT à des schémas individuels, exécutez la commande suivante pour chaque schéma:

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • Pour accorder l'autorisation SELECT à des tables individuelles, exécutez la commande suivante pour chaque table:

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • Pour MSSQL version 2012 ou ultérieure, vous pouvez également attribuer le rôle db_datareader à l'utilisateur Looker à l'aide des commandes suivantes:

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Accorder à l'utilisateur Looker l'autorisation d'afficher et d'arrêter l'exécution des requêtes

Looker doit être autorisé à détecter et à arrêter les requêtes en cours d'exécution, ce qui nécessite les autorisations suivantes:

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

Pour accorder ces autorisations, exécutez les commandes suivantes:

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

Accorder à l'utilisateur Looker l'autorisation de créer des tables

Pour autoriser l'utilisateur Looker à créer des PDT, exécutez les commandes suivantes:

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

Configuration d'un schéma temporaire

Pour créer un schéma appartenant à l'utilisateur Looker et lui accorder les droits nécessaires, exécutez la commande suivante:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Configuration de l'authentification Kerberos

Si vous utilisez l'authentification Kerberos avec votre base de données MSSQL, suivez les étapes pour configurer Looker afin qu'il se connecte à l'aide de Kerberos, comme décrit dans la section suivante.

Définir la configuration du client Kerberos

Vous devez d'abord vous assurer que plusieurs logiciels sont installés et que plusieurs fichiers sont présents sur la machine Looker.

Client Kerberos

Vérifiez que le client Kerberos est installé sur la machine Looker en exécutant kinit. Si le client Kerberos n'est pas installé, installez ses fichiers binaires.

Par exemple, sur Red Hat ou CentOS, voici ce que cela donne:

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

Java 8

Java 8 doit être installé sur la machine Looker, ainsi que dans les champs PATH et JAVA_HOME de l'utilisateur Looker. Si nécessaire, installez-le localement dans le répertoire looker.

Extension Java Cryptography

  1. Téléchargez et installez l'extension Java Cryptography Extension (JCE) pour Java 8 depuis cette page de téléchargement Oracle.

    • Recherchez le répertoire jre/lib/security pour l'installation de Java.
    • Supprimez les fichiers JAR suivants de ce répertoire: local_policy.jar et US_export_policy.jar.
    • Remplacez ces deux fichiers par les fichiers JAR inclus dans le téléchargement des fichiers JCE de stratégie pour la force illimitée dans une juridiction.

    Il est possible d'utiliser des versions de Java antérieures à Java 8 avec la JCE installée, mais cela n'est pas recommandé.

  2. Mettez à jour JAVA_HOME et PATH dans ~looker/.bash_profile pour qu'ils pointent vers l'installation correcte de Java et source ~/.bash_profile, ou déconnectez-vous et reconnectez-vous.

  3. Vérifiez la version de Java à l'aide de java -version.

  4. Vérifiez la variable d'environnement JAVA_HOME avec echo $JAVA_HOME.

gss-jaas.conf

Dans le répertoire looker, créez un fichier gss-jaas.conf avec le contenu suivant:

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

Si nécessaire, debug=true peut être ajouté à ce fichier comme suit:

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

krb5.conf

Le serveur qui exécute Looker doit également disposer d'un fichier krb5.conf valide. Par défaut, ce fichier se trouve dans /etc/krb5.conf. Si elle se trouve à un autre emplacement, cela doit être indiqué dans l'environnement (KRB5_CONFIG dans l'environnement shell).

Vous devrez peut-être le copier à partir d'une autre machine client Kerberos.

lookerstart.cfg

Pointez vers les fichiers gss-jaas.conf et krb5.conf. Pour ce faire, créez dans le répertoire looker (le répertoire contenant le script de démarrage looker) un fichier nommé lookerstart.cfg et contenant les lignes suivantes:

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

Si le fichier krb5.conf ne se trouve pas à l'emplacement /etc/krb5.conf, vous devez également ajouter cette variable:

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

Pour le débogage, ajoutez les variables suivantes:

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

Redémarrez ensuite Looker avec ./looker restart.

Authentification avec Kerberos

Authentification des utilisateurs

  1. Si krb5.conf ne se trouve pas dans /etc/, utilisez la variable d'environnement KRB5_CONFIG pour indiquer son emplacement.

  2. Exécutez la commande klist pour vous assurer qu'il existe un ticket valide dans le cache des tickets Kerberos.

  3. S'il n'y a pas de ticket, exécutez kinit username@REALM ou kinit username pour le créer.

  4. Le compte utilisé avec Looker sera probablement sans interface graphique. Vous pouvez donc obtenir un fichier keytab auprès de Kerberos afin de stocker l'identifiant pour une utilisation à long terme. Utilisez une commande comme kinit -k -t looker_user.keytab username@REALM pour obtenir le ticket Kerberos.

Renouveler automatiquement le billet

Configurez une job Cron qui s'exécute régulièrement afin de conserver un ticket actif dans le cache des tickets Kerberos. La fréquence de son exécution dépend de la configuration du cluster. klist doit indiquer le délai d'expiration des billets.

Créer la connexion Looker à votre base de données

Pour créer la connexion entre Looker et votre base de données, procédez comme suit:

  1. Dans la section Admin de Looker, sélectionnez Connexions, puis cliquez sur Ajouter une connexion.
  2. Dans le menu déroulant Dialecte, sélectionnez votre version de Microsoft SQL Server.

  3. Dans les champs Hôte distant et Port, saisissez le nom d'hôte et le port (le port par défaut est 1433).

    Si vous devez spécifier un port autre que le port par défaut 1433 et que votre base de données requiert l'utilisation d'une virgule au lieu du signe deux-points, vous pouvez ajouter useCommaHostPortSeparator=true dans le champ Additional JDBC parameters (Paramètres JDBC supplémentaires) plus bas dans les paramètres de connexion, ce qui vous permettra d'utiliser une virgule pour le champ Hôte:Port distant. Exemple :

    jdbc:sqlserver://hostname,1434

  4. Remplissez le reste des informations de connexion. La majorité des paramètres sont communs à la plupart des dialectes de base de données. Pour en savoir plus, consultez la page de documentation Connecter Looker à votre base de données.

  5. Pour vérifier que la connexion est établie, cliquez sur Tester. Consultez la page de documentation Tester la connectivité de la base de données pour obtenir des informations de dépannage.

  6. Pour enregistrer ces paramètres, cliquez sur Connecter.

Configurer la connexion Looker

Suivez les instructions de la page de documentation Connecter Looker à votre base de données pour créer une connexion à votre base de données MSSQL. Dans la section Paramètres JDBC supplémentaires de la page Paramètres de connexion, ajoutez les éléments suivants:

;integratedSecurity=true;authenticationScheme=JavaKerberos

Certains réseaux sont configurés pour deux domaines Kerberos, l'un pour Windows Active Directory, l'autre pour Linux et d'autres systèmes non Windows. Dans ce cas, lorsque le domaine Linux et le domaine Active Directory sont configurés pour se faire confiance, on parle d'"authentification de domaine croisé".

Si votre réseau utilise l'authentification de domaine croisé, vous devez spécifier explicitement le compte principal Kerberos pour MSSQL Server. Dans le champ Paramètres JDBC supplémentaires, ajoutez les éléments suivants:

;serverSpn=service_name/FQDN\:PORT@REALM

Remplacez FQDN et PORT@REALM par les informations de votre réseau. Exemple :

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

De plus, la page Paramètres de connexion de Looker exige que les champs Nom d'utilisateur et Mot de passe contiennent des entrées, ce qui n'est pas obligatoire pour Kerberos. Saisissez des valeurs factices dans ces champs.

Testez la connexion pour vous assurer qu'elle est correctement configurée.

Prise en charge de fonctionnalités

Pour que Looker prenne en charge certaines fonctionnalités, votre dialecte de base de données doit également les prendre en charge.

Microsoft SQL Server 2008 et les versions ultérieures sont compatibles avec les fonctionnalités suivantes à partir de Looker 24.8:

Sélection Compatible ?
Niveau d'assistance
Intégrer
Looker (Google Cloud Core)
Non
Agrégations symétriques
Oui
Tables dérivées
Oui
Tables dérivées SQL persistantes
Oui
Tables dérivées natives persistantes
Oui
Vues stables
Oui
Arrêt de la requête
Oui
Tableaux croisés dynamiques basés sur SQL
Oui
Fuseaux horaires
Non
SSL
Oui
Sous-totaux
Oui
Paramètres JDBC supplémentaires
Oui
Sensible à la casse
Non
Type d'emplacement
Oui
Type de liste
Non
Centile
Non
Centile distinct
Non
Processus d'affichage de l'exécuteur SQL
Oui
Table de description de l'exécuteur SQL
Oui
Afficher les index de l'exécuteur SQL
Oui
SQL Runner Select 10
Oui
Nombre d'exécuteurs SQL
Oui
SQL Explain
Non
Identifiants OAuth
Non
Commentaires sur le contexte
Oui
Pooling de connexions
Non
Croquis HLL
Non
Reconnaissance d'agrégats.
Oui
Augmentation de tables PDT
Non
Millisecondes
Oui
Microsecondes
Oui
Vues matérialisées
Non
Nombre approximatif distinct
Non

Microsoft SQL Server 2016 prend en charge les fonctionnalités suivantes à partir de Looker 24.8:

Sélection Compatible ?
Niveau d'assistance
Compatible
Looker (Google Cloud Core)
Non
Agrégations symétriques
Oui
Tables dérivées
Oui
Tables dérivées SQL persistantes
Oui
Tables dérivées natives persistantes
Oui
Vues stables
Oui
Arrêt de la requête
Oui
Tableaux croisés dynamiques basés sur SQL
Oui
Fuseaux horaires
Oui
SSL
Oui
Sous-totaux
Oui
Paramètres JDBC supplémentaires
Oui
Sensible à la casse
Non
Type d'emplacement
Oui
Type de liste
Non
Centile
Non
Centile distinct
Non
Processus d'affichage de l'exécuteur SQL
Oui
Table de description de l'exécuteur SQL
Oui
Afficher les index de l'exécuteur SQL
Oui
SQL Runner Select 10
Oui
Nombre d'exécuteurs SQL
Oui
SQL Explain
Non
Identifiants OAuth
Non
Commentaires sur le contexte
Oui
Pooling de connexions
Non
Croquis HLL
Non
Reconnaissance d'agrégats.
Oui
Augmentation de tables PDT
Non
Millisecondes
Oui
Microsecondes
Oui
Vues matérialisées
Non
Nombre approximatif distinct
Non

Microsoft SQL Server 2017 et versions ultérieures sont compatibles avec les fonctionnalités suivantes à partir de Looker 24.8:

Sélection Compatible ?
Niveau d'assistance
Compatible
Looker (Google Cloud Core)
Oui
Agrégations symétriques
Oui
Tables dérivées
Oui
Tables dérivées SQL persistantes
Oui
Tables dérivées natives persistantes
Oui
Vues stables
Oui
Arrêt de la requête
Oui
Tableaux croisés dynamiques basés sur SQL
Oui
Fuseaux horaires
Oui
SSL
Oui
Sous-totaux
Oui
Paramètres JDBC supplémentaires
Oui
Sensible à la casse
Non
Type d'emplacement
Oui
Type de liste
Non
Centile
Non
Centile distinct
Non
Processus d'affichage de l'exécuteur SQL
Oui
Table de description de l'exécuteur SQL
Oui
Afficher les index de l'exécuteur SQL
Oui
SQL Runner Select 10
Oui
Nombre d'exécuteurs SQL
Oui
SQL Explain
Non
Identifiants OAuth
Non
Commentaires sur le contexte
Oui
Pooling de connexions
Non
Croquis HLL
Non
Reconnaissance d'agrégats.
Oui
Augmentation de tables PDT
Non
Millisecondes
Oui
Microsecondes
Oui
Vues matérialisées
Non
Nombre approximatif distinct
Non