新同事用只读账号登录 Nacos 控制台,直接看到 spring.datasource.password 的明文,配置详情页没有脱敏,审计里也没有查看记录。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

curl -s 'http://nacos:8848/nacos/v1/cs/configs?dataId=app-prod.yaml&group=DEFAULT_GROUP' | grep -i password
grep -n 'ENC(' src/main/resources/bootstrap.yml

配置中心只做了存储没有做加密,权限模型又只分读写不分敏感字段。密码和普通开关放在同一个 dataId 里。控制台默认展示原始内容,没有掩码。这一点先确认清楚,后面就不用反复试。

「配置中心明文」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

具体做法是,用配置中心的加密功能或 jasypt 把密码加密后存 ENC 开头;按 dataId 拆分 把敏感配置放到单独命名空间并收权限;开启配置变更和查看的审计日志;用只读账号再登一次确认看不到明文。

改完照着核一遍,接口返回的密码是 ENC 开头 只读账号打开配置详情看到掩码。

作者 9823189