使用 SSH 隧道

要实现最强大的 Looker 和数据库之间的加密,您可以创建一个隧道服务器或数据库服务器本身来创建一个 SSH 隧道。

SSH 隧道不适用于缺少单个主机地址的数据库,例如 Google BigQuery 和 Amazon Athena 数据库。BigQuery 和 Athena 用户应直接跳转到数据库配置

第 1 步:选择终止隧道的主机

要为您的数据库设置 SSH 隧道访问权限,第一步是选择将用于终止隧道的主机。隧道可以在数据库主机本身或单独的主机(隧道服务器)上终止。

使用数据库服务器

在不使用隧道服务器的情况下,Looker 通过公共互联网通过 SSH 隧道直接连接到您的数据库服务器。终止数据库具有简单易用的优势。减少主机需求,因此不会增加额外的机器及其相关费用。如果您的数据库服务器所在的互联网未直接访问互联网,则此选项可能不可行。

使用隧道服务器

当您使用隧道服务器时,Looker 会通过受限网络上的单独隧道服务器连接到您的数据库服务器。在单独的服务器上终止隧道的好处是无法将您的数据库服务器从互联网访问。如果隧道服务器被破解,则只需再执行一步即可从数据库服务器中移除。建议您从隧道服务器中移除所有非必要的软件和用户,并使用 IDS 等工具密切监控。

隧道服务器可以是任何具备下列特点的 Unix/Linux 主机:

  1. 可以使用 SSH 从互联网访问
  2. 可以访问数据库

第 2 步:创建 IP 许可名单

第二步是允许网络流量通过 SSH(通常位于 TCP 端口 22)上到达隧道服务器或数据库主机。

允许托管您 Looker 实例的区域中列出的每个 IP 地址的网络流量。默认情况下,这将是美国。

在 Google Cloud 上托管的实例

默认情况下,Looker 托管的实例托管在 Google Cloud 上。对于托管在 Google Cloud 上的实例,请将与您的区域匹配的 IP 地址添加到许可名单。

点击此处获取 Google Cloud 上托管的实例的完整 IP 地址列表

美国南卡罗来纳州蒙克斯科纳 (us-east1)

  • 34.75.58.123
  • 35.196.30.110
  • 35.243.254.166
  • 34.111.239.102
  • 35.237.174.17
  • 34.73.200.235
  • 35.237.168.216

美国北弗吉尼亚州阿什本 (us-east4)

  • 35.221.30.177
  • 35.245.82.73
  • 35.194.74.185
  • 35.245.177.112
  • 34.86.118.239
  • 34.86.52.188
  • 35.221.3.163
  • 35.245.211.109
  • 34.86.136.190
  • 34.86.214.226
  • 35.221.62.218
  • 34.86.34.135
  • 35.236.240.168
  • 34.150.212.9
  • 34.150.174.54
  • 34.85.200.217
  • 34.145.147.146
  • 35.245.20.16
  • 34.145.139.22
  • 34.150.217.20
  • 35.199.35.176
  • 35.245.72.35
  • 35.236.220.225
  • 34.150.180.94
  • 34.85.187.175

美国爱荷华州康瑟尔布拉夫斯 (us-central1)

  • 34.69.207.176
  • 34.70.128.74
  • 35.239.118.197
  • 104.154.21.231
  • 35.192.130.126
  • 35.184.100.51
  • 34.172.2.227
  • 34.71.191.210
  • 34.173.109.50

美国俄勒冈州达尔斯 (us-west1)

  • 34.82.120.25
  • 35.247.5.99
  • 35.197.64.57
  • 35.233.172.23
  • 35.233.249.160
  • 35.247.55.33
  • 35.247.117.0
  • 35.247.61.151
  • 34.82.193.215
  • 35.233.222.226
  • 34.83.94.151
  • 35.203.184.48
  • 34.83.138.105
  • 35.197.35.188
  • 34.127.116.85
  • 34.145.90.83
  • 34.127.41.199
  • 34.82.57.225
  • 35.197.66.244
  • 34.105.127.122
  • 35.233.191.84
  • 34.145.93.130

美国加利福尼亚州洛杉矶 (us-west2)

  • 35.236.22.77
  • 35.235.83.177
  • 35.236.51.71

