# 32、大数据平台加固

> Hadoop 生态大数据平台（HDFS/YARN + Hive + HBase，Kafka/ZooKeeper 转关联篇）等保三级安全加固手册：按 Apache 官方默认值逐项核验的加固链——Kerberos 认证开启（core-site 默认 simple）、授权体系开启（hadoop.security.authorization 默认 false）、Apache Ranger 细粒度授权与审计、HiveServer2 认证（默认 NONE）与 TLS、HBase 认证授权（官方默认 false 原文核验）、RPC/Data 加密与 HTTPS（dfs.http.policy 默认 HTTP_ONLY）、透明加密（hdfs crypto -createZone 实测语法）、端口收敛、审计外送与留存不少于 6 个月、备份与高可用，以及 Kerberos 开启的全链路变更顺序与回滚预案；附官方默认值与加固值速查表、命令核验说明。

---

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

---

> 定位：大数据平台（Hadoop 生态，HDFS/YARN + Hive + HBase 为本篇主体，Kafka/ZooKeeper 转关联篇）等保三级安全加固手册。核心矛盾：大数据平台出厂默认即"裸奔"——`hadoop.security.authentication` 默认 `simple`（客户端自报身份）、`hadoop.security.authorization` 默认 `false`、`hive.server2.authentication` 默认 `NONE`、`dfs.http.policy` 默认 `HTTP_ONLY`（以上默认值均于 2026-09 对照 Apache 官方文件逐字核验），多数集群上线即"未认证 + 未授权 + 未加密"。
>
> 适用版本：Apache Hadoop 3.x 主线（core-default.xml / hdfs-default.xml 以官方 stable/current 文档为准）与主流发行版（CDH/HDP、星环、华为 MRS 等，界面项与配置路径以发行版控制台为准，正文给出 Apache 社区默认值与通用命令）。
> 配套测评：[大数据平台（Hadoop/Hive/HBase）测评](../../../gradeProtection/系统管理软件平台/大数据平台测评/)、[Apache Kafka 消息中间件测评](../../../gradeProtection/中间件与容器/kafka/)、[Apache ZooKeeper 协调服务测评](../../../gradeProtection/中间件与容器/zookeeper/)——本册加固动作与该三篇测评篇的判定口径逐项衔接；Kafka、ZooKeeper 在本册仅做关联提示，不重复取证。
>
> 使用说明：
>
> - 本文为**加固操作手册**：`kinit`、`klist`、`hdfs dfs -ls` 以及下方标注"只读"的命令为核查命令；标注「加固操作」的段落（修改配置文件、滚动重启、建主体提票据、快照等）均属变更，执行前须完成变更审批、备份 `core-site.xml`、`hdfs-site.xml`、`hive-site.xml`、`hbase-site.xml` 与 KDC（或 AD）数据库，并保留一条不经集群服务可用的验证通道（节点 IP 直连、带外控制台）。涉及防火墙、KDC、Ranger 的变更同步申报。
> - 先在测试环境或集群少量节点灰度整套方案：Kerberos 开启前先为全部组件与客户端分配主体和对应密钥，再改开关，否则各组件相互认证失败、集群整体不可用——这是大数据加固最高频翻车点，详见第 9 节强制变更链。
> - 示例中的主机名、主体、口令、路径均为演示值（`hdfs/demo01@EXAMPLE.COM`、`/demo-path`），现场须按实际环境替换或脱敏后留存，**严禁直接沿用示例口令与示例主体**。
> - 命令回显与本文不一致时，先按发行版与部署形态（Apache/CDH/MRS、完全分布式/K8s）确认 JSON 属性名，再换用等效命令与配置路径；**版本差异不得直接作为"无法整改"的依据**，须给出替代施与判定说明（见第 11 节速查表与命令核验说明）。
> - 完成实施后按「16、安全评估加固记录表3.0」留痕并纳入复测，判定口径以 GB/T 28448-2019 与站内《高风险判定指引》为准。
>
> 不适用标识说明：
>
> - 组件未部署，或该能力由上位组件承载（云托管大数据服务、既有统一 AD/KDC、统一日志平台、Ranger 之外的企业权限平台）时，使用 `【不适用】` 标注并写明承载边界与判定依据，不得直接判不符合；同一授权能力在"组件原生"与"Ranger"两套实现中只计一次。

## 测评项对照表

