9.10.8 安全加固与合规要求

安全加固与合规要求需围绕访问控制、数据安全、网络隔离、审计留痕与运维流程建立体系化措施,确保 Nacos 在生产环境中可控、可追溯、可审计。本节给出可落地的实践要点、架构草图、安装配置、排错与练习。

原理草图:安全与合规控制面

文章图片

1. 账号与权限控制(含安装与配置示例)
- 目标:启用鉴权、最小权限、角色分离。
- 安装/启用:在 Nacos application.properties 中启用权限与自定义密钥。

# 假设 Nacos 安装目录 /opt/nacos
cd /opt/nacos/conf
cp application.properties application.properties.bak

# 编辑配置启用鉴权
cat >> application.properties <<'EOF'
# 开启鉴权
nacos.core.auth.enabled=true
# JWT 密钥(示例,生产需替换)
nacos.core.auth.server.identity.key=auth-key
nacos.core.auth.server.identity.value=auth-value
# 自定义 token 过期时间(分钟)
nacos.core.auth.default.token.expire.seconds=1800
EOF

# 重启 Nacos
/opt/nacos/bin/shutdown.sh
/opt/nacos/bin/startup.sh -m standalone
  • 账号生命周期与角色划分:
  • 管理员:admin
  • 配置发布者:config_writer
  • 只读用户:config_reader
  • 审计用户:audit_viewer
# 示例:通过 API 创建用户与角色(需管理员 token)
# 1) 登录获取 token
curl -s "http://127.0.0.1:8848/nacos/v1/auth/login" \
  -d "username=nacos&password=nacos" | jq -r .accessToken

# 2) 创建用户
TOKEN="替换为上一步token"
curl -s -X POST "http://127.0.0.1:8848/nacos/v1/auth/users" \
  -d "username=config_writer&password=Str0ngPwd!" \
  -H "Authorization: Bearer $TOKEN"

# 3) 分配角色(示例使用内置接口)
curl -s -X POST "http://127.0.0.1:8848/nacos/v1/auth/roles" \
  -d "role=config_writer&username=config_writer" \
  -H "Authorization: Bearer $TOKEN"

命令解释
- nacos.core.auth.enabled=true:开启鉴权。
- Authorization: Bearer $TOKEN:携带登录 token 进行授权操作。

2. 数据安全与加密(含配置示例与预期效果)
- 目标:敏感配置加密存储与脱敏展示,传输启用 TLS。

# 示例:配置 HTTPS(Nacos 2.x)
# 1) 生成证书(自签示例)
mkdir -p /opt/nacos/ssl && cd /opt/nacos/ssl
openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 -keyout server.key -out server.crt \
  -subj "/C=CN/ST=BJ/L=BJ/O=Ops/OU=Sec/CN=nacos.local"

# 2) application.properties 添加 HTTPS
cat >> /opt/nacos/conf/application.properties <<'EOF'
server.ssl.enabled=true
server.ssl.key-store=classpath:ssl/server.p12
server.ssl.key-store-password=changeit
server.ssl.key-store-type=PKCS12
EOF

# 3) 转换证书为 p12 并拷贝到 nacos classpath
openssl pkcs12 -export -out /opt/nacos/conf/ssl/server.p12 \
  -inkey /opt/nacos/ssl/server.key -in /opt/nacos/ssl/server.crt \
  -password pass:changeit

预期效果
- 控制台与 API 强制使用 https:// 访问,禁用明文传输。

3. 网络隔离与访问控制(含防火墙示例)
- 目标:内网访问、白名单、最小暴露端口。

# 示例:仅允许内网 10.0.0.0/16 访问 8848
# 以 firewalld 为例
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="10.0.0.0/16"
port protocol="tcp" port="8848" accept'
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
port protocol="tcp" port="8848" drop'
firewall-cmd --reload

命令解释
- 先放行内网段访问,再默认拒绝其他来源访问。

4. 审计与合规要求(含日志留存与示例)
- 目标:审计配置变更、权限调整、服务注册;日志留存合规。

# 示例:启用审计日志目录与切割
mkdir -p /var/log/nacos/audit
cat >> /opt/nacos/conf/application.properties <<'EOF'
# 日志目录
logging.file.path=/var/log/nacos
# 配置变更历史保留(示例:30天)
nacos.config.retention=30
EOF

# 示例:logrotate 保留 12 个月
cat > /etc/logrotate.d/nacos <<'EOF'
/var/log/nacos/*.log {
  daily
  rotate 365
  compress
  missingok
  notifempty
  copytruncate
}
EOF

预期效果
- 关键日志可检索、可追溯,满足 6~12 个月留存要求。

5. 安全基线与漏洞管理(含版本检查与升级示例)

# 查看 Nacos 版本
curl -s http://127.0.0.1:8848/nacos/v1/console/server/state | jq -r .version

# 预下载新版本(示例)
cd /opt
wget https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz
tar -zxvf nacos-server-2.2.3.tar.gz

命令解释
- server/state 返回运行状态和版本,用于对照安全公告。

6. 数据库最小权限与备份(含建库与备份示例)

-- MySQL 最小权限示例
CREATE USER 'nacos'@'10.0.%' IDENTIFIED BY 'Str0ngPwd!#';
CREATE DATABASE nacos_config CHARACTER SET utf8mb4;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,INDEX,ALTER ON nacos_config.* TO 'nacos'@'10.0.%';
FLUSH PRIVILEGES;
# 备份示例(每日定时)
mkdir -p /backup/nacos
mysqldump -h 10.0.0.10 -u nacos -p'Str0ngPwd!#' nacos_config \
  | gzip > /backup/nacos/nacos_config_$(date +%F).sql.gz

7. 排错清单(针对安全与合规)
- 无法登录/鉴权失败
- 检查 nacos.core.auth.enabled 是否为 true
- 查看 /var/log/nacos/nacos.log 是否出现 token expired
- HTTPS 访问失败
- 检查 server.ssl.* 配置是否生效,证书路径是否存在。
- 使用 openssl s_client -connect nacos.local:8848 验证证书。
- 无法访问控制台
- 查看防火墙是否放行 8848 内网段。
- ss -lntp | grep 8848 确认端口监听。

8. 练习与自检
1) 开启鉴权后创建只读用户,验证其无法发布配置。
2) 启用 HTTPS 后,使用 curl https:// 拉取配置,验证明文 http:// 被拒绝。
3) 将防火墙白名单设置为单一运维网段,验证非白名单无法访问。
4) 模拟配置误修改,使用历史版本回滚并在审计日志中检索变更记录。

9. 安全实践检查清单(巡检可用)
- 是否启用鉴权与 HTTPS
- 是否禁用默认账号与弱口令
- 是否设置访问白名单与网络隔离
- 是否开启操作审计与日志留存
- 是否对敏感配置加密与脱敏
- 是否定期备份与演练恢复
- 是否跟进版本安全公告并及时升级