1.Base基础/3.Icon图标/操作/search备份
1.Base基础/3.Icon图标/操作/search备份
EN
文档
关于AntDB
部署与升级
快速入门
使用教程
调优
工具和插件
高级服务
数据安全
参考
  • 文档首页 /
  • 运维 /
  • 分布式运维手册 /
  • 数据库安全设置

数据库安全设置

更新时间:2024-07-01 14:39:43

数据库访问策略设置

hba 表用于管理存放 AntDB 集群中所有 coordiantor 节点的 pg_hba.conf 文件中的配置项,当配置项被添加后,就会记录到此表中,用来标识。对于添加过的配置项,可以通过 list hba 命令显示。

添加访问策略

命令功能: 添加新的 hba 配置到 coordinator 中。通过 \h add hba 获取帮助信息。

命令格式:

Syntax: 
ADD HBA GTMCOORD { ALL | nodename } ( "hba_value" ) 
ADD HBA COORDINATOR { ALL | nodename } ( "hba_value" ) 
ADD HBA DATANODE { ALL | nodename } ( "hba_value" ) 
 
where hba_value must be the following: 
 
    host database user IP-address IP-mask auth-method 

命令举例:

-- 在coordinator的hba中添加 10.0.0.0 IP端的所有用户通过md5认证访问所有数据库的配置: 
add hba coordinator all ("host all all 10.0.0.0 8 md5"); 

删除访问策略

命令功能:

删除通过 add hba 添加的配置项。

命令格式:

Command:     DROP HBA
Description: drop the content from the hba table.
Syntax:
DROP HBA { ALL | nodename } [ ( "hba_value" [, ...] ) ]

where hba_value must be the following:

    host database user IP-address IP-mask auth-method
    host database user hostname auth-method

命令举例:

-- 删除所有节点通过用户replication的访问配置: 
DROP HBA ALL ("host replication all 0.0.0.0 0 trust");

-- 删除cn1节点的hba中 10.0.0.0 IP端的所有用户通过md5认证访问所有数据库的配置: 
DROP HBA cn1 ("host all all 10.0.0.0 8 trust"); 

-- 删除gc_1节点通过用户replication的访问配置: 
DROP HBA gc_1 ("host replication all 0.0.0.0 0 trust");

列举访问策略

命令功能:

显示通过 add hba 添加的配置项。

命令格式:

LIST HBA [ coord_name [, ...] ] 

命令举例:

	antdb=# list hba; 
 nodename |          hbavalue            
----------+----------------------------- 
 coord1   | host all all 10.0.0.0 8 md5 
 coord2   | host all all 10.0.0.0 8 md5 
 coord3   | host all all 10.0.0.0 8 md5 
 coord4   | host all all 10.0.0.0 8 md5 
(4 rows) 

查询访问策略

命令功能:

显示节点 pg_hba.conf 中的 hba 信息。

命令格式:

Description: show the content of the pg_hba.conf file 
Syntax: 
SHOW HBA { ALL | node_name } 

命令举例:

-- 显示节点cn1的hba信息 
show hba cn1; 
  nodetype   | nodename |                 hbavalue                  
-------------+----------+------------------------------------------ 
 coordinator | cn1      | local all all trust                     + 
             |          | host all all 127.0.0.1 32 trust         + 
             |          | host all all ::1 128 trust              + 
             |          | local replication all trust             + 
             |          | host replication all 127.0.0.1 32 trust + 
             |          | host replication all ::1 128 trust      + 
             |          | host all all 10.21.20.175 32 trust      + 
             |          | host all all 10.21.20.176 32 trust      + 
             |          | host all all 10.0.0.0 8 trust           + 

list hba 不同的是,list仅仅显示通过 add hba 添加的hba信息,而 show hba 显示具体节点中 pg_hba.conf 文件的内容。

配置 SSL 访问控制策略

AntDB 支持客户端通过SSL连接加密服务器,以提高安全性。

前提条件:

准备好 ssl 证书文件:

  • 根证书文件: root.crt
  • 服务器证书文件: server.crt
  • 服务器私钥文件: server.key
  • 客户端证书文件: client.crt
  • 客户端私钥文件: client.key

配置步骤:

下面以允许用户 ssl 连接到 gtmcoord 节点为例,其它节点的配置方法相同:

1、将准备好服务器证书文件(根证书文件、服务端证书文件、服务端私钥文件)上传到集群 gtmcoord 节点所在的服务器上,如下:

[antdb@host227 ssl_file]$ ll
total 12
-rw-rw-r-- 1 antdb antdb 1220 Apr 17 11:14 root.crt
-rw-rw-r-- 1 antdb antdb 1220 Apr 17 11:14 server.crt
-rw------- 1 antdb antdb 1679 Apr 17 11:14 server.key

修改 server.key 的权限设置为 0600,否则后面重启会失败。

 chmod 0600 server.key

2、登录到 mgr 上,设置参数如下,这里设置参数的节点与第一步对应,确保节点所在服务器上有 ssl 文件。

如果没有 ssl 文件,设置 ssl = on 会导致后面重启失败:

set gtmcoord all(ssl = on);
set gtmcoord all(ssl_ca_file = '/home/antdb/ssl_file/root.crt');
set gtmcoord all(ssl_cert_file = '/home/antdb/ssl_file/server.crt');
set gtmcoord all(ssl_key_file = '/home/antdb/ssl_file/server.key');

这里,也可以配置相对路径,用户可以自己选择。

例如,用户在第一步将文件上传到数据库的数据目录(即与 postgresql.conf 同一级的目录),则可以如下。

ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

3、增加 hba 配置项;

例如:允许所有主机上以 antdb 用户使用 SSL 加密连接到主节点,则配置如下:

add hba gtmcoord all("hostssl   all   antdb    0.0.0.0  0     cert");

4、登录到重启集群,使 ssl 相关参数和 hba 文件的修改都生效。

stop all;
start all;

5、将准备的 ssl 文件(根证书文件、客户端证书文件、客户端私钥文件)上传到客户端主机上:

client.crt
client.key
root.crt

更改权限:

chmod 0600 client.key

6、登录到数据库上,创建用户:

创建的用户名是 antdb,因为上面的证书与 antdb 用户绑定,需要在用户生成证书的时候确定。

CREATE USER antdb login;

7、在客户端上连接主节点,指定客户端的证书文件。

psql --dbname="host=10.20.16.227 user=antdb port=40360 dbname=postgres sslmode=verify-ca sslrootcert=root.crt sslcert=client.crt  sslkey=client.key"

例如:

[antdb@host227 ~]$ psql --dbname="host=10.20.16.227 user=antdb port=40360 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=> 
问题反馈