| 控制点（GB/T 22239-2019 三级安全计算环境） | 对应章节 |
| --- | --- |
| 身份鉴别 8.1.4.1：Kerberos 开启、服务/用户主体与 keytab、HTTP 单点认证 | 01、03、04 |
| 访问控制 8.1.4.2：`hadoop.security.authorization`、Ranger 细粒度、超级组、ACL | 02、03、04 |
| 安全审计 8.1.4.3：Ranger/HDFS/Hive/HBase 审计、留存不少于 6 个月、时间同步 | 07 |
| 入侵防范 8.1.4.4：版本台账与补丁、暴露面收敛 | 00、06 |
| 数据完整性/保密性 8.1.4.7、8.1.4.8、8.1.1.2：RPC/Data 传送加密、Web HTTPS、透明加密 | 05 |
| 数据备份恢复 8.1.4.9：NameNode HA 与元数据外拷、快照、Metastore DB | 08 |
| 剩余信息/个人信息保护 8.1.4.10、8.1.4.11：退役节点、留存与清理、脱敏 | 10 |

## 00 版本与支持线基线

> **对应控制点**：8.1.4.4 入侵防范 a) b)（最小安装、及时修补）
>
> **加固要点**：建立组件版本台账（hadoop/hive/hbase/ranger、ZooKeeper 转关联篇）并与官方支持线对照：Apache Hadoop Releases 页（[release.html](https://hadoop.apache.org/release.html)，2026-09 可访问）与 Hive/HBase 兼容矩阵；发行版（CDH/MRS/HDP）以发行商支持公告为准；组件版本组合须在同一兼容窗口（Hive↔Hadoop、HBase↔Hadoop），混搭版本属风险项。
>
> **验证方法**：版本回显与官方支持页对照、补丁/升级台账、漏洞整改记录。

**核查命令**

```bash
hadoop version | head -n 3              # HDFS/YARN 版本
hive --version 2>/dev/null | head -n 2  # Hive 版本（部分发行版无此命令，以控制台为准）
hbase version 2>/dev/null | head -n 2   # HBase 版本
ss -lntp | grep -E "8020|9870|9088|10000|16010|9083" | head -n 12   # 端口与服务对应（默认端口实测）
# 备注：默认端口 8020/9870/10000/16010/9083 为社区默认，发行版以 ss 实测为准
```

- 预期现象：版本台账齐全且位于支持窗口（或升级计划）；端口分布与架构一致。

## 01 Kerberos 系统级认证开启（第一优先级）

> **对应控制点**：8.1.4.1 a)~d)（管理面与数据面的双向侦察）
>
> **加固要点**：`hadoop.security.authentication` 默认 `simple`（服务端信任客户端自称身份，可任意冒充）——收敛为 `kerberos` 是本节第一优先级：
>
> - `hadoop.security.authentication=kerberos`，全部组件（HDFS/YARN/Hive/HBase 及插件）统一接入现有 KDC（MIT krb5 /Window AD / FreeIPA 选一，组件侧只做接入，不重建第二套 KDC）；
> - 服务主体按角色建立（NameNode、DataNode、ResourceManager、NodeManager、HiveServer2、HMaster 等各自的 `hdfs/demo01@EXAMPLE.COM`），keytab 分发至各节点专属目录（如 `/etc/security/keytabs/`）并设置 400/600 权限与正确归属；
> - Web 层同步启用认证：`hadoop.security.authentication` 驱动 Web 层，`hadoop.http.authentication.type` 默认 `simple`，改为 `kerberos`（或经统一认证网关接入时以网关为准）；开启后无凭据访问 Web UI 应返回 401；
> - 认证开启是**全集群迁移动作**：仅改单节点/改配置不重启会导致全局异常，顺序与验证见「第 09 节 变更链」。
>
> **验证方法**：参数抽查、keytab 权限、`kinit`/`klist`、无凭据 Web 401・4001 实测、各组件日志无 auth 错误。

【不适用】由云托管大数据服务与统一认证（AD/云 IAM）承载时，按上位组件承载边界注明，本控制点不因此免整。

**核查命令**

