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