使用 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.23.50.137
  • 35.211.210.64
  • 35.211.95.55
  • 35.185.59.100
  • 34.111.239.102
  • 35.237.174.17
  • 34.73.200.235
  • 35.237.168.216
  • 34.75.58.123
  • 35.196.30.110
  • 35.243.254.166

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

  • 34.150.212.9
  • 34.150.174.54
  • 34.85.200.217
  • 35.221.30.177
  • 35.245.82.73
  • 34.86.214.226
  • 35.245.177.112
  • 35.245.211.109
  • 34.86.118.239
  • 34.86.136.190
  • 35.194.74.185
  • 34.86.52.188
  • 35.221.3.163
  • 35.221.62.218
  • 34.86.34.135
  • 35.236.240.168
  • 35.199.50.237
  • 34.145.252.255
  • 35.245.141.42
  • 35.245.20.16
  • 34.145.147.146
  • 34.145.139.22
  • 34.150.217.20
  • 35.199.35.176
  • 35.245.72.35
  • 34.85.187.175
  • 35.236.220.225
  • 34.150.180.94
  • 4.85.195.168
  • 34.86.126.124
  • 34.145.200.8
  • 34.85.142.95
  • 34.150.217.96
  • 35.245.140.36
  • 34.86.124.234
  • 35.194.69.239
  • 35.230.163.26
  • 35.186.187.48
  • 34.86.154.134
  • 34.85.128.250
  • 35.245.212.212
  • 35.245.74.75
  • 34.86.246.187
  • 34.86.241.216
  • 34.85.222.9
  • 34.86.171.127
  • 34.145.204.106
  • 34.150.252.169
  • 35.245.9.213

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

  • 104.154.21.231
  • 35.192.130.126
  • 35.184.100.51
  • 34.70.128.74
  • 34.69.207.176
  • 35.239.118.197
  • 34.172.2.227
  • 34.71.191.210
  • 34.173.109.50
  • 35.225.65.3
  • 34.170.192.190
  • 34.27.97.67
  • 35.184.118.155
  • 34.27.58.160
  • 34.136.4.153
  • 35.184.8.255
  • 35.222.218.140
  • 34.123.109.49
  • 34.67.240.23
  • 104.197.72.40
  • 34.72.128.33
  • 35.226.158.66
  • 34.134.4.91
  • 35.226.210.85

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

  • 34.127.41.199
  • 34.82.57.225
  • 35.197.66.244
  • 35.197.64.57
  • 34.82.193.215
  • 35.247.117.0
  • 35.233.222.226
  • 34.82.120.25
  • 35.247.5.99
  • 35.247.61.151
  • 35.233.249.160
  • 35.233.172.23
  • 35.247.55.33
  • 34.83.138.105
  • 35.203.184.48
  • 34.83.94.151
  • 34.145.90.83
  • 34.127.116.85
  • 35.197.35.188
  • 34.105.127.122
  • 35.233.191.84
  • 34.145.93.130
  • 35.233.178.166
  • 34.105.18.120
  • 104.199.118.14
  • 35.185.228.216
  • 34.145.16.151
  • 34.82.91.75
  • 34.82.142.245
  • 34.105.35.19
  • 34.83.231.96
  • 34.168.230.47
  • 35.247.46.214
  • 34.105.44.25
  • 35.185.196.75
  • 34.145.39.113
  • 34.168.121.44

美国加利福尼亚州洛杉矶 (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.203.0.6
  • 35.234.252.150
  • 35.203.96.235
  • 34.152.34.229
  • 34.118.131.36
  • 35.203.113.51

英国伦敦 (europe-west2)

  • 34.105.198.151
  • 35.246.117.58
  • 34.142.123.96
  • 34.89.124.139
  • 34.89.127.51
  • 34.105.209.44
  • 35.242.138.133
  • 35.197.222.220
  • 35.189.111.173
  • 34.105.219.154
  • 34.105.181.133
  • 34.89.25.5
  • 35.246.10.206
  • 34.105.131.133
  • 34.142.77.18
  • 34.89.54.84
  • 35.189.94.105
  • 35.246.36.67
  • 35.234.140.77
  • 35.242.174.158
  • 35.197.199.20
  • 34.89.3.120
  • 34.105.156.107
  • 35.246.79.72
  • 34.105.139.38
  • 34.105.147.157
  • 34.105.195.129
  • 34.105.194.210
  • 34.142.79.123
  • 34.142.55.58
  • 34.142.85.249
  • 34.105.148.38
  • 35.246.100.66
  • 35.246.3.165
  • 34.105.176.209
  • 35.189.95.167
  • 34.89.55.2

德国法兰克福 (europe-west3)

  • 35.242.243.255
  • 34.159.247.211
  • 35.198.128.126
  • 34.159.10.59
  • 34.159.72.77
  • 34.159.224.187
  • 34.89.159.138
  • 34.159.253.103
  • 34.159.244.43
  • 35.246.162.187
  • 34.89.141.190
  • 34.159.65.106
  • 34.159.197.31
  • 34.89.194.134
  • 34.159.252.155
  • 34.141.65.216
  • 34.159.124.62
  • 35.246.130.213
  • 34.89.206.21
  • 34.89.185.201
  • 34.159.171.46
  • 35.246.217.228
  • 35.242.236.115
  • 34.159.148.253

印度孟买 (asia-south1)

  • 35.200.234.34
  • 34.100.205.37
  • 34.93.225.12
  • 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
  • 34.141.162.7
  • 35.204.56.189
  • 35.204.11.229
  • 34.34.66.131
  • 34.32.195.89
  • 34.32.173.138

中国台湾彰化 (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

新加坡裕廊西 (asia-southeast1)

  • 34.143.210.116
  • 34.143.132.206
  • 34.87.134.202
  • 34.101.158.88
  • 34.101.157.238
  • 34.101.184.52

印度尼西亚雅加达 (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
  • 35.199.91.120
  • 35.247.197.109
  • 35.199.86.48
  • 35.199.106.166
  • 35.198.1.191
  • 35.247.235.128
  • 35.247.211.2
  • 35.247.200.249
  • 34.95.177.253

托管在 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
  • 52.68.245.25
  • 3.114.138.0
  • 54.249.39.36

亚太地区(悉尼)(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

旧版托管

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

点击此处可查看旧版托管服务的 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 基础架构上,并且已启用向 Looker 实例添加 SSH 服务器配置信息的功能,则可以使用 SSH 服务器选项。如果您的 Looker 实例上未启用此选项,但您想要启用此选项,请与 Google Cloud 销售专员联系提交支持请求

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

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

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

第 4 步:准备隧道主机

将公钥添加到您的 authorized_keys 文件中

为了对 SSH 隧道会话进行身份验证,Looker 需要一个唯一的公钥(Looker 不支持使用密码登录)。如果您的实例上启用了 SSH 服务器标签页,则可以在输入 SSH 配置信息时选择 Download Key 按钮,将公钥下载到文本文件。如果您在 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 等数据库平台中内置的基于连接的安全机制。例如,向无密码的 root 用户授予本地访问权限非常常见!

默认情况下,打开 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. 在数据库连接页面上关闭 Verify SSL Cert(验证 SSL 证书)。

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