```bash
grep -A2 "hadoop.security.authentication" /etc/hadoop/conf/core-site.xml   # 期望 <value>kerberos</value>
find / -maxdepth 5 -name core-site.xml 2>/dev/null | head -n 3   # 路径差异时先定位再 grep
ls -l /etc/security/keytabs/ 2>/dev/null | head -n 6                  # 400/600 与属组
klist 2>/dev/null | head -n 6                                        # 只读：票据与有效期
curl -s -o /dev/null -w "%{http_code}\n" http://192.168.10.10:9870/   # 无凭据应 401/SPNEGO 挑战
```


<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 -A2 <span class="s2">&#34;hadoop.security.authentication&#34;</span> /etc/hadoop/conf/core-site.xml
</span></span><span class="line"><span class="cl">&lt;name&gt;hadoop.security.authentication&lt;/name&gt;
</span></span><span class="line"><span class="cl">&lt;value&gt;kerberos&lt;/value&gt;
</span></span><span class="line"><span class="cl">$ ls -l /etc/security/keytabs/
</span></span><span class="line"><span class="cl">-r-------- <span class="m">1</span> hdfs hadoop  <span class="m">333</span> nn.keytab     <span class="c1"># 权限/属组收敛</span>
</span></span><span class="line"><span class="cl">$ curl -s -o /dev/null -w <span class="s2">&#34;%{http_code}\n&#34;</span> http://192.168.10.10:9870/
</span></span><span class="line"><span class="cl"><span class="m">401</span>
</span></span></code></pre></div>
</details>


**加固操作**（整体时序见 09；本节不单独直接执行）

```bash
# 0) KDC 侧先建主体、预出 keytab（kadmin 用法以现场 KDC 部署文档为准）
#    kadmin.local: addprinc -randkey hdfs/demo01@EXAMPLE.COM ; ktadd -k /path/nn.keytab
# 1) 全节点分发 keytab：/etc/security/keytabs/，chown 服务账户、chmod 400
# 2) 全节点 core-site.xml 增加：
#      <property><name>hadoop.security.authentication</name><value>kerberos</value></property>
# 3) 按第 09 节顺序滚动重启：ZooKeeper → JournalNode/NameNode → DataNode → YARN → Hive/HBase 组件（见第 03/04 节）
# 4) 每步：klist 有效 && hdfs dfs -ls / 成功 && 管理面无 auth 异常
```

- 预期现象：无凭据访问全部被拒；服务间票据互认；回滚 = 还原配置 + 反向滚动（第 09 节）。

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


全集群仍为 `simple`，且管理端口对办公网/公网网段可达时，任意主机可冒充任意用户读写 HDFS（可信身份取自客户端请示），结合暴露面直接按高风险记录（口径同《高风险判定指引》）。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


## 02 授权体系开启（默认 false）

> **对应控制点**：8.1.4.2 a)~f)（授权灵活性）
>
> **加固要点**：认证之后紧接着推进授权，两条腿缺一不可：
>
> - **服务级授权**：`hadoop.security.authorization` 官方默认 **false**（协议级拦截关闭）→ 改 `true`；
> - **两级细粒度**：HDFS 原生 POSIX/ACL 权限模型（目录属组与业务矩阵对齐）+ Apache Ranger/Sentry 策略（库表/列级访问、行过滤与 Masking 脱敏）；双轨并存时授权台账"以一套为准"并说明（同测评篇）；
> - **超级组收敛**：`dfs.superusergroup`（默认 `supergroup`）仅保留最小成员，废除无人认领的管理账号与默认 admin；
> - **Ranger Admin 自身**：管理员与审计员分离、策略变更留痕，否则单条策略改动无痕迹。
>
> **验证方法**：授权参数回读、Ranger 策略页最小授权抽查、无授权访问被拒实测、getfacl 属主。

**核查命令**

```bash
grep -A2 "hadoop.security.authorization" /etc/hadoop/conf/core-site.xml   # 期望 true
grep -A2 "dfs.superusergroup" /etc/hadoop/conf/hdfs-site.xml              # 超级组范围
hdfs dfs -getfacl /demo-path 2>/dev/null | head -n 8                     # 只读：ACL 属主
curl -s -o /dev/null -w "%{http_code}\n" "http://192.168.10.10:6080/login.jsp"   # Ranger 登录页（应为登录跳转）
```

**加固操作**（Ranger 策略为业务变更，逐策略审批；示例为配置段）

```xml
<!-- core-site.xml -->
<property>
  <name>hadoop.security.authorization</name>
  <value>true</value>
</property>
```