加拿大魁北克省蒙特利尔 (northamerica-northeast1)

  • 35.234.253.103
  • 35.203.46.255
  • 34.152.60.210
  • 35.234.252.150
  • 35.203.0.6
  • 35.203.96.235

英国伦敦 (europe-west2)

  • 35.189.94.105
  • 35.246.36.67
  • 35.234.140.77
  • 34.142.77.18
  • 34.105.131.133
  • 34.89.54.84
  • 34.89.124.139
  • 34.89.25.5
  • 34.105.209.44
  • 34.105.181.133
  • 35.242.138.133
  • 34.105.219.154
  • 34.89.127.51
  • 35.246.10.206
  • 35.189.111.173
  • 35.197.222.220
  • 34.105.198.151
  • 35.246.117.58
  • 34.142.123.96
  • 34.105.176.209
  • 35.189.95.167
  • 34.89.55.2
  • 35.197.199.20
  • 35.242.174.158
  • 34.89.3.120

德国法兰克福 (europe-west3)

  • 34.159.224.187
  • 34.159.10.59
  • 34.159.72.77
  • 35.242.243.255
  • 34.159.247.211
  • 35.198.128.126
  • 34.89.159.138
  • 34.159.253.103
  • 34.159.244.43

印度孟买 (asia-south1)

  • 34.93.221.137
  • 35.244.24.198
  • 35.244.52.179

荷兰埃姆斯哈文 (europe-west4)

  • 35.204.118.28
  • 35.204.216.7
  • 34.90.52.191
  • 35.204.176.29
  • 34.90.199.95
  • 34.90.145.226

台湾彰化 (asia-east1)

  • 104.199.206.209
  • 34.80.173.212
  • 35.185.137.114

日本东京 (asia-northeast1)

  • 34.85.3.198
  • 34.146.68.203
  • 34.84.4.218
  • 35.200.82.72
  • 34.84.163.27
  • 34.85.31.212

新加坡裕廊西 (asia-southeast1)

  • 34.143.210.116
  • 34.143.132.206
  • 34.87.134.202
  • 35.197.143.5
  • 35.247.186.68
  • 34.142.215.26
  • 35.198.246.81

印度尼西亚雅加达 (asia-southeast2)

  • 34.101.158.88
  • 34.101.157.238
  • 34.101.184.52

澳大利亚悉尼 (australia-southeast1)

  • 34.87.195.36
  • 34.116.85.140
  • 34.151.78.48
  • 35.189.13.29
  • 35.189.9.81
  • 35.244.68.217

巴西奥萨斯库(圣保罗)(southamerica-east1)

  • 34.151.199.201
  • 35.199.122.19
  • 34.95.180.122
  • 34.95.168.38
  • 34.151.235.241
  • 34.95.181.19

托管在 Amazon Elastic Kubernetes Service (Amazon EKS) 上的实例

对于托管在 Amazon EKS 上的实例,请将与您的区域匹配的 IP 地址添加到许可名单。

点击此处获取托管在 Amazon EKS 上的实例的完整 IP 地址列表

