Skip to content

GaussDB 认证方式

密码认证

密码加密算法

md5

  • 基于 MD5 哈希算法的密码认证
  • 客户端发送加密后的密码,而非明文
  • 兼容性好,但安全性相对较低

scram-sha-256

  • 基于 SCRAM-SHA-256 算法的密码认证
  • 提供双向认证,安全性更高
  • 支持密码变更和撤销
  • 推荐使用的认证方式

密码策略配置

密码复杂度

# 密码最小长度
password_min_length = 8

# 密码必须包含大小写字母、数字和特殊字符
password_policy = 2

# 密码有效期(天)
password_effect_time = 90

登录失败处理

# 登录失败次数限制
password_max_try_times = 10

# 登录失败锁定时间(分钟)
password_lock_time = 10

LDAP 认证

LDAP 认证配置

服务器配置

# LDAP 服务器地址
ldap_server = ldap://ldap.example.com

# LDAP 服务器端口
ldap_port = 389

# LDAP 搜索基 DN
ldap_search_base = dc=example,dc=com

# LDAP 搜索属性
ldap_search_attribute = uid

# LDAP 绑定 DN
ldap_bind_dn = cn=admin,dc=example,dc=com

# LDAP 绑定密码
ldap_bind_password = password

认证映射

  • 将 LDAP 用户映射到 GaussDB 数据库用户
  • 支持基于组的映射
  • 可配置默认数据库和权限

LDAP 认证使用

sql
-- 创建 LDAP 认证的用户
CREATE USER ldap_user IDENTIFIED BY 'password' PASSWORD EXPIRE;

-- 配置用户使用 LDAP 认证
ALTER USER ldap_user CONNECTION LIMIT 10;

SSL 认证

SSL 配置

服务器配置

# 启用 SSL
ssl = on

# SSL 证书文件
ssl_cert_file = 'server.crt'

# SSL 私钥文件
ssl_key_file = 'server.key'

# SSL CA 证书文件
ssl_ca_file = 'root.crt'

客户端配置

  • 配置客户端使用 SSL 连接
  • 验证服务器证书
  • 支持客户端证书认证

SSL 认证使用

bash
# 使用 SSL 连接数据库
gsql -h hostname -p 5432 -U username -d dbname -sslmode require

Kerberos 认证

Kerberos 配置

服务器配置

# Kerberos 认证开关
krb_server_keyfile = '/path/to/krb5.keytab'
krb_srvname = 'postgres'

客户端配置

  • 配置 Kerberos 客户端
  • 获取和管理 Kerberos 票据
  • 配置 GaussDB 客户端使用 Kerberos 认证

Kerberos 认证使用

bash
# 获取 Kerberos 票据
kinit username@REALM

# 使用 Kerberos 连接数据库
gsql -h hostname -p 5432 -U username@REALM -d dbname -G

PAM 认证

PAM 配置

PAM 服务配置

# /etc/pam.d/gaussdb
auth    required    pam_unix.so
account required    pam_unix.so

GaussDB 配置

# pg_hba.conf 配置
local   all         all                               pam
host    all         all         127.0.0.1/32          pam
host    all         all         ::1/128               pam

PAM 认证使用

sql
-- 创建 PAM 认证的用户
CREATE USER pam_user WITH PASSWORD 'password';

-- 配置 PAM 服务名称
ALTER SYSTEM SET pam_service_name = 'gaussdb';

认证方式选择

认证方式比较

认证方式安全性配置复杂度适用场景
密码认证小型部署、开发环境
LDAP 认证企业级部署、集中管理
SSL 认证需要加密通信的场景
Kerberos 认证大型企业、SSO 环境
PAM 认证复杂认证场景

最佳实践

  • 生产环境推荐使用 LDAP 或 Kerberos 认证
  • 启用 SSL 加密通信
  • 配置强密码策略
  • 定期审计认证日志
  • 根据业务需求选择合适的认证方式

认证日志和审计

认证日志配置

# 启用认证日志
log_connections = on
log_disconnections = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

认证审计

  • 记录用户登录和退出信息
  • 监控异常登录尝试
  • 审计认证失败原因
  • 生成认证报告

常见问题(FAQ)

Q1: 如何选择合适的认证方式?

A1: 选择认证方式时需要考虑以下因素:

  1. 安全性要求:根据数据敏感性选择合适的认证方式
  2. 部署规模:小型部署可以使用密码认证,大型部署推荐 LDAP 或 Kerberos
  3. 现有基础设施:考虑与现有身份管理系统的集成
  4. 管理复杂度:评估配置和维护成本
  5. 性能要求:某些认证方式可能会影响性能

Q2: 如何配置强密码策略?

A2: 配置强密码策略的方法:

-- 设置密码最小长度
ALTER SYSTEM SET password_min_length = 12;

-- 设置密码复杂度要求
ALTER SYSTEM SET password_policy = 2;

-- 设置密码有效期
ALTER SYSTEM SET password_effect_time = 60;

-- 设置登录失败限制
ALTER SYSTEM SET password_max_try_times = 5;

Q3: 如何启用 SSL 认证?

A3: 启用 SSL 认证的步骤:

  1. 生成 SSL 证书和私钥
  2. 配置 postgresql.conf 中的 SSL 参数
  3. 更新 pg_hba.conf,要求使用 SSL 连接
  4. 重启数据库服务
  5. 客户端使用 SSL 连接数据库

Q4: 如何配置 LDAP 认证?

A4: 配置 LDAP 认证的步骤:

  1. 配置 LDAP 服务器连接参数
  2. 配置 pg_hba.conf,使用 ldap 认证方式
  3. 重启数据库服务
  4. 创建或映射 LDAP 用户
  5. 测试 LDAP 认证

Q5: 如何处理认证失败问题?

A5: 处理认证失败的方法:

  1. 检查用户名和密码是否正确
  2. 查看认证日志,分析失败原因
  3. 检查 pg_hba.conf 配置是否正确
  4. 检查认证服务器(如 LDAP、Kerberos)是否正常运行
  5. 检查网络连接是否正常
  6. 检查 SSL 证书是否过期或无效