Skip to content

OceanBase 网络访问控制

网络访问控制原则

最小权限原则

  • 限制访问源:只允许必要的IP地址或IP段访问数据库
  • 限制访问端口:只开放必要的网络端口
  • 限制访问协议:只允许必要的网络协议
  • 限制访问用户:为不同用户分配最小必要的访问权限

分层防御原则

  • 外层防火墙:在数据中心入口配置防火墙
  • 内层防火墙:在数据库集群内部配置防火墙
  • 主机防火墙:在每个数据库节点上配置防火墙
  • 数据库访问控制:在数据库层面配置访问控制

审计与监控原则

  • 记录访问日志:记录所有网络访问请求
  • 监控访问行为:实时监控异常访问行为
  • 定期审计:定期审计访问控制策略和日志
  • 及时响应:对异常访问行为及时响应和处理

冗余与备份原则

  • 冗余配置:访问控制策略配置冗余,避免单点故障
  • 定期备份:定期备份访问控制策略
  • 快速恢复:在策略配置错误时能够快速恢复
  • 测试验证:定期测试访问控制策略的有效性

网络架构设计

双平面网络设计

业务网络平面

  • 用途:处理客户端应用程序的访问请求
  • 配置建议
    • 使用独立的网络交换机和网卡
    • 配置适当的带宽,推荐 10Gbps 或更高
    • 配置严格的访问控制策略
    • 启用流量监控和QoS

内部复制网络平面

  • 用途:处理集群内部节点之间的数据复制和通信
  • 配置建议
    • 使用独立的网络交换机和网卡
    • 配置低延迟、高带宽的网络,推荐 25Gbps 或更高
    • 只允许集群内部节点访问
    • 隔离于业务网络,提高安全性

网络分段设计

集群管理网段

  • 包含节点:管理节点、OCP 节点、监控节点
  • 访问控制:严格限制访问源,只允许运维人员访问
  • 安全要求:最高安全级别,配置最严格的访问控制策略

业务访问网段

  • 包含节点:业务应用服务器、OBProxy 节点
  • 访问控制:根据业务需求配置访问控制策略
  • 安全要求:较高安全级别,定期审计访问权限

数据复制网段

  • 包含节点:OceanBase 服务器节点
  • 访问控制:只允许集群内部节点之间通信
  • 安全要求:高安全级别,物理隔离或 VLAN 隔离

备份恢复网段

  • 包含节点:备份服务器、恢复服务器
  • 访问控制:只允许备份恢复相关操作
  • 安全要求:高安全级别,配置专用防火墙规则

防火墙配置

操作系统防火墙配置

Linux iptables 配置

bash
# 允许 SSH 访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许业务网络访问 OceanBase 端口
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 2881 -j ACCEPT  # OBServer 业务端口
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 2883 -j ACCEPT  # OBProxy 端口

# 允许内部复制网络通信
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 2882 -j ACCEPT  # OBServer 内部端口
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 2884 -j ACCEPT  # 内部复制端口

# 允许 OCP 访问
iptables -A INPUT -s 172.16.0.0/24 -p tcp --dport 8080 -j ACCEPT  # OCP 端口

# 默认拒绝所有其他入站连接
iptables -P INPUT DROP

# 保存 iptables 配置

iptables-save > /etc/sysconfig/iptables

Linux firewalld 配置

bash
# 启用 firewalld 服务
systemctl enable firewalld
systemctl start firewalld

# 允许 SSH 访问
firewall-cmd --permanent --add-service=ssh

# 允许业务网络访问 OceanBase 端口
firewall-cmd --permanent --add-source=10.0.0.0/24
firewall-cmd --permanent --add-port=2881/tcp
firewall-cmd --permanent --add-port=2883/tcp

# 允许内部复制网络通信
firewall-cmd --permanent --add-source=192.168.0.0/24
firewall-cmd --permanent --add-port=2882/tcp
firewall-cmd --permanent --add-port=2884/tcp

# 允许 OCP 访问
firewall-cmd --permanent --add-source=172.16.0.0/24
firewall-cmd --permanent --add-port=8080/tcp

# 重新加载防火墙规则
firewall-cmd --reload

网络设备防火墙配置

交换机访问控制列表(ACL)

txt
# 业务网络交换机 ACL 配置
access-list 100 permit tcp 10.0.0.0 0.0.0.255 any eq 2881
access-list 100 permit tcp 10.0.0.0 0.0.0.255 any eq 2883
access-list 100 deny ip any any log

# 内部复制网络交换机 ACL 配置
access-list 200 permit tcp 192.168.0.0 0.0.0.255 192.168.0.0 0.0.0.255 eq 2882
access-list 200 permit tcp 192.168.0.0 0.0.0.255 192.168.0.0 0.0.0.255 eq 2884
access-list 200 deny ip any any log

防火墙规则配置

txt
# 外部防火墙规则
rule 100 permit tcp source 10.0.0.0 0.0.0.255 destination any destination-port 2883
rule 101 deny ip source any destination any log

