# Nacos 注册与配置中心测评

> Nacos 注册中心/配置中心三级等保现场测评取证命令单：按控制点组织版本与部署形态、application.properties 鉴权核查（nacos.core.auth.enabled 默认 false、auth.admin/console 开关、token.secret.key 与 server.identity 默认空值风险）、控制台默认账户与权限管理、命名空间与配置历史审计、gRPC 端口 9848/9849 与暴露面、derby 与外置 MySQL 账号与 ssl、配置备份与集群 cluster.conf、明文凭据与个人信息脱敏，附判定要点、示例输出与版本差异核验说明。

---

LLMS index: [llms.txt](/wikis/llms.txt)

---

> 定位：Nacos（服务注册发现 + 动态配置管理）三级等保现场测评**取证命令单**，按 GB/T 22239-2019 安全计算环境控制点分节组织核查命令、判定要点与取证要求。
> 适用范围：Nacos 2.x / 3.x（以单机 derby 与集群外置 MySQL 两种主流部署为基准；本文配置项与默认值核验自官方 `distribution/conf/application.properties`）。
> 配套文章：[Kubernetes 容器编排平台测评](../kubernetes/)（微服务底座联动）、[Consul 注册与配置中心测评](../consul/)（同类注册中心对照）、[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)、[17、网络设备、安全设备、服务器、数据库和应用系统的加固方案](../../../reinforce/其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)。
>
> 使用说明：
>
> - 本文所有命令均为**只读取证**命令，不修改配置、不重启服务、不执行清除类操作；确需变更由被测单位运维方在授权下实施。
> - 每个控制点小节按「对应控制点 → 判定要点 → 取证要求 → 核查命令 → 备注 → 预期证据」编排；命令回显本身即证据，须连同命令行一起截图。
> - Nacos 鉴权体系跨大版本变动较大（`nacos.core.auth.*` 与 3.x 新增 `nacos.plugin.auth.*`/`nacos.core.auth.admin|console.enabled` 并存），核查前务必先确认版本，按版本对应键名取证，**不得据命令缺失直接判不符合**。
> - 示例输出中的地址、账户、口令均为演示值，现场须替换为真实取证结果并对涉及个人信息与内网管理地址的内容脱敏后再入报告。
>
> 不适用标识说明：
>
> - 使用 `【不适用】` 明确标记现场可判定为不适用的控制点。
> - 判定依据采用 GB/T 28448-2019"按测评对象实际功能、是否直接处理数据、是否具备该类安全机制判定"的原则；Nacos 保存服务注册信息与配置数据（配置内容可能含凭据与个人信息），业务应用的身份与数据控制点转由应用/数据库测评单元核查。

## 基础信息

> **对应控制点**：非独立控制点（测评对象与资产确认）；集群多节点部署佐证 8.1.2.1 网络架构 e) 关键设备冗余
>
> **判定要点**：版本、安装路径、运行账户、监听端口、部署形态（单机 derby/集群外置 MySQL、集群节点数）五项均可取证且与实际架构一致 → 符合；无法确认 → 部分符合。
>
> **取证要求**：版本与安装目录截图、进程与运行用户截图、`ss -lntp` 端口截图、conf 目录与启动参数截图、集群节点清单截图。

**核查命令**：

```bash
sh /path/to/nacos/bin/startup.sh -h 2>/dev/null | head -n 12
ls -l /home/nacos/ /path/to/nacos/conf/application.properties
ps -ef | grep [n]acos | head -n 3
ss -lntp | grep java | grep -E "8848|9848|9849"
grep -nE "^nacos.server.main.port|^nacos.server.contextPath" /path/to/nacos/conf/application.properties
cat /path/to/nacos/conf/cluster.conf 2>/dev/null
```