美国东部(北弗吉尼亚 (us-east-1)

  • 18.210.137.130
  • 54.204.171.253
  • 50.17.192.87
  • 54.92.246.223
  • 75.101.147.97
  • 18.235.225.163
  • 52.55.239.166
  • 52.86.109.68
  • 54.159.176.199
  • 3.230.52.220
  • 54.211.95.150
  • 52.55.10.236
  • 184.73.10.85
  • 52.203.92.114
  • 52.3.47.189
  • 52.7.255.54
  • 54.196.92.5
  • 52.204.125.244
  • 34.200.64.243
  • 18.206.32.254
  • 54.157.231.76
  • 54.162.175.244
  • 54.80.5.17
  • 35.168.173.238
  • 52.44.187.22
  • 18.213.96.40
  • 23.22.133.206
  • 34.239.90.169
  • 34.236.92.87
  • 3.220.81.241
  • 54.197.142.238
  • 34.200.121.56
  • 3.83.72.41
  • 54.159.42.144
  • 3.229.81.101
  • 34.225.255.220
  • 54.162.193.165
  • 34.235.77.117
  • 3.233.169.63
  • 54.87.86.113
  • 18.208.86.29
  • 52.44.90.201

美国东部 (俄亥俄州) (us-east-2)

  • 3.135.171.29
  • 18.188.208.231
  • 3.143.85.223

美国西部(俄勒冈)(us-west-2)

  • 44.237.129.32
  • 54.184.191.250
  • 35.81.99.30

加拿大(中部)(ca-central-1)

  • 52.60.157.61
  • 35.182.169.25
  • 52.60.59.128
  • 35.182.207.128
  • 15.222.172.64
  • 3.97.27.51
  • 35.183.191.133
  • 15.222.86.123
  • 52.60.52.14

欧洲(爱尔兰)(eu-west-1)

  • 54.74.243.246
  • 54.195.216.95
  • 54.170.208.67
  • 52.49.220.103
  • 52.31.69.117
  • 34.243.112.76
  • 52.210.85.110
  • 52.30.198.163
  • 34.249.159.112
  • 52.19.248.176
  • 54.220.245.171
  • 54.247.22.227
  • 176.34.116.197
  • 54.155.205.159
  • 52.16.81.139
  • 54.75.200.188
  • 34.248.52.4
  • 54.228.110.32
  • 34.248.104.98
  • 54.216.117.225
  • 52.50.172.40

欧洲(法兰克福)(eu-central-1)

  • 18.157.231.108
  • 18.157.207.33
  • 18.157.64.198
  • 18.198.116.133
  • 3.121.148.178
  • 3.126.54.154

亚太地区(东京)(ap-northeast-1)

  • 54.250.91.57
  • 13.112.30.110
  • 54.92.76.241

亚太地区(悉尼)(ap-southeast-2)

  • 13.238.132.174
  • 3.105.238.71
  • 3.105.113.36

南美洲(圣保罗)(sa-east-1)

  • 54.232.58.181
  • 54.232.58.98
  • 177.71.134.208

在 Microsoft Azure 上托管的实例

对于在 Azure 上托管的实例,请将与您的区域匹配的 IP 地址添加到许可名单。

点击此处获取 Microsoft Azure 上托管的实例的完整 IP 地址列表

美国弗吉尼亚 (us-east2)

  • 52.147.190.201

旧式托管

这些 IP 地址适用于在 AWS 上托管且在 2020 年 7 月 7 日之前创建的所有实例。

点击此处可查看旧版托管的 IP 地址的完整列表

美国(AWS 默认)

  • 54.208.10.167
  • 54.209.116.191
  • 52.1.5.228
  • 52.1.157.156
  • 54.83.113.5

加拿大

  • 99.79.117.127
  • 35.182.216.56

亚洲

  • 52.68.85.40
  • 52.68.108.109

爱尔兰

  • 52.16.163.151
  • 52.16.174.170

德国

  • 18.196.243.94
  • 18.184.246.171

澳大利亚

  • 52.65.128.170
  • 52.65.124.87

南美洲

  • 52.67.8.103
  • 54.233.74.59

第 3 步:SSH 隧道

如果启用了 SSH 服务器标签页,请按照本页面上的说明将 SSH 服务器配置信息添加到 Looker 中。

如果实例部署在 Kubernetes 基础架构上,且已启用将 SSH 服务器配置信息添加到 Looker 实例的功能,则 SSH 服务器选项可用。如果您的 Looker 实例未启用此选项,而您希望启用它,请与 Google Cloud 销售专员联系或打开支持请求

在 Looker 管理部分的连接页面中,选择 SSH 服务器标签页。

然后选择添加服务器。Looker 会显示添加 SSH 服务器页面:

  1. 输入 SSH 服务器配置的名称。
  2. 选择 Download Key,将公钥下载到文本文件。请务必保存此文件,因为您稍后需要将公钥添加到 SSH 服务器的授权密钥文件中。
  3. 输入 Looker 将用于连接到 SSH 服务器的用户名。
  4. 输入 SSH 服务器 IP 地址或主机名。
  5. 输入用于连接到 SSH 服务器的端口号。

第 4 步:准备隧道主机

将公钥添加到 authorized_keys 文件

要对 SSH 隧道会话进行身份验证,Looker 需要使用唯一的公钥(Looker 不支持使用密码登录)。如果您的实例启用了 SSH 服务器标签页,您可以在输入 SSH 配置信息时选择下载密钥按钮,从而将公钥下载到文本文件。如果您是在 Looker 分析师的帮助下配置 SSH 隧道,您的 Looker 分析师将为您提供一个唯一的公钥。

您需要创建主机 looker 并将 Looker 公钥添加到 Looker .ssh/authorized_keys 文件中,从而准备好主机(数据库服务器或隧道服务器)。具体方法如下:

  1. 在命令行中,创建一个名为 looker 的组:

    sudo groupadd looker
    
  2. 创建用户 looker 及其主目录:

    sudo useradd -m  -g looker  looker
    
  3. 切换到 looker 用户:

    sudo su - looker
    
  4. 创建 .ssh 目录:

    mkdir ~/.ssh
    
  5. 设置权限:

    chmod 700 ~/.ssh
    
  6. 切换到 .ssh 目录:

    cd ~/.ssh
    
  7. 创建 authorized_keys 文件:

    touch authorized_keys
    
  8. 设置权限:

    chmod 600 authorized_keys
    

使用您喜爱的文本编辑器,将 Looker 分析师提供的 SSH 密钥添加到 authorized_keys 文件中。密钥必须始终位于一行中。在某些情况下,当您从电子邮件中检索该密钥时,您的电子邮件客户端将插入换行符。如果不移除,则无法建立 SSH 隧道。

ssh-rsa 添加到您的 sshd_config 文件中

OpenSSH 默认已停用 ssh-rsa,这可能会在设置 SSH 隧道时导致错误。如需解决此问题,请将 ssh-rsa 添加到您服务器接受的算法列表中。具体方法如下:

  1. 修改 sshd_config 文件。通常可以在以下位置找到它:~/etc/ssh/sshd_config
  2. 请将以下内容添加到 sshd_config 文件:

       HostKeyAlgorithms +ssh-rsa
       PubKeyAcceptedAlgorithms +ssh-rsa
    

隧道安全注意事项

当 SSH 隧道在数据库服务器上终止时,Looker 的连接看起来就像是数据库服务器上的本地连接。因此,它打破了数据库平台(如 MySQL)内置的基于连接的安全机制。例如,向本地用户授予没有密码的本地访问权限的情况很常见!

默认情况下,打开 SSH 访问时也会允许转发任何端口,并绕过 Looker 和终止 SSH 隧道的数据库主机之间的任何防火墙。这种安全风险可能会被视为不可接受。您可以通过正确配置 Looker 公钥的 .ssh/authorized_keys 条目来控制此端口转发以及登录隧道服务器的功能。

例如,以下文本可以附加到 authorized_keys 文件中的 Looker SSH 密钥前面。请注意,此文本必须针对您的环境进行自定义。

no-pty,no-X11-forwarding,permitopen="localhost:3306",permitopen="localhost:3307",
command="/bin/echo Login Not Permitted"

如需查看示例和完整详情,请参阅 man sshman authorized_keys Linux 文档。

后续步骤

如果您的实例启用了 SSH 服务器标签页,请返回到添加 SSH 服务器页面,然后选择测试和请求指纹以验证你与 SSH 服务器的连接。Looker 会显示一个屏幕,其中显示了新的 SSH 配置和选项,供您下载或查看公钥以及查看 SSH 服务器配置的唯一指纹。

然后,在数据库连接设置页面上执行以下操作:

  1. SSH 服务器切换开关上的滑块滑至开启位置,然后从下拉列表中选择您的 SSH 服务器配置。
  2. 远程主机端口字段中,输入数据库的 IP 地址或主机名和端口号。

使用 SSH 隧道的数据库连接无法向远程主机端口字段应用用户属性

如果您是在 Looker 分析师的帮助下配置 SSH 隧道,请通知您的 Looker 分析师您已准备好测试 SSH 隧道。他们确认隧道建立之后,会向您提供 SSH 隧道的 Looker 端的端口号。

然后,在数据库连接设置页面上执行以下操作:

  1. Remote Host(远程主机)字段中输入 localhost
  2. 端口字段中,输入 Looker 分析师提供的 SSH 隧道的 Looker 端的端口号。
  3. 关闭数据库连接页面上的验证 SSL 证书

    从 Looker 设置指向数据库的 SSH 隧道时,不支持 SSL 证书。相反,您在第 4 步中添加的 SSH 密钥会在 Looker 和数据库之间提供握手安全性。