# 内部防火墙规则
rule 200 permit tcp source 192.168.0.0 0.0.0.255 destination 192.168.0.0 0.0.0.255 destination-port 2882
rule 201 permit tcp source 192.168.0.0 0.0.0.255 destination 192.168.0.0 0.0.0.255 destination-port 2884
rule 202 deny ip source any destination any log

IP 白名单配置

OceanBase 服务器 IP 白名单

配置方法

sql
-- 查看当前 IP 白名单配置
SHOW PARAMETERS LIKE 'ob_tcp_invited_nodes';

-- 设置 IP 白名单,允许多个 IP 或 IP 段
ALTER SYSTEM SET ob_tcp_invited_nodes = '10.0.0.1,10.0.0.2,10.0.0.0/24';

-- 允许所有 IP 访问(不推荐,仅用于测试环境)
ALTER SYSTEM SET ob_tcp_invited_nodes = '%';

配置建议

  • 最小化原则:只添加必要的 IP 地址或 IP 段
  • 定期更新:定期审查和更新 IP 白名单
  • 使用 IP 段:对于同一网段的服务器,使用 IP 段配置
  • 避免使用通配符:生产环境避免使用 '%' 通配符

OBProxy IP 白名单

配置方法

sql
-- 查看 OBProxy IP 白名单配置
SHOW PROXYCONFIG LIKE 'obproxy_sys_whitelist';

-- 设置 OBProxy IP 白名单
ALTER PROXYCONFIG SET obproxy_sys_whitelist = '10.0.0.1,10.0.0.2,10.0.0.0/24';

配置建议

  • 分离配置:OBProxy 和 OceanBase 服务器的 IP 白名单分开配置
  • 严格控制:OBProxy 的 IP 白名单更严格,只允许必要的访问
  • 定期同步:确保 OBProxy 和 OceanBase 服务器的 IP 白名单保持同步

端口访问控制

常用端口列表

端口号用途访问控制建议
22SSH 访问严格限制访问源,只允许运维人员 IP
80/443OCP Web 访问允许业务运维人员访问,建议使用 HTTPS
2881OBServer 业务端口允许业务应用服务器和 OBProxy 访问
2882OBServer 内部通信端口只允许集群内部节点访问
2883OBProxy 业务端口允许客户端应用程序访问
2884内部复制端口只允许集群内部节点访问
8080OCP 服务端口允许业务运维人员访问
9000监控服务端口只允许监控系统访问
2981审计服务端口只允许审计系统访问

端口访问控制配置

Linux 主机端口控制

bash
# 使用 iptables 配置端口访问控制
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 2881 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 2882 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 2883 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 2884 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP

OceanBase 端口配置

sql
-- 查看 OceanBase 端口配置
SHOW PARAMETERS LIKE '%port%';

-- 修改 OBServer 业务端口
ALTER SYSTEM SET mysql_port = 2881;

-- 修改 OBServer 内部通信端口
ALTER SYSTEM SET rpc_port = 2882;

访问控制最佳实践

安全组配置最佳实践

  • 细粒度划分:根据业务需求细粒度划分安全组
  • 最小权限:每个安全组只开放必要的端口和协议
  • 定期审查:定期审查安全组规则,移除不必要的规则
  • 命名规范:使用清晰的命名规范,便于管理和审计
  • 文档化:详细记录每个安全组的用途和规则

IP 白名单最佳实践

  • 动态管理:根据业务需求动态调整 IP 白名单
  • 自动化配置:使用自动化工具管理 IP 白名单
  • 定期清理:定期清理不再需要的 IP 地址
  • 监控告警:对 IP 白名单的变更进行监控和告警
  • 测试验证:定期测试 IP 白名单的有效性

防火墙配置最佳实践

  • 分层配置:在网络的不同层级配置防火墙
  • 规则顺序:防火墙规则按照从具体到一般的顺序配置
  • 默认拒绝:默认拒绝所有流量,只允许必要的流量
  • 日志记录:启用防火墙日志记录
  • 定期备份:定期备份防火墙配置

审计与监控最佳实践

  • 集中日志管理:将所有访问日志集中管理
  • 实时监控:实时监控异常访问行为
  • 告警策略:配置合理的告警策略
  • 定期审计:定期审计访问控制策略和日志
  • 响应机制:建立完善的异常访问响应机制

常见问题处理

访问被拒绝

症状

  • 客户端无法连接到 OceanBase 数据库
  • 报错信息包含 "Access denied" 或 "Connection refused"
  • 防火墙日志显示连接被拒绝

解决方案

  1. 检查 IP 白名单配置:确保客户端 IP 在白名单中
  2. 检查防火墙规则:确保防火墙允许客户端访问
  3. 检查端口配置:确保数据库服务在正确的端口上运行
  4. 检查网络连接:确保客户端和服务器之间网络连通
  5. 检查用户权限:确保用户有足够的访问权限

配置错误导致服务不可用

症状

  • 所有客户端都无法连接到数据库
  • 防火墙配置错误导致内部通信失败
  • IP 白名单配置错误导致合法访问被拒绝