- 备注：`nacos.server.main.port` 默认 8848、`nacos.server.contextPath` 默认 /nacos（官方配置模板核验）；2.x 起客户端 gRPC 端口为主端口偏移（默认 9848/9849），须结合现场 `ss -lntp` 实测确认，防火墙/负载均衡同步放行与管控。
- 预期证据：版本截图、端口清单截图、cluster.conf 截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ ps -ef <span class="p">|</span> grep <span class="o">[</span>n<span class="o">]</span>acos
</span></span><span class="line"><span class="cl">nacos  <span class="m">1101</span>  <span class="m">1</span>  <span class="m">8</span> Aug23 ?  01:12:03 /usr/local/jdk/bin/java -jar .../nacos/target/nacos-server.jar --config.location<span class="o">=</span>...
</span></span><span class="line"><span class="cl">$ ss -lntp <span class="p">|</span> grep <span class="m">88</span>
</span></span><span class="line"><span class="cl">LISTEN <span class="m">0</span> <span class="m">100</span> *:8848  users:<span class="o">((</span><span class="s2">&#34;java&#34;</span>,pid<span class="o">=</span>1101<span class="o">))</span>
</span></span><span class="line"><span class="cl">LISTEN <span class="m">0</span> <span class="m">100</span> *:9848  users:<span class="o">((</span><span class="s2">&#34;java&#34;</span>,pid<span class="o">=</span>1101<span class="o">))</span>
</span></span><span class="line"><span class="cl">$ cat conf/cluster.conf
</span></span><span class="line"><span class="cl">192.168.10.11:8848
</span></span><span class="line"><span class="cl">192.168.10.12:8848
</span></span><span class="line"><span class="cl">192.168.10.13:8848
</span></span></code></pre></div>
</details>


## 身份鉴别

> **对应控制点**：GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)
>
> **判定要点**：控制台（/v3/console、/nacos 旧版）登录启用且非默认口令、API 鉴权开关 `nacos.core.auth.enabled=true`（官方模板默认 false，**默认值即高风险项**）、令牌密钥 `token.secret.key` 与 `server.identity` 非默认/非空、口令复杂度与有效期由账户体系或统一认证承载、管理入口限内网 → 符合；控制台可登录但 API 鉴权未开 → 部分符合；匿名可读写配置/注册 → 不符合（高风险）。
>
> **取证要求**：application.properties 鉴权段截图（密钥脱敏）、控制台无凭据访问被拒实测、登录界面默认账户尝试记录（经授权）、统一认证/SSO 对接证据。

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">高风险提示</div>


`nacos.core.auth.enabled=false`（官方模板默认值）且 8848 对非可信网段开放时，攻击者可匿名读写全部命名空间配置——Nacos 配置中普遍存放数据库口令、密钥与连接串，等同凭据库完全暴露，按《高风险判定指引》（2025版）直接判高风险。2.x 早期版本同时保留过默认 `token.secret.key`（固定示例串）与默认 `server.identity`（example 类占位值）导致的鉴权绕过历史漏洞（官方安全公告与通用漏洞库均有披露），现场必须核查密钥是否已更换为随机值。
判定口径详见 [联盟团标-网络安全等级保护测评高风险判定指引（2025版）](../../../gradeprotectionwiki/联盟团标-网络安全等级保护测评高风险判定指引2025版/)（对应 2025 版判例 6.4.1.1、6.4.3.1、6.4.3.2）。
</div>


### A. 服务端鉴权配置

**核查命令**：

```bash
grep -nE "nacos.core.auth.enabled|nacos.core.auth.admin.enabled|nacos.core.auth.console.enabled|nacos.plugin.auth.type" /path/to/nacos/conf/application.properties
grep -nE "token.secret.key|server.identity" /path/to/nacos/conf/application.properties | sed -E 's/(=).{6,}/=****/'
```

- 备注：官方配置模板（develop 分支核验）默认值为 `nacos.core.auth.enabled=false`、`nacos.core.auth.admin.enabled=true`、`nacos.core.auth.console.enabled=true`，`token.secret.key` 与 `server.identity.key/value` **默认为空**；3.x 起推荐键 `nacos.plugin.auth.nacos.token.secret.key`（Base64 强随机），旧键由启动脚本迁移——现场按版本取对应键。
- 预期证据：鉴权键值截图（密钥脱敏）。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ grep -nE <span class="s2">&#34;auth.enabled|token.secret.key|server.identity&#34;</span> conf/application.properties
</span></span><span class="line"><span class="cl">nacos.core.auth.enabled<span class="o">=</span><span class="nb">true</span>
</span></span><span class="line"><span class="cl">nacos.core.auth.admin.enabled<span class="o">=</span><span class="nb">true</span>
</span></span><span class="line"><span class="cl">nacos.core.auth.console.enabled<span class="o">=</span><span class="nb">true</span>
</span></span><span class="line"><span class="cl">nacos.core.auth.server.identity.key<span class="o">=</span>opsid
</span></span><span class="line"><span class="cl">nacos.core.auth.server.identity.value<span class="o">=</span>****          <span class="c1"># 非默认随机值</span>
</span></span><span class="line"><span class="cl">nacos.plugin.auth.nacos.token.secret.key<span class="o">=</span>****       <span class="c1"># Base64 随机密钥，非空非示例</span>
</span></span></code></pre></div>
</details>


### B. 控制台账户与口令策略

**核查命令**：

```bash
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8848/nacos/v1/console/namespaces        # 匿名读命名空间实测（经授权）
grep -nE "^spring.sql.init|^nacos.plugin.datasource.db.url" /path/to/nacos/conf/application.properties
```

- 备注：控制台/用户数据存于内嵌 derby（`data/derby-data`）或外置 MySQL（`config_info`/`users`/`roles`/`permissions` 表，表名见官方初始化 SQL）；历史版本内置默认账户（常见 `nacos/nacos`）2.2 起版本要求初始化口令——现场以登录实测为准，默认口令未改判不符合；口令复杂度与有效期无原生参数，由账户治理制度与统一认证补偿判定。
- 【不适用】Nacos 仅作为微服务内部注册配置组件、无独立交互账户体系（统一经 SSO/OAuth 对接）时，本地口令复杂度项不适用并注明。
- 预期证据：匿名访问 401/200 实测截图、users 表（或控制台权限管理页）截图。

## 访问控制

> **对应控制点**：GB/T 22239-2019 8.1.4.1 d)（组合鉴别）、8.1.4.2 访问控制 a)~f)
>
> **判定要点**：命名空间（tenant）按业务/环境隔离且授权到角色、管理面仅运维网段可达、角色权限非全局 admin 滥用、gRPC 端口不对公网开放、服务与配置读写权限分离 → 符合；有用户但未按命名空间授权、管理面对业务网段开放 → 部分符合；匿名可访问 → 不符合。
>
> **取证要求**：命名空间/分组清单、角色与用户授权截图、管理端口防火墙策略截图。

