在ACL管理页面中,您可以管理相应用户所拥有的权限,可以赋予(grant)、回收(revoke)某个用户的一项或者多项权限。

权限种类及权限层级

在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等运维操作。另外,使用LTS迁移、同步HBase增强版时,用户也必须有SYSTEM权限。
目前在Lindorm中有三个权限层级,Global、Namespace、Table,这三者之间是相互覆盖的关系。例如给user1赋予了Global的读写权限,则它就拥有了所有Namespace下所有Table的读写权限;如果给user2赋予了Namespace1的读写权限,那么他会自动拥有Namespace1中所有表的读写权限(包括在Namespac1中新建的表)。
说明 只有拥有Global层级的ADMIN权限的用户,才能够Create和Delete Namespace。

grant权限

您可以基于Global、Namespace、Table三个权限层级来给指定的用户授予相应的权限。本文档以给指定的用户授予某个表的读写权限为例进行说明。

  1. 访问Lindorm Insight。具体操作请参考如何访问Lindorm Insight?
  2. 在左侧导航栏,单击数据管理 > ACL管理
  3. ACL管理页面的Table权限区域,单击更多操作 > grant privilegegrant table privilege
  4. grant table privilege对话框中,下拉选择user namegrant namespacegrant table,选择grant privileges。单击确定grant table privilege

revoke权限

您可以在Lindorm Insight系统中的ACL管理收回对应用户的权限。每个用户可能有多个层级的权限,您可以在对应层级的权限列表中找到对应用户,然后单击revoke按钮,然后选择需要revoke的权限。本文档以收回某个指定的用户某个表的读写权限为例进行说明。

  1. ACL管理页面的Table权限区域,定位到需要收回权限的用户,单击revokeremove权限
  2. revoke privilege对话框中,选择需要收回的权限,单击确定revoke privilege

打开和关闭ACL功能

如果您不需要使用用户名和ACL功能来进行访问控制,可以将ACL功能关闭。ACL功能关闭后,后续所有的访问(包括API访问,SQL访问和非JAVA访问)时都不需要提供用户名和密码,您可以没有限制的做任何操作。

您无需重启集群,就可以动态地打开和关闭ACL功能。但如果之前ACL是关闭状态,动态打开后,没有提供用户名和密码的客户端在重连时,会因为无法认证而报错。提供了用户名和密码的客户端在重连时会被正常认证,但在做越权操作时,会被拒绝访问。

ACL开关