Microsoft SQL Server (MSSQL)

Encripta el tráfico de red

Se recomienda encriptar el tráfico de red entre la aplicación de Looker y tu 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.

Cómo configurar la autenticación del servidor

Looker requiere la “autenticación de SQL Server” en tu servidor MSSQL. Si tu servidor MSSQL está configurado solo como “Autenticación integrada de Windows”, cambia la configuración del servidor a “Autenticación integrada de Windows y autenticación de SQL Server”.

Si la configuración del servidor no está configurada correctamente, Looker no podrá conectarse. Aparecerá en los mensajes de registro de SQL Server, como "Se produjo un error al intentar acceder con la autenticación de SQL". El servidor está configurado solo para la autenticación de Windows".

Si este cambio es obligatorio, puedes completar los siguientes pasos:

  1. En el Explorador de objetos de SQL Server Management Studio, haz 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 diálogo SQL Server Management Studio, haz clic en Aceptar para confirmar que aceptas el requisito de reiniciar SQL Server.
  4. En el Explorador de objetos, haz clic con el botón derecho en el servidor y, luego, en Reiniciar. Si el agente de SQL Server se está ejecutando, también se debe reiniciar.

Puedes obtener más información al respecto en la documentación de Microsoft.

Crea un usuario de Looker

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

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

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

Otorgar al usuario de Looker permiso para SELECT de tablas

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

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

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

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • Para MSSQL versión 2012 o posterior, como alternativa, puedes asignar al usuario de Looker el rol db_datareader con estos comandos:

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

Otorga al usuario de Looker permiso para ver y detener la ejecución de consultas

Looker debe estar autorizado para detectar y detener las 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 permiso al usuario de Looker para crear tablas

Para otorgarle al usuario de Looker el permiso para crear PDT, ejecuta 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 otorgarle los derechos necesarios, ejecuta este comando:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

Cómo configurar la autenticación de Kerberos

Si usas la autenticación de Kerberos con tu base de datos de MSSQL, sigue los pasos para configurar Looker para que se conecte con Kerberos, como se describe en la siguiente sección.

Cómo configurar el cliente de Kerberos

Primero, debes asegurarte de instalar varios tipos de software y de que haya varios archivos en la máquina de Looker.

Cliente de Kerberos

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

Por ejemplo, en Red Hat o CentOS, sería lo siguiente:

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

Java 8

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

Extensión de criptografía de Java

  1. Descarga e instala la extensión de criptografía de Java (JCE) para Java 8 desde esta página de descarga de Oracle.

    • Busca el directorio jre/lib/security de 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 políticas de jurisdicción de fuerza ilimitada de JCE.

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

  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 tu 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 se encuentra en /etc/krb5.conf. Si está en otra ubicación, se debe indicar en el entorno (KRB5_CONFIG en el entorno de shell).

Es posible que debas copiarlo desde otra máquina cliente de Kerberos.

lookerstart.cfg

Para apuntar a los archivos gss-jaas.conf y krb5.conf, crea un archivo en el directorio looker (el mismo directorio que contiene la secuencia de comandos de inicio looker) llamado lookerstart.cfg que contenga 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 depurar, agrega estas variables:

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

Luego, reinicia Looker con ./looker restart.

Autenticación 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 un ticket, ejecuta kinit username@REALM o kinit username para crearlo.

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

Cómo renovar automáticamente el 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 se debe ejecutar depende de la configuración del clúster. klist debe indicar cuándo vencerán los tickets.

Cómo crear la conexión de Looker a tu base de datos

Sigue estos pasos para crear la conexión de Looker a tu base de datos:

  1. En la sección Administrador de Looker, selecciona Conexiones y, luego, haz clic en Agregar conexión.
  2. En el menú desplegable Dialecto, selecciona tu versión de Microsoft SQL Server.

  3. En Host remoto y Puerto, ingresa el nombre de host y el puerto (el puerto predeterminado es 1433).

    Si necesitas especificar un puerto que no sea el predeterminado (1433) y tu base de datos requiere el uso de una coma en lugar de dos puntos, puedes agregar useCommaHostPortSeparator=true en el campo Parámetros de JDBC adicionales más abajo en la configuración de la conexión, lo que te permitirá usar una coma para Host remoto:Puerto. Por ejemplo:

    jdbc:sqlserver://hostname,1434

  4. Completa el resto de los detalles de la conexión. La mayoría de los parámetros de configuración son comunes en la mayoría de los dialectos de bases de datos. Consulta la página de documentación Cómo conectar Looker a tu base de datos para obtener información.

  5. Para verificar que la conexión se haya establecido correctamente, haz clic en Probar. Consulta la página de documentación Cómo probar la conectividad de la base de datos para obtener información sobre la solución de problemas.

  6. Para guardar esta configuración, haz clic en Conectar.