**核查命令**：

```bash
curl -s -u demo:*** 'http://127.0.0.1:8848/nacos/v1/console/namespaces' | head -c 400   # 经授权只读
ss -lntp | grep -E "8848|9848"
iptables -S 2>/dev/null | grep -E "8848|9848"; nft list ruleset 2>/dev/null | grep -E "8848|9848"
```

- 备注：控制台「权限控制」页核查 用户-角色（admin/reader/writer）-命名空间 三元授权；命名空间即租户边界（配置与服务列表按 namespaceId 隔离）。
- 预期证据：命名空间与授权清单截图、端口策略截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ curl -s -u demo:*** <span class="s1">&#39;.../v1/console/namespaces&#39;</span> <span class="p">|</span> python3 -m json.tool <span class="p">|</span> head -n <span class="m">14</span>
</span></span><span class="line"><span class="cl"><span class="o">{</span> <span class="s2">&#34;code&#34;</span>: 200, <span class="s2">&#34;data&#34;</span>: <span class="o">[</span>
</span></span><span class="line"><span class="cl">  <span class="o">{</span><span class="s2">&#34;namespace&#34;</span>:<span class="s2">&#34;&#34;</span>,<span class="s2">&#34;namespaceShowName&#34;</span>:<span class="s2">&#34;public&#34;</span>,<span class="s2">&#34;configCount&#34;</span>:3<span class="o">}</span>,
</span></span><span class="line"><span class="cl">  <span class="o">{</span><span class="s2">&#34;namespace&#34;</span>:<span class="s2">&#34;demo-app&#34;</span>,<span class="s2">&#34;namespaceShowName&#34;</span>:<span class="s2">&#34;生产-订单中心&#34;</span>,<span class="s2">&#34;quota&#34;</span>:1000,<span class="s2">&#34;configCount&#34;</span>:47<span class="o">}</span>
</span></span><span class="line"><span class="cl"><span class="o">]}</span>
</span></span></code></pre></div>
</details>


## 安全审计

> **对应控制点**：GB/T 22239-2019 8.1.4.3 安全审计 a)~d)
>
> **判定要点**：配置变更留痕（控制台「历史版本」可查且受保留策略约束）、访问日志（access.log）启用并外送、日志留存不少于 6 个月、审计记录含账户/时间/操作对象/结果 → 符合；仅 derby/MySQL 数据无访问日志外送、留存不足 → 部分符合；完全无审计 → 不符合。
>
> **取证要求**：历史版本页样例截图、logs 目录清单与关键字段截图、rsyslog/采集器外送证据、最早日志时间戳。

**核查命令**：

```bash
ls -l /path/to/nacos/logs/ | grep -E "nacos-cluster|config-|naming-|access"
tail -n 5 /path/to/nacos/logs/access_log.log 2>/dev/null || tail -n 5 /path/to/nacos/logs/core.log
grep -n "history\|keepDays\|capacity" /path/to/nacos/conf/application.properties | head
grep -rE "nacos" /etc/rsyslog.d/ 2>/dev/null
```

