Microsoft SQL Server (MSSQL)

Encriptar el tráfico de red

Looker recomienda que se encripte el tráfico de red entre la aplicación de Looker y su base de datos. Considera una de las opciones que se describen en la página de documentación Habilita el acceso seguro a la base de datos.

Si te interesa usar la encriptación SSL, consulta la documentación de Microsoft.

Configura la autenticación del servidor

Looker requiere "Autenticación de SQL Server" en su servidor de MSSQL. Si su servidor MSSQL está configurado como "Autenticación integrada de Windows", cambie la configuración del servidor a "Autenticación integrada de Windows" y "Autenticación de SQL Server".

Si no se configura correctamente, Looker no podrá conectarse. Aparecerá en tus mensajes de registro de SQL Server, como los siguientes: "Se produjo un error al intentar acceder con la autenticación de SQL. El servidor está configurado solo para la autenticación de ventanas."

Si se requiere este cambio, puedes completar los siguientes pasos:

  1. En el Explorador de objetos de SQL Server Management Studio, haga clic con el botón derecho en el servidor y, luego, en Propiedades.
  2. En la página Seguridad, en Autenticación del servidor, selecciona el nuevo modo de autenticación del servidor y, luego, haz clic en Aceptar.
  3. En el cuadro de diálogo SQL Server Management Studio, haga clic en Aceptar para aceptar el requisito de reiniciar SQL Server.
  4. En el Explorador de objetos, haga clic con el botón derecho en su servidor y, luego, en Reiniciar. Si el agente de SQL Server se está ejecutando, también debe reiniciarse.

Puedes leer más sobre este tema en la documentación de Microsoft.

Crea un usuario de Looker

Looker se autentica en su base de datos mediante la autenticación de SQL Server. No se admite el uso de una cuenta de dominio.

Para crear una cuenta, ejecute los siguientes comandos. Cambia some_password_here a una contraseña única y segura:

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

Otorga al usuario de Looker permiso para SELECT desde las tablas

Looker requiere el permiso SELECT para cada tabla o esquema que desees consultar. Hay varias formas de asignar el permiso SELECT:

  • A fin de otorgar permiso SELECT a esquemas individuales, ejecuta el siguiente comando para cada esquema:

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • A fin de otorgar permiso SELECT a tablas individuales, ejecuta el siguiente comando para cada tabla:

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • Para la versión 2012 de MSSQL o posterior, también puedes asignar la función db_datareader al usuario de Looker mediante estos comandos:

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Otorga al usuario de Looker permiso para ver y dejar de ejecutar consultas

Looker debe tener autorización para detectar y detener consultas en ejecución, lo que requiere los siguientes permisos:

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

Para otorgar estos permisos, ejecuta los siguientes comandos:

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

Otorga al usuario de Looker permiso para crear tablas

A fin de otorgar al usuario de Looker el permiso para crear PDT, ejecute los siguientes comandos:

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

Configuración del esquema temporal

Para crear un esquema que sea propiedad del usuario de Looker y otorgar los derechos necesarios al usuario de Looker, ejecute este comando:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Agrega la conexión

Usa la interfaz de Looker para configurar la conexión de la base de datos: En la sección Administrador de Looker, selecciona Conexiones y, luego, haz clic en Agregar conexión.

Ingresa la información de la conexión. La mayoría de las opciones de configuración son comunes en la mayoría de los dialectos de la base de datos y se describen en la página de documentación Cómo conectar Looker a tu base de datos. Los campos siguientes tienen información adicional que se aplica a Microsoft SQL Server:

  • Dialecto: Selecciona tu versión adecuada de Microsoft SQL Server.
  • Remote Host:Puerto: ingresa el nombre de host y el puerto (el puerto predeterminado es 1433).

    Si necesitas especificar un puerto no predeterminado distinto de 1433 y tu base de datos requiere el uso de una coma en lugar de dos puntos, puedes agregar useCommaHostPortSeparator=true en el campo Additional Params más abajo en la configuración de conexión, lo que te permitirá usar una coma en el campo Remote Host:Port. Por ejemplo:

    jdbc:sqlserver://hostname,1434

Haz clic en Probar esta configuración para verificar que la conexión a la base de datos sea correcta. Consulta la página de documentación Prueba la conectividad de la base de datos para obtener información sobre la solución de problemas.

Haz clic en Agregar conexión para guardar la conexión.

Configuración de la autenticación de Kerberos

Si usas la autenticación de Kerberos con tu base de datos MSSQL, sigue estos pasos para configurar Looker a fin de que se conecte mediante Kerberos.

Los administradores de instancias alojadas en Looker deben comunicarse con su analista de Looker a fin de obtener asistencia para configurar la autenticación de Kerberos para su base de datos de MSSQL.

Cómo configurar el cliente de Kerberos

Lo primero que debes hacer es garantizar la instalación de varios tipos de software y la presencia de varios archivos en la máquina de Looker.

Cliente de Kerberos

Ejecuta kinit para verificar que el cliente Kerberos esté instalado en la máquina de Looker. Si el cliente Kerberos no, instala los objetos binarios del cliente Kerberos.