```bash
# HDFS 最小权限示例（业务窗口）
hdfs dfs -chown hive:hadoop /demo/db1
hdfs dfs -chmod 750 /demo/db1
# Ranger：hdfs/hive/hbase 插件接入后，按业务"仅需最小读写"创建策略并留存审批单
```

- 预期现象：未授权用户 `ls` 无关目录被拒；Ranger 策略可审计；回滚 = 还原配置重启或策略撤销。

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


`hadoop.security.authentication` 仍为 `simple` 时，"授权"仅基于客户端自报身份，可伪造绕过，属高风险同判；Ranger Admin 未认证且对非运维网段开放，等同策略与审计库全文可读，按《高风险判定指引》同口径判定。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


## 03 Hive 接入认证（默认 NONE）

> **对应控制点**：8.1.4.1 / 8.1.4.2（HiveServer2 与 Metastore）
>
> **加固要点**（默认值取自 Apache Hive Configuration Properties 页，2026-09 核验）：
>
> - `hive.server2.authentication` 默认 **NONE**：全免密执行 SQL（含 DROP/导出）→ 为 `KERBEROS`（或 LDAP/CUSTOM 按企业统一认证）；
> - `hive.server2.use.SSL` 默认 **false**：开启并配置由企业 CA 签发的服务证书（信任链与轮换纳入管理），`hive.server2.transport.mode` 默认 binary（Thrift），加密作用于该通道；
> - `hive.server2.enable.doAs` 默认 **true**：认证/授权开启后按"最小代理"原则评估是否保留；
> - **Metastore**：`hive.metastore.sasl.enabled` 默认 **false**，官方原文 "the metastore thrift interface will be secured with SASL … clients must authenticate with Kerberos"——采取 SASL 开启；无法开启时必须限定内网段并加 ACL；
> - 库表级授权：Ranger Hive 策略（行/列 Masking）或 Hive 原生权限（版本差异大，查验 Ranger 视图为准）。
>
> **验证方法**：参数回读、beeline 无凭据失败实测、Metastore 端口 9083 访问控制、Ranger 策略页截图。

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


`hive.server2.authentication` 仍为默认 NONE 且 10000 端口对不可信网段开放时，任意网段用户即可免密读写全部表（含 DROP），按高风险计。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


**核查命令**

```bash
grep -A2 "hive.server2.authentication" /etc/hive/conf/hive-site.xml      # 期望 KERBEROS/LDAP
grep -A2 "hive.server2.use.SSL" /etc/hive/conf/hive-site.xml            # true
grep -A2 "hive.metastore.sasl.enabled" /etc/hive/conf/hive-site.xml     # true
ss -lntp | grep 10000                                                    # 监听来源确认
```


<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 -A2 <span class="s2">&#34;hive.server2.authentication&#34;</span> /etc/hive/conf/hive-site.xml
</span></span><span class="line"><span class="cl">&lt;name&gt;hive.server2.authentication&lt;/name&gt;
</span></span><span class="line"><span class="cl">&lt;value&gt;KERBEROS&lt;/value&gt;
</span></span></code></pre></div>
</details>


**加固操作**（修改后重启 HiveServer2/Metadata，按变更顺序见第 09 节）

```xml
<property><name>hive.server2.authentication</name><value>KERBEROS</value></property>
<property><name>hive.server2.use.SSL</name><value>true</value></property>
<property><name>hive.server2.keystore.path</name><value>/etc/hive/conf/hive-keystore.jks</value></property>
<property><name>hive.metastore.sasl.enabled</name><value>true</value></property>
```

- 预期现象：无凭证连接被拒、Metastore 无 SASL不可直连、证书/keystore 权限 600、回滚=还原配置重启。

## 04 HBase 认证与授权

> **对应控制点**：8.1.4.1 / 8.1.4.2（HBase 集群接入与命名空间/表级授权）
>
> **加固要点**（取值核对自官方参考侧，2026-09）：
>
> - 认证：`hbase.security.authentication` 默认未启用（`simple`）→ 改 `kerberos`；
> - 授权：`hbase.security.authorization` 官方默认 **false**（原文 "now defaults to false … set it to true to restore [prior] behavior"）→ 改 **true** 并部署协处理器（官方安）/Ranger HBase 插件实现细粒度；开启后才具备表级/CF 级授权校验；
> - 传输：`hbase.rpc.protection=privacy`（官方书 "enable transport security … set hbase.rpc.protection to privacy"）按需开启，客户端一致；
- 接入面收敛：REST/Thrift 一般不用即停（默认端口 8085/9090，以现场为准），确需启用时补认证 + 白名单 + TLS。
>
> **验证方法**：参数回读、无票据 hbase shell 操作失败实测、Ranger Namespace/Table 策略页、REST/Thrift 无监听。

