
# MRS集群用户认证策略
大数据平台用户需要对用户进行身份认证，防止不合法用户访问集群。安全模式或者普通模式的集群均提供认证能力。
#### 安全模式
安全模式的集群统一使用Kerberos认证协议进行安全认证。Kerberos协议支持客户端与服务端进行相互认证，提高了安全性，可有效消除使用网络发送用户凭据进行模拟认证的安全风险。集群中由KrbServer服务提供Kerberos认证支持。
**Kerberos** **用户对象**
Kerberos协议中，每个用户对象即一个principal。一个完整的用户对象包含两个部分信息：用户名和域名。在运维管理或应用开发的场景中，需要在客户端认证用户身份后才能连接到集群服务端。系统操作运维与业务场景中主要使用的用户分为"人机"用户和"机机"用户。二者主要区别在于"机机"用户密码由系统随机生成。
**Kerberos** **认证**
Kerberos认证支持两种方式：密码认证及keytab认证。认证有效时间默认为24小时。
- 密码认证：通过输入用户正确的密码完成身份认证。主要在运维管理场景中使用"人机"用户进行认证，命令为**kinit** *用户名*。
- keytab认证：keytab文件包含了用户principal和用户凭据的加密信息。使用keytab文件认证时，系统自动使用加密的凭据信息进行认证无需输入用户密码。主要在组件应用开发场景中使用"机机"用户进行认证。keytab文件也支持在**kinit**命令中使用。
 
#### 普通模式
普通模式的集群不同组件使用原生开源的认证机制，不支持**kinit** 认证命令。FusionInsight Manager（含DBService、KrbServer和LdapServer）使用的认证方式为用户名密码方式。组件使用的认证机制如[表1]所示。
 表1组件认证方式一览表 
| 服务         | 认证方式                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|
| IoTDB      | simple认证                                                                                                                                                                                                                                                                                                                                                                                                            |
| CDL        | 无认证                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ClickHouse | simple认证                                                                                                                                                                                                                                                                                                                                                                                                            |
| Flume      | 无认证                                                                                                                                                                                                                                                                                                                                                                                                                 |
| HBase      | - WebUI：无认证  - 客户端：simple认证       |
| HDFS       | - WebUI：无认证  - 客户端：simple认证       |
| HetuEngine | - WebUI：无认证  - 客户端：无认证                                                                                                                  |
| Hive       | simple认证                                                                                                                                                                                                                                                                                                                                                                                                            |
| Hue        | 用户名密码认证                                                                                                                                                                                                                                                                                                                                                                                                             |
| Kafka      | 无认证                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Loader     | - WebUI：用户名密码认证  - 客户端：无认证        |
| Mapreduce  | - WebUI：无认证  - 客户端：无认证              |
| Oozie      | - WebUI：用户名密码认证  - 客户端：simple认证   |
| Spark2x    | - WebUI：无认证  - 客户端：simple认证       |
| Storm      | 无认证                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Yarn       | - WebUI：无认证  - 客户端：simple认证       |
| ZooKeeper  | simple认证                                                                                                                                                                                                                                                                                                                                                                                                            |
   
认证方式解释如下：
- "simple认证"：在客户端连接服务端的过程中，默认以客户端执行用户（例如操作系统用户"root"或"omm"）自动进行认证，管理员或业务用户不显式感知认证，不需要**kinit**完成认证过程。
- "用户名密码认证"：使用集群中"人机"用户的用户名与密码进行认证。
- "无认证"：默认任意的用户都可以访问服务端。
 
