跳到主要内容

安全最佳实践

ZHub 安全配置和最佳实践指南,帮助您构建安全的分布式系统。

认证和授权

启用权限验证

服务端配置

# app.ini - 生产环境配置
[service]
auth=1 # 生产环境必须开启连接授权
重要安全提醒

生产环境强烈建议开启权限验证

  • 关闭权限验证 (auth=0) 意味着任何客户端都可以无限制访问所有主题
  • 即使在内网环境,也存在内部威胁、误操作、配置错误等风险
  • 仅在完全隔离的开发测试环境可考虑关闭权限验证

客户端配置

// 使用认证令牌连接
ZHubClient zhub = new ZHubClient(
"127.0.0.1:1216",
"group1",
"app1",
"your-secure-token"
);

权限配置

最小权限原则

# auth.yml
users:
- id: 1
username: "user-service"
password: "secure-password"
status: "active"
groups: ["user-service"]
reads: ["user.*"] # 只读用户相关主题
writes: ["user.*"] # 只写用户相关主题

- id: 2
username: "order-service"
password: "secure-password"
status: "active"
groups: ["order-service"]
reads: ["order.*", "user.basic.*"] # 只读订单和用户基础信息
writes: ["order.*"] # 只写订单相关主题

权限隔离

# 不同团队权限隔离
groups:
- name: "user-team"
description: "用户服务团队"
reads: ["user.*"]
writes: ["user.*"]

- name: "order-team"
description: "订单服务团队"
reads: ["order.*", "user.basic.*"]
writes: ["order.*"]

- name: "admin-team"
description: "管理员团队"
reads: ["*"]
writes: ["*"]

网络安全

网络隔离

内网部署

# app.ini - 只监听内网地址
[service]
watch=192.168.1.100:711 # 管理端口只监听内网
addr=192.168.1.100:1216 # 服务端口只监听内网

防火墙配置

# 只允许内网访问
iptables -A INPUT -p tcp --dport 1216 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 711 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 1216 -j DROP
iptables -A INPUT -p tcp --dport 711 -j DROP

监控

基础监控

服务状态监控

# 检查服务状态
curl http://127.0.0.1:711/_/info

# 检查权限配置
curl http://127.0.0.1:711/auth/reload

最佳实践

安全配置检查清单

  • 启用认证和授权 (auth=1)
  • 配置最小权限原则
  • 实施网络隔离
  • 启用访问日志
  • 定期安全审计

定期维护

  • 定期检查权限配置
  • 定期更新认证令牌
  • 监控服务状态和连接情况