| hbase安全属性（hbase-site.xml） | 默认值 | 加固值 |
| --- | --- | --- |
| hbase.security.authentication | 未启用（simple） | kerberos |
| hbase.security.authorization | 默认 false（原文核验） | true（+Ranger/协处理器策略） |
| hbase.rpc.protection | 未配置 | privacy |
| HBase REST/Thrift | 未启用+启用与否 | 按需启用并加固，否则停用 |

**核查命令**

```bash
grep -A2 -iE "hbase.security.authentication|hbase.security.authorization|hbase.rpc.protection" /etc/hbase/conf/hbase-site.xml
ss -lntp | grep -E "9085|9090|16010"    # 未用端口应无监听（端口以实测为准）
```

**加固操作**（修改 hbase-site.xml 后按集群滚动，顺序见 09）

```xml
<property><name>hbase.security.authentication</name><value>kerberos</value></property>
<property><name>hbase.security.authorization</name><value>true</value></property>
<property><name>hbase.rpc.protection</name><value>privacy</value></property>
```

- 预期现象：无票据操作被拒；未读授权表的用户读被拒；REST/Thrift 无监听；回滚=还原配置滚动。

## 05 数据通道加密与 Web 端 HTTPS

> **对应控制点**：8.1.4.7 a) b)、8.1.4.8 a) b)、8.1.1.2 通信传输
>
> **加固要点**（默认值官方实测，2026-09）：
>
> - **RPC 通道**：`hadoop.rpc.protection` 默认 `authentication`（仅认证、不加密）→ 改 **privacy**（完整性+保密性）或 integrity，服务与客户端全集群一致；
> - **DataNode 数据面**：`dfs.encrypt.data.transfer` 默认 `false` → `true`；`dfs.data.transfer.protection` 默认为空，配置 `privacy` 统一（或采取边界网络加密/隔离作为补偿，并记录取舍声明）；
> - **Web 管理面**：`dfs.http.policy` 默认 **HTTP_ONLY** → `HTTP_AND_HTTPS`（过渡）或 `HTTPS_ONLY`；NameNode HTTPS 默认 `0.0.0.0:9871` 收敛到具体地址；ResourceManager 8088 的对应 HTTPS 端口同口径；
> - **静态加密（透明加密）**：KMS 就绪后用官方命令 `hadoop key create -keyName <key>` 创建密钥，`hdfs crypto -createZone -keyName <key> -path <path>`（TransparentEncryption.html 官方语法）创建加密区，创建后写入即加密；存量数据经 `distcp` 迁入加密区；KMS 数据库与密钥轮换纳入密码库受控。
>
> **验证方法**：参数回读、`openssl s_client -connect <节点>:9871 -tls1_2` 成功、`hdfs crypto -listZones 2>/dev/null | head`（只读）输出加密区、KMS 探活。

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


跨安全域/跨机房的数据传输未配置任何 RPC/Data 通道加密且管理端口对不可信网段开放时，等于明文暴露用户数据，按《高风险判定指引》计高风险（`dfs.http.policy` 默认 HTTP_ONLY 时尤其）；加密面改变传输性能需在报告中如实声明。

判定口径详见 [22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)。
</div>


**核查命令**

```bash
grep -A2 "hadoop.rpc.protection" /etc/hadoop/conf/core-site.xml        # privacy/integrity
grep -A2 "dfs.encrypt.data.transfer" /etc/hadoop/conf/hdfs-site.xml    # true
grep -A2 "dfs.http.policy" /etc/hadoop/conf/hdfs-site.xml              # HTTPS_ONLY 或 HTTP_AND_HTTPS
openssl s_client -connect 192.168.10.10:9871 -tls1_2 </dev/null 2>/dev/null | grep -E "Protocol|Cipher" | head -n 2
hdfs crypto -listZones 2>/dev/null | head -n 6          # 只读
```

**加固操作**（`privacy` 等全集群一致才重启）

