设置远程连接安全策略
GaussDB远程连接安全管理采取了SSL认证功能,包括双向认证、服务器认证和客户端认证。
前提条件
从CA认证中心申请到正式的服务器证书和私钥。(假设服务器的私钥为server.key,证书为server.crt,客户端的私钥为client.key,证书为client.crt,CA根证书名称为cacert.pem)
背景信息
GaussDB支持SSL协议标准,SSL协议是一种安全性更高的协议标准,它加入了数字签名和数字证书来实现客户端和服务器的双向身份验证,保证了通信双方更加安全的数据传输。
1.以gaussdba用户身份登录GaussDB服务器。
2.开启SSL认证模式。
gs_guc set -c ssl=on
3.配置客户端接入认证参数。
cd /opt/gaussdb/data
vi pg_hba.conf
例如,增加类似如下的信息,表示允许10.0.0.2/24网段的客户端以ssl认证方式连接到GaussDB服务:
hostssl all all 10.0.0.2/24 sha256
4.配置SSL认证相关的数字证书参数(分别在GaussDB服务器和客户端配置),具体要求请参见表1。
由于三种认证方式的配置方法类似,以双向认证为例,配置方法如下所示。
- 在服务器上配置如下参数。
gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_cert_file='server.crt'"
gs_guc set: ssl_cert_file='server.crt'
gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_key_file='server.key'"
gs_guc set: ssl_key_file='server.key'
gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_ca_file='cacert.pem'"
gs_guc set: ssl_ca_file='cacert.pem'
gaussdba@gauss21:/opt/gaussdb/data> gs_guc set -c "ssl_crl_file=' '"
gs_guc set: ssl_crl_file=''
- 在客户端上配置如下环境变量。
export PGSSLCERT="/opt/gaussdb/data/client.crt"
export PGSSLKEY="/opt/gaussdb/data/client.key"
export PGSSLMODE="prefer"
export PGSSLROOTCERT=" "
export PGSSLCRL=" "
- 表1 SSL认证方式
认证方式 | 配置服务器端参数 | 配置客户端环境变量 | 维护建议 |
双向认证 | 将服务器证书、服务器私钥、废弃证书和根证书拷贝到$GAUSSDATA下,并设置如下参数: ssl_cert_file ssl_key_file ssl_ca_file ssl_crl_file | 设置如下环境变量: PGSSLCERT PGSSLKEY PGSSLROOTCERT PGSSLCRL PGSSLMODE | 该方式应用于安全性要求较高的场景。使用此方式时, 建议设置客户端的PGSSLMODE变量为verify-ca或verify-full, 服务器端的认证方式设定为cert,这样只有某些授权的客户端 和服务器才能使用GaussDB进行数据通信,确保了网络数据的安全性。 |
服务器认证 | 将服务器端证书和私钥文件拷贝到$GAUSSDATA下,并设置如下参数: ssl_cert_file ssl_key_file | 设置如下环境变量: PGSSLROOTCERT PGSSLCRL PGSSLMODE | 为防止基于TCP链接的欺骗,建议使用SSL证书认证功能。 除配置服务器证书和私钥文件外,建议客户端使用 PGSSLMODE=verify-ca或verify-full方式连接 |
客户端认证 | 将服务器端的根证书和证书吊销列表拷贝到$GAUSSDATA下,并设置如下参数: ssl_ca_file ssl_crl_file | 设置如下环境变量: PGSSLROOTCERT PGSSLCRL PGSSLMODE | 如果服务器希望只有授权客户端才能连接服务器,建议采用客户端认证方式 |
说明:
- 从安全性考虑,建议使用双向认证方式。
- 配置客户端环境变量,必须包含文件的绝对路径。
- 服务器端既可以配置环境变量也可以配置参数文件(故障排查,设置保持一致)。
6.修改服务器密钥的权限。
权限必须是600,所属用户为gaussdba,所在用户组为dbgrp。如果权限不满足要求,则GaussDB无法启动。使用如下命令修改权限。
cd /opt/gaussdb/data
chown gaussdba:dbgrp server.key
chmod og-rwx server.key
若涉及客户端认证也需修改客户端密钥的权限:
chmod og-rwx client.key
7.重启GaussDB使配置生效。
gs_ctl restart