Microsoft SQL Server (MSSQL)

Chiffrement du trafic réseau

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

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

Configurer l'authentification du serveur

Looker requiert l'authentification "SQL Server" sur votre serveur MSSQL. Si votre serveur MSSQL n'est configuré qu'en tant qu'authentification intégrée Windows ("Windows Integrated Authentication"), définissez la configuration du serveur sur "Windows Integrated Authentication and SQL Server Authentication" (Authentification intégrée Windows et authentification SQL Server).

Si ce n'est pas le cas, Looker ne pourra pas se connecter. Ce message apparaîtra dans vos messages de journal SQL Server comme : "Une tentative de connexion à l'aide de l'authentification SQL a échoué. Le serveur est configuré pour l'authentification Windows uniquement."

Si cette modification est nécessaire, procédez comme suit:

  1. Dans l'Explorateur d'objets de SQL Server Management Studio, effectuez 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 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 Microsoft.

Créer un utilisateur Looker

Looker s'authentifie auprès de votre base de données à l'aide de l'authentification SQL Server. L'utilisation d'un compte de domaine n'est pas acceptée.

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 des tables

Looker requiert l'autorisation SELECT pour chaque table ou schéma que vous souhaitez interroger. Il existe plusieurs façons d'accorder 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 à l'utilisateur Looker le rôle db_datareader à 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 de 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;

Ajout de la connexion

Utilisez l'interface Looker pour configurer la connexion à la base de données: dans la section Admin de Looker, sélectionnez Connexions, puis cliquez sur Ajouter une connexion.

Saisissez les informations de connexion. La plupart des paramètres sont communs à la plupart des dialectes de base de données. Ils sont décrits sur la page de documentation Connecter Looker à votre base de données. Les champs suivants contiennent des informations supplémentaires qui s'appliquent à Microsoft SQL Server:

  • Dialect : sélectionnez la version appropriée de Microsoft SQL Server.
  • Remote Host: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 1433 et que votre base de données nécessite l'utilisation d'une virgule au lieu de deux-points, vous pouvez ajouter useCommaHostPortSeparator=true dans le champ Additional Params (Paramètres supplémentaires), en dessous des paramètres de connexion, ce qui vous permettra d'utiliser une virgule dans le champ Remote Host:Port. Exemple :

    jdbc:sqlserver://hostname,1434

Cliquez sur Tester ces paramètres pour vérifier que la connexion à votre base de données a bien été établie. Consultez la page de documentation Test de la connectivité à la base de données pour obtenir des informations de dépannage.

Cliquez sur Add Connection (Ajouter une connexion) pour enregistrer la connexion.

Configurer l'authentification Kerberos

Si vous utilisez l'authentification Kerberos avec votre base de données MSSQL, procédez comme suit pour configurer Looker afin qu'il se connecte à l'aide de Kerberos.

Les administrateurs d'instances hébergées par Looker doivent contacter leur analyste Looker pour obtenir de l'aide sur la configuration de l'authentification Kerberos pour votre base de données MSSQL.

Définir la configuration du client Kerberos

La première chose à faire est de s'assurer de l'installation de plusieurs logiciels et de la présence de plusieurs fichiers 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 les binaires du client Kerberos.

Par exemple, sur Redhat/CentOS:

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

Java 8

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

Extension de cryptographie Java

  1. Téléchargez et installez l'extension Java Cryptography Extension (JCE) pour Java 8 depuis ce site 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 de règles relatives à la juridiction JCE Unlimited.

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

  2. Mettez à jour JAVA_HOME et PATH dans ~looker/.bash_profile pour renvoyer vers la bonne installation de Java et source ~/.bash_profile, ou déconnectez-vous, puis reconnectez-vous.

  3. Vérifiez la version de Java avec java -version.

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

gss-jaas.conf

Créez un fichier gss-jaas.conf dans le répertoire looker avec le contenu suivant:

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

Si nécessaire pour les tests, 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 exécutant Looker doit également disposer d'un fichier krb5.conf valide. Par défaut, ce fichier se trouve dans /etc/krb5.conf. S'il se trouve à un autre emplacement, cela doit être indiqué dans l'environnement (KRB5_CONFIG dans l'environnement shell).

Vous devrez peut-être le copier depuis une autre machine cliente Kerberos.

lookerstart.cfg

Pointez sur les fichiers gss-jaas.conf et krb5.conf en créant un fichier nommé lookerstart.cfg dans le répertoire looker (le même répertoire qui contient le script de démarrage looker) 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

Ensuite, redémarrez Looker avec ./looker restart.

S'authentifier avec Kerberos

Authentification des utilisateurs

  1. Si krb5.conf n'est 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 de tickets Kerberos.

  3. En l'absence de ticket, exécutez kinit username@REALM ou kinit username pour créer le ticket.

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

Renouvellement automatique de la demande d'assistance

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

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 Additional Params (Paramètres supplémentaires) de la page Connection Settings (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 autres que Windows. Dans ce cas, lorsque le domaine Linux et le domaine Active Directory sont configurés pour se faire confiance, ils s'appellent "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 Additional Params (Paramètres 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

En outre, la page Paramètres de connexion de Looker nécessite des entrées dans les champs Nom d'utilisateur et Mot de passe, mais celles-ci ne sont pas obligatoires 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.

Dans la dernière version de Looker, Microsoft SQL Server 2008+ est compatible avec les fonctionnalités Looker suivantes:

Dans la dernière version de Looker, Microsoft SQL Server 2016+ est compatible avec les fonctionnalités Looker suivantes:

Dans la dernière version de Looker, Microsoft SQL Server 2017+ est compatible avec les fonctionnalités Looker suivantes:

Étapes suivantes

Une fois la configuration de la base de données terminée, vous pouvez vous connecter à la base de données à partir de Looker en suivant ces instructions.