身份认证
Contents
身份认证#
ZooKeeper认证#
OpenMLDB 0.8.4版本及以后,可以使用有密码的ZooKeeper。需要在启动集群时在各个组件的配置文件中配置ZooKeeper的用户名密码。
TaskManager中配置
zookeeper.cert=user:passwd
其他Server 配置
--zk_cert=user:passwd
CLI 配置
--zk_cert=user:passwd
JAVA SDK 配置
SdkOption.setZkCert("user:passwd")
或 URLjdbc:openmldb:///?...&zkCert=user:passwd
PYTHON SDK 配置
openmldb.dbapi.connect(..., zkCert="user:passwd")
或 URLopenmldb:///?...&zkCert=user:passwd
OpenMLDB身份认证#
0.9.0 中的 Alpha 功能#
OpenMLDB 在 0.9.0 版本中作为 alpha 功能引入了服务器端身份验证。 从此版本开始,默认情况下不启用服务器端身份验证。 这种方法可确保向后兼容性并最大限度地降低破坏现有部署的风险。 用户可以通过在启动客户端和服务器时配置“–noskip_grant_tables”来启用服务端认证。 禁用身份验证时,不支持更改身份验证设置或修改用户凭据的语句,例如“CREATE USER”、“ALTER USER”和“DELETE USER”。
0.8.5 中的认证#
OpenMLDB 0.8.5版本集群内可以使用用户名和密码进行身份认证。自定义用户和密码的创建都在集群启动之后,初始集群只有root用户,密码为空。默认情况下,任何的server和client都是以root用户名和空密码连接到集群。
为了安全,我们通常需要root用户使用密码,再创建普通用户。而由于架构上部分server也会作为client连接集群,如果修改root密码需要注意。
修改root密码#
我们通常是需要修改root密码的,避免client可以在无密码时就能连接上集群。在root无密码时,使用CLI或SDK连接OpenMLDB集群,通过SQL修改密码:
alter user root set options (password='123456');
修改后并不影响当前连接继续使用。使用root用户的新连接需要密码,CLI或SDK如何添加密码参考相应的使用文档。Server中需要特别注意两个组件:
TaskManager TaskManager的部分服务需要以client的形式连接OpenMLDB,因此,当root需要密码后,TaskManager需要配置
user=root
和password=123456
。也可以指定TaskManager使用别的用户,重启生效。APIServer APIServer也是以client形式连接OpenMLDB,因此,当root需要密码后,APIServer需要配置
--user=root
和--password=123456
。也可以指定APIServer使用别的用户,重启生效。
增加用户#
增加的用户给普通用户使用,使用SQL创建:
CREATE USER user1 OPTIONS (password='123456');
保持OpenMLDB的server组件以root用户进行认证的,创建用户对它们不会造成任何影响。如果你选择让TaskManager或APIServer使用非root用户,修改删除此用户后也要及时更新它们的配置,避免服务重启后连接不上。