Lindorm提供一套简单易用的用户认证和ACL体系。用户的认证只需要在配置中简单的填写用户名密码即可。用户的密码在服务器端非明文存储,并且在认证过程中不会明文传输密码,即使验证过程的密文被拦截,用以认证的通信内容不可重复使用,无法被伪造。

您可以非常方便地通过集群管理系统来管理用户。在集群管理页面的用户管理页面中。会列出当前集群内的所有用户列表。在您购买集群后,系统会自动创建一个用户名为root,密码为root的用户,该用户拥有集群的所有权限,用户可以用这个用户访问集群,也可以通过管理系统修改这个用户的密码,或者删除这个用户。

创建新用户

  1. 在集群管理的用户管理页面,点击更多操作-->create user
  2. 在弹出框中输入用户名密码,然后点击确定即可。
说明
  • Lindorm在服务器端不会明文存储密码,因此创建用户后无法再看到该用户的密码,用户需要记住自己设置的密码,忘记密码后,只能通过修改用户密码的方式更改密码。
  • 新建的用户没有任何权限,需要在权限页面赋予相应的权限之后,才能够正常访问,详见ACL管理章节

修改用户密码

  1. 在集群管理的用户管理页面,点击对应行的修改密码按钮。
  2. 在弹出的对话框中填入新密码,然后点击确定即可。

删除用户

在集群管理的用户管理页面,点击对应行的删除按钮,即可删除对应的用户。

ACL权限管理

在Lindorm中,服务器会根据每个用户拥有的权限去决定该用户是否能够做某项操作。如user1如果只有Table1的读权限,那么他在写Table1的时候就会报错,在读写Table2的时候都会被拒绝访问。目前,Lindorm拥有的权限种类有以下几种:
  • WRITE 权限

    与写Lindorm表相关的操作,如Put、Batch、Delete、Increment、Append、CheckAndMutate等

  • READ 权限

    与读Lindorm表相关的操作,如Get、Scan、exist等;读取Lindorm表descriptor,namespace列表等相关操作,如getTableDescriptor、listTables、listNamespaceDescriptors等

  • ADMIN权限

    不会涉及到表删除和表数据删除的DDL操作如createTable、enable/disableTable等,Namespace相关DDL操作,如createNamespace等。

  • TRASH权限

    为了防止表误删和表数据被清空,只有授予了TRASH权限的用户,才能调用truncateTable和deleteTable这两个DDL操作

  • SYSTEM权限

    只有赋予了SYSTEM权限的用户,才能执行Compact,flush等运维操作。另外,使用BDS迁移、同步Lindorm时,使用的用户也必须有SYSTEM权限

权限分层

目前在Lindorm中有三个权限层级。Global,Namespace和Table。这三者是相互覆盖的关系。比如给user1赋予了Global的读写权限,则他就拥有了所有namespace下所有Table的读写权限。如果给user2赋予了Namespace1的读写权限,那么他会自动拥有Namespace1中所有表的读写权限(包括在这个Namespace中新建的表)。
说明 只有拥有Global层级的ADMIN权限的用户,才能够Create和delete namespace

权限管理

  • grant权限
    在集群管理系统中的权限管理,可以给对应用户赋予相应权限。如果要给一个用户赋予某一个表的READ权限,可以这样操作:
    1. 在集群管理的权限管理页面,点击Table权限表格的更多操作-->grant privilege按钮。
    2. 在弹出的grant table privilege对话框中,选择对应的用户、namespace和表,勾选READ权限,然后点击确定即可。
  • revoke权限
    集群管理系统中的权限管理,可以收回对应用户的权限。每个用户可能有多个层级的权限。可以在对应层级的权限列表中找到对应用户,然后点击revoke按钮,然后选择需要revoke的权限,具体过程如下:
    1. 在集群管理的权限管理页面,找到对应的权限行,然后点击后面的revoke按钮。
    2. 在弹出的revoke权限对话框中,会列出当前用户对当前对象(global、表或者namespace)的所有权限,勾选需要revoke的权限,然后点击确定按钮即可。

打开关闭ACL功能

如果您不需要用户和ACL功能来进行访问控制,可以将ACL功能关闭。ACL功能关闭后,后续所有的访问(包括API访问,SQL访问和非Java访问)时都不需要提供用户名和密码,用户可以做任何操作而没有限制。ACL功能可以动态地打开和关闭,无需重启集群。但如果之前ACL是关闭状态,动态打开后,没有提供用户名和密码的客户端在重连时,会因为无法认证而报错。提供了用户名和密码的客户端在重连时会被正常认证,但在做越权的操作时,会被拒绝访问。