GSSAPI 认证

GSSAPI 加密连接可以加密网络传输中的所有数据,包括查询语句和返回的结果(密码不会通过网络传输),这确保了数据在传输过程中的完整性和保密性。

配置说明

在 YMatrix 中,GSSAPI 加密通过 Kerberos 来实现。 Kerberos 的作用是提供一种安全的认证机制,支持在 pg_hba.conf 文件中配置。允许客户端通过 Kerberos 票据进行身份验证通过与 Kerberos Key Distribution Center(KDC)协作,确保只有经过授权的用户才能访问数据库。

  • pg_hba.conf 配置示例如下:
hostgssenc  all    mxadmin   10.51.0.40/32    gss

使用示例

注意!
确保 YMatrix 服务器已经安装并运行。如果尚未安装,可参考快速安装进行预先安装。

  1. 安装 Kerberos 客户端工具
  sudo yum install krb5-workstation
  1. 创建 Kerberos 服务主体

在 Kerberos 管理服务器上,为 YMatrix 服务创建一个服务主体。通常,服务主体的名称格式为 servicename/hostname@realm,例如 postgres/postgresql.example.com@EXAMPLE.COM

  • 使用 kadmin 工具创建服务主体:
  kadmin
  • 在 kadmin 提示符下,运行以下命令,将创建一个随机密钥的服务主体。
  addprinc -randkey postgres/postgresql.example.com@EXAMPLE.COM
  1. 导出服务主体的密钥

将服务主体的密钥导出到一个密钥表文件(keytab 文件)中。运行以下命令:

注意!
需将 /path/to/postgresql.keytab 替换为密钥表文件的存储路径。

  ktadd -k /path/to/postgresql.keytab
  postgres/postgresql.example.com@EXAMPLE.COM
  1. 分发密钥表文件

将生成的密钥表文件复制到运行 YMatrix 服务器的主机上,并确保 YMatrix 服务器可以访问该文件。例如:

  scp /path/to/postgresql.keytab
  user@postgresql.example.com:/etc/postgresql.keytab
  1. 修改 pg_hba.conf 文件

pg_hba.conf 文件中,添加或修改认证方法为 gss 。

  host all all 10.51.0.40/32 gss

这表示允许来自 10.51.0.40/32 网段的客户端使用 Kerberos 认证访问所有数据库。

  1. 修改 postgresql.conf 文件

打开 YMatrix 的主配置文件 postgresql.conf,设置 krb_server_keyfile 参数,指定密钥表文件的路径。

  krb_server_keyfile = '/etc/postgresql.keytab'
  1. 重启 YMatrix 服务器

保存配置文件的更改后,重启 YMatrix 服务器以使配置生效。

  mxstop -u
  1. 创建 Kerberos 用户映射
  CREATE USER "username@REALM";
  1. 获取 Kerberos 票据

在客户端系统上,使用 kinit 命令获取 Kerberos 票据:

  kinit username@REALM

username 替换为用户的 Kerberos 用户名,REALM 替换为 Kerberos 域名。

  1. 连接到 YMatrix 数据库

使用支持 Kerberos 认证的 YMatrix 客户端工具连接到数据库。如果客户端工具支持自动获取 Kerberos 票据,则无需手动指定用户名和密码。

  psql -h server.example.com -U username dbname
  - 登录成功提示
  GSSAPI-encrypted connection
  1. 验证 Kerberos 认证

检查 YMatrix 服务器的日志文件,确认 Kerberos 认证是否成功。