加密网络流量
Looker 强烈建议对 Looker 应用和数据库之间的网络流量进行加密。请考虑使用启用安全数据库访问文档页面中所述的其中一个选项。
如果您有兴趣使用 SSL 加密,请参阅 Microsoft 文档。
配置服务器身份验证
Looker 要求您在 MSSQL 服务器上使用“SQL Server 身份验证”。如果您的 MSSQL 服务器仅配置为“Windows 集成身份验证”,请将服务器配置更改为“Windows 集成身份验证和 SQL 服务器身份验证”。
如果未正确设置,Looker 将无法连接。此消息会显示在您的 SQL Server 日志消息中,例如“尝试使用 SQL 身份验证登录失败。服务器已配置为仅执行 Windows 身份验证。”
如果需要进行这项更改,可以完成以下步骤:
- 在 SQL Server Management Studio 对象资源管理器中,右键点击该服务器,然后点击属性。
- 在安全页面的服务器身份验证下,选择新的服务器身份验证模式,然后点击确定。
- 在 SQL Server Management Studio 对话框中,点击确定以确认重启 SQL Server 的要求。
- 在 Object Explorer 中,右键点击您的服务器,然后点击 Restart。如果 SQL Server Agent 正在运行,还必须重启它。
如需了解详情,请参阅 Microsoft 文档。
创建 Looker 用户
Looker 使用 SQL Server Authentication 对您的数据库进行身份验证。不支持使用网域帐号。
如需创建帐号,请运行以下命令。将 some_password_here
更改为一个独一无二的安全密码:
CREATE LOGIN looker
WITH PASSWORD = 'some_password_here';
USE MyDatabase;
CREATE USER looker FOR LOGIN looker;
GO
向 Looker 用户授予对表的 SELECT 权限
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
,验证 Kerberos 客户端是否已安装在 Looker 计算机上。如果 Kerberos 客户端不是,请安装 Kerberos 客户端的二进制文件。
例如,在 Redhat/CentOS 中,请运行以下命令:
sudo yum install krb5-workstation krb5-libs krb5-auth-dialog
Java 8
Java 8 必须安装在 Looker 机器以及 Looker 用户的 PATH
和 JAVA_HOME
中。如有必要,请在 looker
目录中本地安装。
Java 加密扩展
从此 Oracle 网站下载并安装适用于 Java 8 的 Java Cryptography Extension (JCE)。
- 找到 Java 安装的
jre/lib/security
目录。 - 从此目录中移除以下 JAR 文件:
local_policy.jar
和US_export_policy.jar
。 - 将这两个文件替换为 JCE Unlimited 强度法律政策文件下载中包含的 JAR 文件。
在安装 JCE 之前,您可以使用 Java 8 之前的 Java 版本,但不建议这样做。
- 找到 Java 安装的
更新
~looker/.bash_profile
中的JAVA_HOME
和PATH
,使其指向正确安装的 Java 和source ~/.bash_profile
或退出并再次登录。使用
java -version
验证 Java 版本。使用
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.conf
和 krb5.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 进行身份验证
用户身份验证
如果
krb5.conf
不在/etc/
中,请使用环境变量KRB5_CONFIG
指示其位置。运行命令
klist
以确保 Kerberos 票据缓存中有有效的票据。如果没有票券,请运行
kinit username@REALM
或kinit username
来创建票券。与 Looker 一起使用的帐号可能属于无头帐号,因此您可以从 Kerberos 获取 keytab 文件,以存储凭据以供长期使用。使用
kinit -k -t looker_user.keytab username@REALM
等命令获取 Kerberos 票据。
自动续订票
设置一个频繁运行的 Cron 作业,以将有效票证保留在 Kerberos 票据缓存中。运行频率取决于集群的配置。klist
应指明票券何时到期。
创建与数据库的 Looker 连接
在 Looker 的管理部分中,选择连接,然后点击添加连接。
填写连接详情。大多数设置是大多数数据库方言通用的设置。如需了解相关信息,请参阅将 Looker 连接到数据库文档页面。以下字段包含适用于 Microsoft SQL Server 的其他信息:
- 方言:选择适当的 Microsoft SQL Server 版本。
Remote Host(远程主机)和 Port(端口):输入主机名和端口(默认端口为 1433)。
如果您需要指定 1433 以外的非默认端口,并且您的数据库需要使用英文逗号(而不是冒号),则可以在连接设置的更下面的其他 JDBC 参数字段中添加
useCommaHostPortSeparator=true
,这将允许您为 Remote Host:Port 使用英文逗号。例如:jdbc:sqlserver://hostname,1434
如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。
要保存这些设置,请点击连接。
配置 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
将 FQDN
和 PORT@REALM
替换为您的网络信息。例如:
;serverSpn=MSSQLSvc/dbserver.internal.example.com:1433@AD.EXAMPLE.COM
此外,Looker 中的连接设置页面需要用户名和密码字段中的条目,但 Kerberos 不需要这些条目。请在这些字段中输入虚拟值。
测试连接,确保已正确配置。
功能支持
为了让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。
从 Looker 23.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 23.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 23.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 增幅 | 否 |
毫秒 | 是 |
微秒 | 是 |
具体化视图 | 否 |
唯一计数 | 否 |