- 备注：Nacos 无独立"审计员"角色——审计记录由管理员账户在控制台/日志侧管理，判定时与三权分立联动记录补偿证据；配置历史（`his_config_info` 表/历史版本界面）是配置变更追溯核心； derby/MySQL 侧变更可经数据库审计系统覆盖。
- 预期证据：历史版本截图、日志样例截图、外送配置截图。


<details class="td-details"><summary>示例输出（节选）</summary><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ ls /path/to/nacos/logs/
</span></span><span class="line"><span class="cl">config-dump.log  config-fatal.log  config-pull-check.log  naming-server.log
</span></span><span class="line"><span class="cl">access_log.log   core.log          remote.log             start.log
</span></span><span class="line"><span class="cl">$ tail -n <span class="m">2</span> logs/access_log.log
</span></span><span class="line"><span class="cl">192.168.10.31 GET /nacos/v1/cs/configs?dataId<span class="o">=</span>order-db.yml<span class="p">&amp;</span><span class="nv">group</span><span class="o">=</span>PROD<span class="p">&amp;</span><span class="nv">tenant</span><span class="o">=</span>demo-app <span class="m">200</span> 4ms 2026-09-01 10:22:31
</span></span></code></pre></div>
</details>


## 入侵防范

> **对应控制点**：GB/T 22239-2019 8.1.4.4 入侵防范 a)~h)、8.1.4.5 恶意代码防范
>
> **判定要点**：版本在官方支持线且有补丁跟踪（alibaba/nacos Releases 与安全公告）、高危端点（Derby 数据库引擎、ServerLoader、用户创建接口等历史利用面）版本已修复、暴露面仅管理/业务网段、jar 与配置完整、部署依赖（JDK）版本受控 → 符合；有缺口但有 WAF/RASP/网络隔离补偿且证据齐全 → 部分符合；公网可访且鉴权关闭 → 不符合（高风险）。
>
> **取证要求**：版本与支持状态截图、漏扫与整改记录、端口与策略截图、JDK 版本截图。

**核查命令**：

```bash
grep -m1 "nacos.version" /path/to/nacos/target/nacos-server.jar 2>/dev/null || echo "以控制台关于页为准"
ls -l /path/to/nacos/target/nacos-server.jar
java -version
ss -lntp | grep -E "8848|9848|9849" | wc -l
```

- 备注：Derby 内嵌库仅建议测试用途（官方文档口径）——生产使用 derby 时数据库层无独立访问控制，须以外置 MySQL + 主机防火墙补偿；集群通信（8847/raft、节点间端口）按 cluster.conf 核对。
- 预期证据：版本/完整性截图、策略截图、公告跟踪记录。

## 数据完整性

> **对应控制点**：GB/T 22239-2019 8.1.4.7 数据完整性 a)b)

**核查命令**：

```bash
grep -nE "spring.sql.init.platform|db.num|db.url|db.user" /path/to/nacos/conf/application.properties | sed -E 's/(pass|pwd).*/\1=****/i'
curl -s 'http://127.0.0.1:8848/nacos/v1/ns/operator/metrics' | head -c 200
```

- 备注：配置持久化在外置 MySQL（生产推荐，官方模板 datasource 段）或内嵌 derby；集群节点数据一致性由 Raft/共识保证；变更完整性依赖历史版本 + MD5 校验（配置详情含 md5）。核查数据库口令存放形态与 `conf` 目录权限。
- 预期证据：datasource 配置截图（脱敏）、节点状态截图。

## 数据保密性

> **对应控制点**：GB/T 22239-2019 8.1.4.8 数据保密性 a)b)

**核查命令**：

```bash
grep -nE "db.password|token.secret.key|server.identity.value" /path/to/nacos/conf/application.properties | sed -E 's/=.*/=****（已核验存在）/'
grep -c "encrypted.dataId\|cipher-" /path/to/nacos/conf/application.properties 2>/dev/null
stat -c "%a %U:%G %n" /path/to/nacos/conf/application.properties
```

- 备注：Nacos 客户端到服务端传输默认 HTTP 明文（官方支持 HTTPS 经 Nginx 反代或 gRPC 通道）；配置内容中的数据库口令等敏感项应使用配置加密能力（加密 dataId/插件，按版本核验）或 KMS 外置——明文存凭据判部分符合并给补偿；`conf` 文件含 DB 口令须 600。
- 【不适用】纯内网回环部署且经反代 TLS 终结时，组件层加密项按边界判定注明。
- 预期证据：文件权限截图、反代 TLS 配置截图。

## 备份恢复

