Microsoft SQL Server (MSSQL)

加密网络流量

最佳实践是对 Looker 应用和数据库之间的网络流量进行加密。考虑启用安全的数据库访问文档页面中介绍的某个选项。

如果您对使用 SSL 加密感兴趣,请参阅 Microsoft 文档

配置服务器身份验证

Looker 要求 MSSQL Server 上有“SQL Server 身份验证”。如果您的 MSSQL Server 仅配置为“Windows 集成身份验证”,请将服务器配置更改为“Windows 集成身份验证和 SQL Server 身份验证”。

如果服务器配置未正确设置,Looker 将无法连接。这将出现在您的 SQL Server 日志消息中,如“An 尝试使用 SQL 身份验证登录失败。服务器配置为仅针对 Windows 身份验证。”

如果需要此更改,您可以完成以下步骤:

  1. SQL Server Management Studio 对象资源管理器中,右键点击服务器,然后点击属性
  2. 安全页面的服务器身份验证下,选择新的服务器身份验证模式,然后点击确定
  3. SQL Server Management Studio 对话框中,点击确定,以确认重启 SQL Server 的要求。
  4. Object Explorer 中,右键点击您的服务器,然后点击 Restart。如果 SQL Server Agent 正在运行,则必须重新启动。

如需了解详情,请参阅 Microsoft 文档

创建 Looker 用户

Looker 使用 SQL Server 身份验证对您的数据库进行身份验证。不支持使用网域账号。

如需创建帐号,请运行以下命令。将 some_password_here 更改为一个具有唯一性的安全密码:

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

向 Looker 用户授予“从表中选择”权限

Looker 需要您要查询的每个表或架构的 SELECT 权限。您可以通过多种方式分配 SELECT 权限:

  • 如需向各个架构授予 SELECT 权限,请为每个架构运行以下命令:

    GRANT SELECT on SCHEMA :: 'schema_name' to looker;
    
  • 如需向各个表授予 SELECT 权限,请为每个表运行以下命令:

    GRANT SELECT on OBJECT :: 'schema_name'.'table_name' to looker;
    
  • 对于 MSSQL 2012 或更高版本,您也可以使用以下命令为 Looker 用户分配 db_datareader 角色:

    USE MyDatabase;
    ALTER ROLE db_datareader ADD MEMBER looker;
    GO
    

向 Looker 用户授予查看和停止运行查询的权限

Looker 必须获得授权才能检测和停止运行查询,这需要以下权限:

  • ALTER ANY CONNECTION
  • VIEW SERVER STATE

如需授予这些权限,请运行以下命令:

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

向 Looker 用户授予创建表的权限

如需授予 Looker 用户创建 PDT 的权限,请运行以下命令:

USE MyDatabase;
GRANT CREATE TABLE to looker;
GO

临时架构设置

如需创建 Looker 用户拥有的架构,并向 Looker 用户授予必要的权限,请运行以下命令:

CREATE SCHEMA looker_scratch AUTHORIZATION looker;

配置 Kerberos 身份验证

如果您对 MSSQL 数据库使用 Kerberos 身份验证,请按照下一部分中的说明将 Looker 配置为使用 Kerberos 进行连接。

设置 Kerberos 客户端配置

首先,您需要确保已在 Looker 计算机上安装多款软件并存在多个文件。

Kerberos 客户端

运行 kinit,验证 Looker 机器上是否安装了 Kerberos 客户端。如果未安装 Kerberos 客户端,请安装 Kerberos 客户端的二进制文件。

例如,在 Redhat 或 CentOS 上,代码如下所示:

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

Java 8

Java 8 必须安装在 Looker 机器上,以及 Looker 用户的 PATHJAVA_HOME 中。如有必要,请将其安装在本地 looker 目录中。

Java 加密扩展

  1. 从此 Oracle 下载页面下载并安装 Java 8 版 Java Cryptography Extension (JCE)。

    • 找到用于安装 Java 的 jre/lib/security 目录。
    • 从此目录中移除以下 JAR 文件:local_policy.jarUS_export_policy.jar
    • 请将这两个文件替换为 JCE Unlimited Strength Jurisdiction Policy 文件下载中包含的 JAR 文件。

    可以使用安装了 JCE 的 Java 8 之前的 Java 版本,但不建议这样做。

  2. 更新 ~looker/.bash_profile 中的 JAVA_HOMEPATH 以指向正确安装的 Java 和 source ~/.bash_profile,或者退出并重新登录。

  3. 使用 java -version 验证 Java 版本。

  4. 使用 echo $JAVA_HOME 验证 JAVA_HOME 环境变量。

gss-jaas.conf

looker 目录中创建一个包含以下内容的 gss-jaas.conf 文件:

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

如果需要进行测试,可以按如下方式将 debug=true 添加到此文件中:

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

krb5.conf

运行 Looker 的服务器也应该具有有效的 krb5.conf 文件。默认情况下,此文件位于 /etc/krb5.conf 中。如果它位于其他位置,则必须在环境中(在 shell 环境中为 KRB5_CONFIG)指明。

您可能需要从其他 Kerberos 客户端计算机复制此密钥。

