概述
默认情况下,ZooKeeper集群不会对客户端进行强制身份认证,任何客户端都可以访问ZooKeeper数据,存在安全隐患。目前,MSE ZooKeeper支持SASL身份认证,通过用户名和密码对客户端进行身份认证,提升Zookeeper数据的安全性。
前提条件
创建微服务引擎MSE,参考章节:创建ZooKeeper引擎;
开通引擎版本为3.8.1.9及以上的ZooKeeper实例,并且实例状态正常;
操作步骤
1.登录微服务引擎MSE注册配置中心管理控制台,选择资源池;
2.在左侧导航栏,选择注册配置中心 > 实例列表;
3.在实例列表页面,单击目标实例ID、实例名称或者目标行“管理”按钮均可跳转至实例基础信息页面;
4.在左侧导航栏,选择权限管理> SASL认证;
5.在用户管理页面,单击创建用户。在创建用户面板中输入用户名、密码和确认密码,然后单击确定即可增加新的用户身份信息配置;
6.单击对应用户操作列中的复制配置,以下内容会被复制到粘贴板,密码需要手动补充,然后将其保存在客户端的任意文件中(如jaas.conf);
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username=test
password="";
};
7.对于Java使用Zookeeper原生SDK或者Apache Curator框架的应用时,需要进行以下操作:
假设之前已经保存的配置文件路径为/path/to/jaas.conf,在Java应用启动的时候,指定以下系统属性。
-Djava.security.auth.login.config=/path/to/jaas.conf // 填写配置保存的文件的路径
重启客户端应用后,客户端会自动读取认证信息配置并向Zookeeper服务端进行身份认证。
8.客户端配置完成之后,在左侧导航栏,选择参数管理。在参数管理页面,将requireClientSASLAuth的值设置为true,即可强制要求客户端连接服务端时进行SASL身份认证;
9.用户创建成功后,可以在用户列表的操作列,按需执行如下操作;
重置密码:点击重置密码,在密码重置面板中输入用户名、新密码和确认密码。当用户密码发生变更后,以该用户身份连接服务端的客户端将会断开连接;
删除用户:单击删除,弹出框提示确认需要删除的用户名称,点击确认即可删除用户。当用户被删除后,以该用户身份连接服务端的客户端将会断开连接;
说明
将requireClientSASLAuth设置为true会导致未通过SASL身份认证的客户端无法请求Zookeeper服务端;
Java客户端请确保依赖的ZooKeeper依赖版本为3.4及以上;
Zookeeper服务端的引擎版本为3.8.19.及以上;