外观
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/iptablesLinux 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 logIP 白名单配置
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 白名单保持同步
端口访问控制
常用端口列表
| 端口号 | 用途 | 访问控制建议 |
|---|---|---|
| 22 | SSH 访问 | 严格限制访问源,只允许运维人员 IP |
| 80/443 | OCP Web 访问 | 允许业务运维人员访问,建议使用 HTTPS |
| 2881 | OBServer 业务端口 | 允许业务应用服务器和 OBProxy 访问 |
| 2882 | OBServer 内部通信端口 | 只允许集群内部节点访问 |
| 2883 | OBProxy 业务端口 | 允许客户端应用程序访问 |
| 2884 | 内部复制端口 | 只允许集群内部节点访问 |
| 8080 | OCP 服务端口 | 允许业务运维人员访问 |
| 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 DROPOceanBase 端口配置
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"
- 防火墙日志显示连接被拒绝
解决方案
- 检查 IP 白名单配置:确保客户端 IP 在白名单中
- 检查防火墙规则:确保防火墙允许客户端访问
- 检查端口配置:确保数据库服务在正确的端口上运行
- 检查网络连接:确保客户端和服务器之间网络连通
- 检查用户权限:确保用户有足够的访问权限
配置错误导致服务不可用
症状
- 所有客户端都无法连接到数据库
- 防火墙配置错误导致内部通信失败
- IP 白名单配置错误导致合法访问被拒绝
解决方案
- 快速恢复配置:使用备份的配置快速恢复
- 临时放宽限制:在紧急情况下临时放宽访问限制
- 逐步排查:逐步排查配置错误的原因
- 测试验证:在恢复后进行测试验证
- 记录教训:记录配置错误的原因和解决方案,避免再次发生
异常访问行为
症状
- 大量来自异常 IP 的访问尝试
- 频繁的登录失败尝试
- 异常的访问时间或频率
- 异常的查询模式
解决方案
- 实时阻断:立即阻断异常 IP 的访问
- 记录日志:详细记录异常访问行为
- 分析原因:分析异常访问的原因和目的
- 更新策略:根据分析结果更新访问控制策略
- 加强监控:加强对类似异常行为的监控
访问控制策略过于复杂
症状
- 访问控制策略难以管理和维护
- 配置错误的风险增加
- 审计和排查困难
- 策略之间可能存在冲突
解决方案
- 简化策略:简化访问控制策略,移除不必要的规则
- 模块化管理:将策略模块化,便于管理和维护
- 自动化工具:使用自动化工具管理访问控制策略
- 定期审查:定期审查和清理策略
- 文档化:详细记录策略的设计和变更历史
常见问题(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: 处理访问被拒绝问题的步骤:
- 检查客户端 IP 是否在 IP 白名单中
- 检查防火墙规则是否允许访问
- 检查数据库服务是否在正确的端口上运行
- 检查网络连接是否正常
- 检查用户权限是否足够
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 白名单
- 分层访问控制:在不同层级配置访问控制,减轻单一层级的压力