解决方案

  1. 快速恢复配置:使用备份的配置快速恢复
  2. 临时放宽限制:在紧急情况下临时放宽访问限制
  3. 逐步排查:逐步排查配置错误的原因
  4. 测试验证:在恢复后进行测试验证
  5. 记录教训:记录配置错误的原因和解决方案,避免再次发生

异常访问行为

症状

  • 大量来自异常 IP 的访问尝试
  • 频繁的登录失败尝试
  • 异常的访问时间或频率
  • 异常的查询模式

解决方案

  1. 实时阻断:立即阻断异常 IP 的访问
  2. 记录日志:详细记录异常访问行为
  3. 分析原因:分析异常访问的原因和目的
  4. 更新策略:根据分析结果更新访问控制策略
  5. 加强监控:加强对类似异常行为的监控

访问控制策略过于复杂

症状

  • 访问控制策略难以管理和维护
  • 配置错误的风险增加
  • 审计和排查困难
  • 策略之间可能存在冲突

解决方案

  1. 简化策略:简化访问控制策略,移除不必要的规则
  2. 模块化管理:将策略模块化,便于管理和维护
  3. 自动化工具:使用自动化工具管理访问控制策略
  4. 定期审查:定期审查和清理策略
  5. 文档化:详细记录策略的设计和变更历史

常见问题(FAQ)

Q1: 如何选择合适的网络架构?

A1: 选择网络架构需要考虑:

  • 业务规模:业务规模越大,需要更复杂的网络架构
  • 安全要求:安全要求越高,需要更多的网络分层和访问控制
  • 性能要求:性能要求越高,需要更高带宽和更低延迟的网络
  • 成本预算:根据成本预算选择合适的网络设备和架构

Q2: 双平面网络设计的优势是什么?

A2: 双平面网络设计的优势:

  • 提高安全性:业务网络和内部复制网络分离,减少安全风险
  • 提高性能:避免业务流量和复制流量相互影响
  • 便于管理:不同类型的流量分开管理,便于监控和优化
  • 提高可靠性:一个网络平面故障不会影响另一个平面

Q3: 如何配置 IP 白名单?

A3: 配置 IP 白名单的方法:

sql
-- OceanBase 服务器 IP 白名单
ALTER SYSTEM SET ob_tcp_invited_nodes = '10.0.0.1,10.0.0.2,10.0.0.0/24';

-- OBProxy IP 白名单
ALTER PROXYCONFIG SET obproxy_sys_whitelist = '10.0.0.1,10.0.0.2,10.0.0.0/24';

Q4: 如何处理访问被拒绝的问题?

A4: 处理访问被拒绝问题的步骤:

  1. 检查客户端 IP 是否在 IP 白名单中
  2. 检查防火墙规则是否允许访问
  3. 检查数据库服务是否在正确的端口上运行
  4. 检查网络连接是否正常
  5. 检查用户权限是否足够

Q5: 如何监控和审计网络访问?

A5: 监控和审计网络访问的方法:

  • 启用防火墙日志记录
  • 使用集中日志管理系统收集和分析日志
  • 配置实时监控和告警
  • 定期审计访问控制策略和日志
  • 使用入侵检测系统(IDS)监控异常访问行为

Q6: 如何简化复杂的访问控制策略?

A6: 简化访问控制策略的方法:

  • 采用模块化设计,将策略按功能或业务划分
  • 移除不必要的规则,遵循最小权限原则
  • 使用自动化工具管理策略
  • 定期审查和清理策略
  • 建立清晰的命名规范和文档

Q7: 生产环境中是否可以使用 '%' 通配符配置 IP 白名单?

A7: 不推荐在生产环境中使用 '%' 通配符配置 IP 白名单。使用 '%' 通配符会允许所有 IP 访问数据库,增加安全风险。生产环境应该严格限制访问源,只允许必要的 IP 地址或 IP 段访问。

Q8: 如何备份和恢复访问控制策略?

A8: 备份和恢复访问控制策略的方法:

  • 防火墙配置:使用防火墙提供的备份和恢复功能
  • IP 白名单配置:将配置语句保存到文件中,需要时执行
  • 安全组配置:使用云平台提供的备份和恢复功能
  • 定期测试:定期测试备份的策略是否可以正常恢复

Q9: 如何测试访问控制策略的有效性?

A9: 测试访问控制策略有效性的方法:

  • 模拟访问:使用不同 IP 地址模拟访问,验证策略是否生效
  • 渗透测试:定期进行渗透测试,发现安全漏洞
  • 审计日志:分析访问日志,验证策略是否被正确执行
  • 故障注入:模拟配置错误,测试恢复机制

Q10: 如何处理大量客户端需要访问数据库的情况?

A10: 处理大量客户端访问的方法:

  • 使用 OBProxy:通过 OBProxy 统一管理客户端连接
  • 使用 IP 段:对于同一网段的客户端,使用 IP 段配置白名单
  • 自动化管理:使用自动化工具动态管理 IP 白名单
  • 分层访问控制:在不同层级配置访问控制,减轻单一层级的压力