Por ejemplo, en Red Hat/CentOS, el comando sería el siguiente:

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

Java 8

Java 8 debe instalarse en la máquina de Looker y en PATH y JAVA_HOME del usuario de Looker. Si es necesario, instálalo localmente en el directorio looker.

Extensión de criptografía de Java

  1. Descarga y, luego, instala Java Cryptography Extension (JCE) para Java 8 desde este sitio de Oracle.

    • Ubica el directorio jre/lib/security para la instalación de Java.
    • Quita los siguientes archivos JAR de este directorio: local_policy.jar y US_export_policy.jar.
    • Reemplaza estos dos archivos por los archivos JAR incluidos en la descarga de los archivos de la Política de jurisdicción ilimitada de JCE.

    Es posible usar versiones de Java anteriores a Java 8 con JCE instalado, pero no se recomienda hacerlo.

  2. Actualiza JAVA_HOME y PATH en ~looker/.bash_profile para que apunten a la instalación correcta de Java y source ~/.bash_profile, o sal de la cuenta y vuelve a acceder.

  3. Verifica la versión de Java con java -version.

  4. Verifica la variable de entorno JAVA_HOME con echo $JAVA_HOME.

gss-jaas.conf

Crea un archivo gss-jaas.conf en el directorio looker con el siguiente contenido:

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

Si es necesario para las pruebas, se puede agregar debug=true a este archivo de la siguiente manera:

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

krb5.conf

El servidor que ejecuta Looker también debe tener un archivo krb5.conf válido. De forma predeterminada, este archivo está en /etc/krb5.conf. Si se encuentra en otra ubicación, se debe indicar en el entorno (KRB5_CONFIG en el entorno de shell).

Es posible que deba copiar esta información de otra máquina cliente de Kerberos.

lookerstart.cfg

Apunta a los archivos gss-jaas.conf y krb5.conf. Para ello, crea un archivo en el directorio looker (el mismo directorio que contiene la secuencia de comandos de inicio looker), llamado lookerstart.cfg, que contiene las siguientes líneas:

  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 el archivo krb5.conf no está en /etc/krb5.conf, también será necesario agregar esta variable:

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

Para la depuración, agrega estas variables:

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

Luego, reinicia Looker con ./looker restart.

Autentica con Kerberos

Autenticación de usuarios

  1. Si krb5.conf no está en /etc/, usa la variable de entorno KRB5_CONFIG para indicar su ubicación.

  2. Ejecuta el comando klist para asegurarte de que haya un ticket válido en la caché de tickets de Kerberos.

  3. Si no hay ningún ticket, ejecuta kinit username@REALM o kinit username para crearlo.

  4. Es probable que la cuenta que se usa con Looker no tenga interfaz gráfica, por lo que puedes obtener un archivo keytab de Kerberos para almacenar la credencial a largo plazo. Usa un comando como kinit -k -t looker_user.keytab username@REALM para obtener el ticket de Kerberos.

Renovación automática del ticket

Configura un trabajo cron que se ejecute de vez en cuando para mantener un ticket activo en la caché de tickets de Kerberos. La frecuencia con la que esto debería ejecutarse depende de la configuración del clúster. klist debería indicar qué tan pronto vencen las entradas.

Configura la conexión de Looker

Sigue las instrucciones en la página de documentación Conecta Looker a tu base de datos para crear una conexión a tu base de datos MSSQL. En la sección Parámetros adicionales de la página Configuración de conexión, agregue lo siguiente:

;integratedSecurity=true;authenticationScheme=JavaKerberos

Algunas redes están configuradas para dos dominios de Kerberos: uno para Windows Active Directory y otro para Linux y otros sistemas que no son Windows. En ese caso, cuando Realm-Focused Realm y Active Directory Realm están configurados para confiar entre sí, se llama "autenticación entre dominios".

Si su red usa autenticación entre dominios, debe especificar de forma explícita el principal de Kerberos para MSSQL Server. En el campo Parámetros adicionales, agrega lo siguiente:

;serverSpn=service_name/FQDN\:PORT@REALM

Reemplaza FQDN y PORT@REALM por tu información de red. Por ejemplo:

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

Además, la página Configuración de conexión de Looker requiere entradas en los campos Nombre de usuario y Contraseña, pero no son un requisito para Kerberos. Ingrese valores ficticios en estos campos.

Prueba la conexión para asegurarte de que esté configurada correctamente.

Compatibilidad de características

Para que Looker admita algunas funciones, el dialecto de la base de datos también debe admitirlas.

En la versión más reciente de Looker, Microsoft SQL Server 2008+ es compatible con las siguientes funciones de Looker:

En la versión más reciente de Looker, Microsoft SQL Server 2016+ es compatible con las siguientes funciones de Looker:

En la versión más reciente de Looker, Microsoft SQL Server 2017+ es compatible con las siguientes funciones de Looker:

Próximos pasos

Después de completar la configuración de la base de datos, puedes conectarte a la base de datos de Looker mediante estas instrucciones.