> **对应控制点**：GB/T 22239-2019 8.1.4.9 数据备份恢复 a)b)c)

**核查命令**：

```bash
ls -ld /path/to/nacos/data/ /path/to/nacos/conf/
ls -l /backup/nacos/ 2>/dev/null | tail -n 3
grep -n "db.backup\|定时备份" /path/to/nacos/conf/application.properties
```

- 备注：derby 模式下 `data/derby-data` 目录+`conf/` 为恢复对象；外置 MySQL 模式以数据库备份为准（转数据库测评单元联动）；恢复演练：停服替换 derby 数据目录或重建库导入后验证命名空间/配置/服务注册计数一致。
- 预期证据：备份清单与恢复演练记录。

## 剩余信息保护

> **对应控制点**：GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)

**核查命令**：

```bash
ls /path/to/nacos/data/upgrade 2>/dev/null; du -sh /path/to/nacos/logs /path/to/nacos/data
grep -nE "history.*days|maxLen" /path/to/nacos/conf/application.properties
```

- 备注：历史配置与退役命名空间的残留凭据、升级备份文件、过期日志（轮转与清理策略）为核查焦点；清退环境（测试命名空间/下线服务）定期 purge 并留痕。
- 预期证据：清理策略与记录截图。

## 个人信息保护

> **对应控制点**：GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)

- 【不适用/部分符合】Nacos 平台层不直接处理个人信息；但配置项可能含账号/手机号等字段——核查配置内容管控规范（禁止明文 PII、凭据加密）与命名空间访问权限是否收敛到最小，日志/历史中的配置值是否脱敏导出；不处理时按数据流说明判定不适用并转应用层测评。
- 预期证据：配置管理规范、命名空间权限矩阵、导出脱敏说明。

## 参考依据

- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》（8.1.4 安全计算环境）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》（单元测评实施与结果判定）：[http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)
- Nacos 官方发布仓库（alibaba/nacos——`distribution/conf/application.properties` 鉴权/数据源/端口键与默认值逐条核验；Releases 页为版本与支持状态依据）：[https://github.com/alibaba/nacos](https://github.com/alibaba/nacos)
- Nacos 官方站点（部署/鉴权/权限文档入口）：[https://nacos.io/](https://nacos.io/)
- 《网络安全等级保护测评高风险判定指引》（中关村信息安全测评联盟团体标准），站内对照表：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
- 命令核验说明：本文命令与配置项已于 2026-09 对照官方仓库 `distribution/conf/application.properties`（develop 分支）核验：`nacos.core.auth.enabled=false`（默认关）、`auth.admin/console.enabled=true`、`token.secret.key` 与 `server.identity.*` 默认空值（3.x 新键 `nacos.plugin.auth.nacos.token.secret.key`、旧键迁移）均取自模板原文；三处须留意：① 2.x/3.x 鉴权键名并存迁移，核查以现场版本对应键为准，不得据键缺失直接判不符合；② gRPC 端口偏移（9848/9849）与集群 raft 端口以现场 `ss -lntp` 实测与官方部署文档为准，配置模板中不直接出现；③ 默认账户口令历史版本曾为内置（nacos/nacos），2.2+ 版本首启要求设置初始口令——现场以登录与升级说明实测；Derby 内嵌库仅限测试用途为官方文档长期口径，生产 derby 判部分符合并记录数据库侧补偿。

## 关联文章

- 微服务底座：[Kubernetes 容器编排平台测评](../kubernetes/)、[Docker 容器运行平台测评](../docker/)、[Elasticsearch 搜索与分析平台测评](../elasticsearch/)
- 消息与协调：[Apache Kafka 消息中间件测评](../kafka/)、[Apache ZooKeeper 协调服务测评](../zookeeper/)、[RabbitMQ 消息中间件测评](../rabbitmq/)
- 网关与负载：[Nginx 中间件测评](../nginx/)、[HAProxy 负载均衡器测评](../haproxy/)、[Keepalived 高可用组件测评](../keepalived/)
- 现场指引：[现场使用总指引（中间件与容器）](../现场指引/现场使用总指引中间件与容器/)
- 板块目录：[中间件与容器](../)
- 配套加固：[30、注册中心与负载均衡加固](../../../reinforce/系统管理软件平台/30注册中心与负载均衡加固/)、[17、加固方案总纲](../../../reinforce/其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)
- 取证记录：[16、安全评估加固记录表3.0](../../../reinforce/其他系统或设备/16安全评估加固记录表3.0/)
- 高风险口径：[22、高风险判定指引与加固对照表](../../../reinforce/其他系统或设备/22高风险判定指引与加固对照表/)