Cómo configurar la conexión de Looker

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

;integratedSecurity=true;authenticationScheme=JavaKerberos

Algunas redes están configuradas para dos reinos de Kerberos, uno para Windows Active Directory y el otro para Linux y otros sistemas que no son de Windows. En ese caso, cuando el reino centrado en Linux y el reino de Active Directory se configuran para confiar entre sí, se denomina "autenticación entre reinos".

Si tu red usa autenticación entre reinos, debes especificar explícitamente el principal de Kerberos para MSSQL Server. En el campo Parámetros adicionales de JDBC, agrega lo siguiente:

;serverSpn=service_name/FQDN\:PORT@REALM

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

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

Además, la página Configuración de la conexión de Looker requiere entradas en los campos Nombre de usuario y Contraseña, pero no son necesarias para Kerberos. Ingresa 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 tu base de datos también debe admitirlas.

Microsoft SQL Server 2008 y versiones posteriores admiten las siguientes funciones a partir de Looker 25.0:

Función ¿Es compatible?
Nivel de asistencia
Integración
Looker (Google Cloud Core)
No
Agregaciones simétricas
Tablas derivadas
Tablas derivadas de SQL persistentes
Tablas derivadas persistentes nativas
Vistas estables
Eliminación de consultas
Pivotes basados en SQL
Zonas horarias
No
SSL
Subtotales
Parámetros adicionales de JDBC
Distingue mayúsculas de minúsculas
No
Tipo de ubicación
Tipo de lista
No
Percentil
No
Percentil de valores distintos
No
Cómo mostrar procesos en el Ejecutor de SQL
Tabla Describe de SQL Runner
Índices de Show de SQL Runner
SQL Runner Select 10
Cantidad de Ejecutor de SQL
Explicación de SQL
No
Credenciales de OAuth
No
Comentarios contextuales
Agrupación de conexiones
No
Esbozos de HLL
No
Aggregate Awareness
PDT incrementales
No
Milisegundos
Microsegundos
Vistas materializadas
No
Distinción de recuento aproximado
No

Microsoft SQL Server 2016 admite las siguientes funciones a partir de Looker 25.0:

Función ¿Es compatible?
Nivel de asistencia
Admitido
Looker (Google Cloud Core)
No
Agregaciones simétricas
Tablas derivadas
Tablas derivadas de SQL persistentes
Tablas derivadas persistentes nativas
Vistas estables
Eliminación de consultas
Pivotes basados en SQL
Zonas horarias
SSL
Subtotales
Parámetros adicionales de JDBC
Distingue mayúsculas de minúsculas
No
Tipo de ubicación
Tipo de lista
No
Percentil
No
Percentil de valores distintos
No
Cómo mostrar procesos en el Ejecutor de SQL
Tabla Describe de SQL Runner
Índices de Show de SQL Runner
SQL Runner Select 10
Cantidad de Ejecutor de SQL
Explicación de SQL
No
Credenciales de OAuth
No
Comentarios contextuales
Agrupación de conexiones
No
Esbozos de HLL
No
Aggregate Awareness
PDT incrementales
No
Milisegundos
Microsegundos
Vistas materializadas
No
Distinción de recuento aproximado
No

Microsoft SQL Server 2017 y versiones posteriores admiten las siguientes funciones a partir de Looker 25.0:

Función ¿Es compatible?
Nivel de asistencia
Admitido
Looker (Google Cloud Core)
Agregaciones simétricas
Tablas derivadas
Tablas derivadas de SQL persistentes
Tablas derivadas persistentes nativas
Vistas estables
Eliminación de consultas
Pivotes basados en SQL
Zonas horarias
SSL
Subtotales
Parámetros adicionales de JDBC
Distingue mayúsculas de minúsculas
No
Tipo de ubicación
Tipo de lista
No
Percentil
No
Percentil de valores distintos
No
Cómo mostrar procesos en el Ejecutor de SQL
Tabla Describe de SQL Runner
Índices de Show de SQL Runner
SQL Runner Select 10
Cantidad de Ejecutor de SQL
Explicación de SQL
No
Credenciales de OAuth
No
Comentarios contextuales
Agrupación de conexiones
No
Esbozos de HLL
No
Aggregate Awareness
PDT incrementales
No
Milisegundos
Microsegundos
Vistas materializadas
No
Distinción de recuento aproximado
No