身份认证#

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")或 URL jdbc:openmldb:///?...&zkCert=user:passwd

  • PYTHON SDK 配置openmldb.dbapi.connect(..., zkCert="user:passwd")或 URL openmldb:///?...&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=rootpassword=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用户,修改删除此用户后也要及时更新它们的配置,避免服务重启后连接不上。