```xml
<!-- core-site.xml -->
<property><name>hadoop.rpc.protection</name><value>privacy</value></property>
<!-- hdfs-site.xml -->
<property><name>dfs.encrypt.data.transfer</name><value>true</value></property>
<property><name>dfs.data.transfer.protection</name><value>privacy</value></property>
<property><name>dfs.http.policy</name><value>HTTP_AND_HTTPS</value></property>
<property><name>dfs.namenode.https-address</name><value>demo-nn01:9871</value></property>
```

- 预期现象：命令协商为 privacy；`curl -k https://节点:9871/` 成功且明文口 9870 关闭；加密区文件以密文存储。

## 06 暴露面收敛与最小化（端口/组件）

> **对应控制点**：8.1.4.4 b)、8.1.4.2 d)，与 8.1.2.3 边界联动
>
> **加固要点**：
>
> - 管理口（NN Web 9870/9871、RM Web 8088/8089、HiveServer2 10000、HBase Master 16010、Ranger 6080 等）只对运维网段/跳板机开放，业务端口面向网段收敛（端口以现场 `ss -lntp` 实测为准）；
> - 携手防火墙/安全组落地（示例 firewalld），并配合边界设备双向策略（8.1.2.3 联动取证）；
> - 未启用组件/服务一律停用（HTTPFS、shell 化 RPC 等）；Kafka/ZooKeeper 的 4 字命令白名单见对应篇。
>
> **验证方式**：非授权网段（经授权）探测超时、防火墙规则审计、多余进程不存在。

**核查命令**

```bash
ss -lntp | grep -E "8020|8088|9083|9085|9870|10000|16010"    # 管理与业务端口实际监听名单
# 跳板/公网方向实际探测由授权执行，应超时
```

**加固操作**（防火墙变更走审批；示例 firewalld）

```bash
# 仅运维网段可连接管理端口（示例来源 192.168.20.0/24 与 跳板 192.168.10.250/32）
for p in 9870 8088 16010 9080 6080; do
  firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.20.0/24 port protocol=tcp port=$p accept"
done
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.10.250/32 port protocol=tcp port=8080 accept'
firewall-cmd --reload
```

- 预期：管理端口办公网/公网方向超时；业务网段正常；`ss` 清单与策略一一对应。

## 07 安全审计与外送（留存不少于 6 个月）

> **对应控制点**：8.1.4.3 b)（为主）、8.1.5.4（集中审计），联动《网络安全法》第二十一条
>
> **加固要点**：
>
> - **审计覆盖面**：Ranger Audit（策略命中/拒绝）、HDFS `dfs.namenode.audit.loggers`（默认已启用）、YARN App 审计、HiveServer2 检索审计、HBase 审计（用户/时间/对象/结果）——保留策略与字段匹配管理需求；
> - **集中与留存**：经 rsyslog/采集器转发统一日志审计系统（TLS 6514 口径同泄露审计类篇），本地+集中合计留存**不少于 6 个月**（《网安法》第二十一条（三）），低于要求时调整轮转/加容量（容量扩盘走运维流程）；
> - **时间同步**：全部节点指向统一 NTP/Chrony（`chronyc tracking` 验证），审计时间可对标；
> - **审计保护**：审计存储（默认 file/HDFS）与日志平台本身访问受控，管理员与审计员分离（口径同 02）。
>
> **验证方法**：日志平台可检出近 6 个月记录、检索样例字段完整、`chronyc tracking` 偏差合格。

**核查命令**

```bash
grep -A2 "dfs.namenode.audit.loggers" /etc/hadoop/conf/hdfs-site.xml 2>/dev/null || echo "未显式配置（2.9/默认启用）"
ls -l /var/log/hadoop-* 2>/dev/null | tail -n 8     # 旧审计文件时间戳
chronyc tracking | head -n 3                        # 时间源与偏差
journalctl -u hadoop-hdfs-namenode --since "-168h" 2>/dev/null | head -n 2   # 参考
```

**加固操作（转发配置示例，TLS 证书按本单位 PKI）**

```bash
# /etc/rsyslog.d/30-hadoop.conf
module(load="imfile" mode="inotify")
input(type="imfile" File="/var/log/hadoop/hdfs/hadoop-hdfs-namenode-demo01.log" Tag="hdfs-nn")
if $syslogtag contains "hdfs-nn" then @@192.168.20.10:6514    # TLS 通道
systemctl enable rsyslog && systemctl restart rsyslog
```