lookerstart.cfg

looker 目录(包含 looker 启动脚本的同一目录)中创建一个名为 lookerstart.cfg 的文件,以指向 gss-jaas.confkrb5.conf 文件,该文件包含以下代码行:

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

如果 krb5.conf 文件不在 /etc/krb5.conf 下,则还需要添加此变量:

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

对于调试,请添加以下变量:

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

然后使用 ./looker restart 重启 Looker。

通过 Kerberos 进行身份验证

用户身份验证

  1. 如果 krb5.conf 不在 /etc/ 中,则使用环境变量 KRB5_CONFIG 指示其位置。

  2. 运行命令 klist,确保 Kerberos 票据缓存中有有效的票据。

  3. 如果没有工单,请运行 kinit username@REALMkinit username 以创建工单。

  4. 用于 Looker 的账号可能是无头账号,因此您可以获取 Kerberos 提供的 keytab 文件,以便存储凭据以供长期使用。使用 kinit -k -t looker_user.keytab username@REALM 等命令获取 Kerberos 票据。

自动续订门票

设置一个频繁运行的 Cron 作业,以在 Kerberos 票据缓存中保留有效的票据。此操作的运行频率取决于集群的配置。klist 应指示票券的到期时间。

创建 Looker 与数据库的连接

如需创建从 Looker 到数据库的连接,请按以下步骤操作:

  1. 在 Looker 的管理部分中,选择连接,然后点击添加连接
  2. 方言下拉菜单中,选择您的 Microsoft SQL Server 版本。

  3. Remote Host(远程主机)和 Port(端口)部分,输入主机名和端口(默认端口为 1433)。

    如果您需要指定 1433 以外的非默认端口,并且您的数据库需要使用英文逗号而非英文冒号,您可以在连接设置中的其他 JDBC 参数字段中添加 useCommaHostPortSeparator=true,这样您就能使用英文逗号来表示“远程主机:端口”。例如:

    jdbc:sqlserver://hostname,1434

  4. 填写其余的连接详情。大多数设置对大多数数据库方言是通用的。如需了解详情,请参阅将 Looker 连接到您的数据库文档页面。

  5. 如需验证连接是否成功,请点击 Test。如需了解问题排查信息,请参阅测试数据库连接文档页面。

  6. 如需保存这些设置,请点击连接

配置 Looker 连接

按照将 Looker 连接到您的数据库文档页面中的说明,创建与 MSSQL 数据库的连接。在连接设置页面的其他 JDBC 参数部分中,添加以下内容:

;integratedSecurity=true;authenticationScheme=JavaKerberos

某些网络配置为两个 Kerberos 领域,一个用于 Windows Active Directory,另一个用于 Linux 和其他非 Windows 系统。在这种情况下,如果将基于 Linux 的 Realm 和 Active Directory Realm 配置为相互信任,这就是所谓的“跨域身份验证”。

如果您的网络使用跨域身份验证,则必须为 MSSQL Server 明确指定 Kerberos 正文。在其他 JDBC 参数字段中,添加以下内容:

;serverSpn=service_name/FQDN\:PORT@REALM

FQDNPORT@REALM 替换为您的网络信息。例如:

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

此外,Looker 中的连接设置页面要求在用户名密码字段中填写条目,但对于 Kerberos 而言并不是必需的。请在这些字段中输入虚拟值。

测试连接,确保其配置正确。

功能支持

为了让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。

从 Looker 24.8 开始,Microsoft SQL Server 2008+ 支持以下功能:

特征 是否支持?
支持级别
集成
Looker (Google Cloud Core)
对称聚合
派生表
永久性 SQL 派生表
永久性原生派生表
稳定版视图
查询终止
基于 SQL 的数据透视
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
列表类型
百分位
非重复百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner 优选 10
SQL 运行程序数量
SQL 说明
OAuth 凭据
上下文注释
连接池
HLL 素描
总体认知度
递增 PDT
毫秒
微秒
具体化视图
近似计数不重复

从 Looker 24.8 开始,Microsoft SQL Server 2016 支持以下功能:

特征 是否支持?
支持级别
受支持
Looker (Google Cloud Core)
对称聚合
派生表
永久性 SQL 派生表
永久性原生派生表
稳定版视图
查询终止
基于 SQL 的数据透视
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
列表类型
百分位
非重复百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner 优选 10
SQL 运行程序数量
SQL 说明
OAuth 凭据
上下文注释
连接池
HLL 素描
总体认知度
递增 PDT
毫秒
微秒
具体化视图
近似计数不重复

从 Looker 24.8 开始,Microsoft SQL Server 2017+ 支持以下功能:

特征 是否支持?
支持级别
受支持
Looker (Google Cloud Core)
对称聚合
派生表
永久性 SQL 派生表
永久性原生派生表
稳定版视图
查询终止
基于 SQL 的数据透视
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
列表类型
百分位
非重复百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner 优选 10
SQL 运行程序数量
SQL 说明
OAuth 凭据
上下文注释
连接池
HLL 素描
总体认知度
递增 PDT
毫秒
微秒
具体化视图
近似计数不重复