数据库安全设置
更新时间:2024-07-01 14:39:42
配置 SSL 连接访问
前提条件:
准备好 ssl 证书文件:
- 根证书文件:root.crt
- 服务器证书文件:server.crt
- 服务器私钥文件:server.key
- 客户端证书文件:client.crt
- 客户端私钥文件:client.key
配置步骤:
- 将准备好服务器证书文件(根证书文件、服务端证书文件、服务端私钥文件)上传到服务器上(主备节点配置方法相同),如下:
[antdb2@host227 ssl_file]$ ll
total 12
-rw-rw-r-- 1 antdb2 antdb2 1220 Apr 17 11:14 root.crt
-rw-rw-r-- 1 antdb2 antdb2 1220 Apr 17 11:14 server.crt
-rw------- 1 antdb2 antdb2 1679 Apr 17 11:14 server.key
修改 server.key 的权限设置为 0600,否则后面重启会失败。
chmod 0600 server.key
- 修改主节点上 postgresql.conf 文件,设置参数如下,数据库参数的设置方法请参看上面【集群参数修改】章节:
这些文件是第一步上传到服务上的 3 个文件:
ssl = on #启用ssl连接
ssl_ca_file = '/data/antdb2/ssl_file/root.crt' #指定包含SSL服务器证书颁发机构(CA)的文件的名称
ssl_cert_file = '/data/antdb2/ssl_file/server.crt' #指定包含SSL服务器证书的文件的名称
ssl_key_file = '/data/antdb2/ssl_file/server.key' #指定包含SSL服务器私钥的文件的名称
这里,也可以配置相对路径,用户可以自己选择。
例如,用户在第一步将文件上传到数据库的数据目录(即与 postgresql.conf 同一级的目录),则可以配置如下。
ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
- 创建用户:
创建的用户名是 antdb,因为上面的证书与 antdb 用户绑定,需要在用户生成证书的时候确定。
CREATE USER antdb login;
- 在 hba 文件中增加访问控制;
例如:允许所有主机上以 antdb 用户使用 SSL 加密连接到数据库,则配置如下:
hostssl all antdb 0.0.0.0/0 cert
- 重启节点,使 ssl 相关参数和 hba 文件的修改都生效。
--非高可用环境重启:
adb_ctl restart -D /data/antdb2/pgdata_adb
--高可用环境重启:
adbhamgrctl -c /etc/adbhamgr.yml restart postgres-cluster --force
- 将准备的 ssl 文件(根证书文件、客户端证书文件、客户端私钥文件)上传到客户端主机上:
client.crt
client.key
root.crt
更改权限:
chmod 0600 client.key
- 在客户端上连接主节点,指定客户端的证书文件。
psql --dbname="host=10.20.16.227 user=antdb port=40571 dbname=postgres sslmode=verify-ca sslrootcert=root.crt sslcert=client.crt sslkey=client.key"
例如:
[antdb2@host227 ~]$ psql --dbname="host=10.20.16.227 user=antdb port=40571 dbname=postgres sslmode=verify-ca sslrootcert=root.crt sslcert=client.crt sslkey=client.key"
psql (13.3)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
antdb=>
问题反馈