- 预期：日志中心可检索 >=6 个月前样例；时间偏差在阈值内；审计通道加密。

## 08 备份恢复与高可用

> **对应控制点**：8.1.4.9 a)~d)
>
> **加固要点**：
>
> - **NameNode HA**：ZKFC + JournalNode（奇数均衡 ），`hdfs haadmin -getAllServiceState` 显示 active/standby 成对；FsImage/Edits 双冗余后仍定期将 FsImage/edits 外拷/对象存储（月度）并执行恢复验证（季度）；
> - **快照**：HDFS 目录快照（元数据级、低成本）作为改组前必做；HBase 维护窗口做表快照（`snapshot 'demo:表', 'snap_pre_xxx'`）并与外带副本/恢复演练（半年一次）;
> - **Hive Metastore 库**（MySQL/PostgreSQL 承载）转对应数据库篇：全备 + binlog 增量并纳入考核；
> - **KDC 主备与备份**：KDC 数据库（或 AD 复制/备份）纳入备份体系，否则认证全部失效间接致数据不可用。
>
> **验证方式**：HA 状态、外部备份存在与可恢复演练报告、快照清单、Metastore 库备份记录。

**核查命令**

```bash
hdfs haadmin -getAllServiceState 2>/dev/null || true        # NameNode HA 状态
hdfs fsck / 2>/dev/null | tail -n 3                           # 只读：健康
ls -l /backup/hadoop/ 2>/dev/null | tail -n 5                 # 外部备份存在
```

**加固操作（部分变更；例行执行）**

```bash
hdfs dfsadmin -allowSnapshot /demo 2>/dev/null                    # 开启目标目录快照能力
hdfs dfs -createSnapshot /demo ds-pre-20260905                    # 换组快照
# HBase shell（维护窗口）：
# hbase shell 内执行（维护窗口）：
#   snapshot 'demo:account', 'snap_pre_20260905'
```

- 预期：HA 双活正常、外部具备 Fs 可恢复演练记录、快照清单与业务对账、KDC 备份纳入。

## 09 Kerberos 开启的强制变更链与回滚

> **对应控制点**：8.1.4.1~8.1.4.9 综合；变更管理（8.1.5）
>
> **原则：变更全局开关（authentication/rpc.protection）只应一次性完成；顺序或就绪条件错，集群进入不可用（假死）——这是大数据加固**最高危操作**。**
>
> 一、前置就绪（提前 1 周）：KDC/AD 主体矩阵（全部服务主体 + 用户主体）；keytab 分发到所有节点并权限校验；客户端站已预置 keytab/票据（`klist` 可查有效）；配置与快照备份完成，验证通道保留；
> 二、执行（低峰窗口完成一次）：按序滚动 `ZooKeeper → JournalNode → NameNode（先 standby 再 active 交替）→ DataNode → ResourceManager/NodeManager → Hive/HBase 组件；每步立即验证：
>
> ```bash
> klist | head -n 3                    # 查看票据有效
> hdfs dfs -ls /                      # 元数据可读
> curl -s -o /dev/null -w "%{http_code}\n" http://192.168.10.10:9870/   # 应 401
> ```
>
> 失败即回滚该批（还原配置重启），**不连带推进**；
> 三、随后启用授权（02）、加密（05）、Web HTTPS 等，认证骨架稳定后再加装安全策略，避免全校混杂故障排查；
> 四、观察期 72h：认证失败计数、拓扑注册、磁盘/CPU 异常，并留存迁移演练记录。
>
> **回滚预案**：全节点备份配置 → 还原 → 反向重启 → 验证。长期不以 simple 往返（审计失真）；KDC 自身故障时不回首动放开，优先恢复 KDC 主从。

## 10 剩余信息与个人信息保护要点

- **剩余信息**：作业中间目录（/tmp、yarn 临时目录）清理策略与定期任务；退役节点 `decommission` 后磁盘清除（擦除流程）与介质销毁证据留存；快照/归档删除与保留策略审批；
- **个人信息**：数据湖/仓库中个人数据表落实行列级脱敏（Ranger Masking）策略：访问控制、导出审批流程、注明留期满清理；如不承载个人信息按 GB/T 28448 "不处理范围"判定并【不适用】注明；
- **日志个人化**：审计/Ranger 审计日志含用户与查询参数时，同样收敛访问（如 7)。

## 11 官方默认 → 加固速查表（2026-09 核验）

| 配置项 | 官方默认（实测） | 加固目标 | 优先 |
| --- | --- | --- | --- |
| core-site: hadoop.security.authentication | `simple` | `kerberos` | P0 |
| core-site: hadoop.security.authorization | `false` | `true` | P1 |
| core-site: hadoop.rpc.protection | `authentication` | `privacy`/`integrity` | P1 |
| core-site: hadoop.http.authentication.type | `simple` | `kerberos` | P1 |
| hdfs-site: dfs.http.policy | `HTTP_ONLY` | `HTTP_AND_HTTPS`→`HTTPS_ONLY` | P1 |
| hdfs-site: dfs.namenode.https-address | `0.0.0.0:9871` | 具体:9871 | P2 |
| hdfs-site: dfs.encrypt.data.transfer | `false` | `true` | P1 |
| hdfs-site: dfs.data.transfer.protection | 未配置 | privacy | P2 |
| hive-site: hive.server2.authentication | `NONE` | KERBEROS/LDAP | P0 |
| hive-site: hive.server2.use.SSL | `false` | `true` | P1 |
| hive-site: hive.metastore.sasl.enabled | `false` | `true` | P1 |
| hbase-site: hbase.security.authentication | 未启用 | kerberos | P1 |
| hbase-site: hbase.security.authorization | `false`（官方原文） | true + 协处理器 | P1 |
| hbase-site: hbase.rpc.protection | 未配置 | privacy | P2 |

> 注：端口（8020/9870/9083/16010 等）与配置路径发行版可能改变，以现场实测为准——速查表只是语义默认值。

## 参考依据

- GB/T 22239-2019《网络安全等级保护基本要求》（8.1.4 安全计算环境；8.1.2/8.1.1.2）——[openstd 链接](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF)
- GB/T 28448-2019《网络安全等级保护测评要求》（判定方法）——[openstd 链接](http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C)
- 《中华人民共和国网络安全法》第二十一条（三）[cac.gov.cn](https://www.cac.gov.cn/2016-11/07/c_1119867116_2.htm)
- Apache Hadoop core-default.xml（**2026-09 逐值核对**四项默认值：authentication=simple、authorization=false、rpc.protection=authentication、http.authentication.type=simple、详细页 URL 解析于 reference 时）：[core-default.xml](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/core-default.xml)
- Apache Hadoop hdfs-default.xml（**2026-09 核对**：dfs.http.policy=HTTP_ONLY、dfs.namenode.https-address=0.0.0.0:9871、dfs.encrypt.data.transfer=false 等）：[hdfs-default.xml](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml)
- HDFS TransparentEncryption.html（`hdfs crypto -createZone -keyName … -path …`):[TransparentEncryption](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/TransparentEncryption.html)
- Apache Hive Configuration Properties 页面（**2026-09 核对** NONE/false/true 等默认值）：[Configuration Properties](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties)
- HBase Book.html 安全章节（**2026-09 核对** authorization "now defaults to false"原文）：[HBase Book](https://hbase.apache.org/book.html#security)
- Apache Ranger：[ranger.apache.org](https://ranger.apache.org/)

- 关联加固：[17、网络设备、安全设备、服务器、数据库和应用系统的加固方案](../../其他系统或设备/17网络设备安全设备服务器数据库和应用系统的加固方案/)、[16、安全评估加固记录表3.0](../../其他系统或设备/16安全评估加固记录表3.0/)、[22、高风险判定指引与加固对照表](../../其他系统或设备/22高风险判定指引与加固对照表/)、[大数据平台（Hadoop/Hive/HBase）测评](../../../gradeProtection/系统管理软件平台/大数据平台测评/)

- 命令核验说明
  - 默认值核对过程已在本站内完成并记录：core-default.xml / hdfs-default.xml 与 Hive 官方配置页、HBase Book（安全章节）、TransparentEncryption 官方语法均已逐字核过一遍（本次为 2026-09 复核）；
  - 三处留意：① `kadmin` 在线文档返回 404 → 本文件不收录具体管理命令、以现场 KDC 部署为准（避免假引用）；② HBase 2.5 分版 Book 地址 404 → 统一引用主干 Book.html；③ 发行版端口/配置路径（CDH、MRS、星环）以控制台与应用实测为准；未核验的内容一律不收录。
EOF
