开发者社区> 问答> 正文

如何使用ACL进行权限管理?


前文提到,类似MySQL,分析型数据库中的数据库创建者可以使用GRANT/REVOKE语句进行授权和权限回收。

进行授权


SQL语法


GRANT privilege_type [(column_list)] [, privilege_type [(column_list)]] ... ON [object_type] privilege_level TO user [, user] ...

返回值


被授权用户

user: 'user_name'[@'host_name']
  • user_name 和 host_name 必须使用单引号或双引号,如 'ALIYUN$test-user@aliyun.com'@'%'
  • 目前,host_name 只支持 % ,即不支持指定Host
  • 可以写成 user_name ,等价于 'user_name'@'%'

权限

  • privilege_type 为具体的权限类型,每一级对象拥有的权限类型参见6.2节

  • [(column_list)] 为可选,当对象级别为表时,这里可以填写列的列表,进行针对具体列的授权

  • [object_type] 为可选,标明权限对象的类型,如Database、Table、TableGroup等,建议填写

  • privilege_level 为被授权对象的表达式,填写方法见6.2节

例子GRANT describe, select ON tablegroup db_name.table_group_name TO user 'ALIYUN$ test_user@aliyun.com'@'%';GRANT describe, select (col1, col2) ON table db_name.table__name TO user 'ALIYUN$ test_user@aliyun.com';

权限回收


SQL语法

REVOKE privilege_type [(column_list)] [, privilege_type [(column_list)]] ... ON [object_type] privilege_level FROM user [, user] ...

返回值

  • 在语法上与授权语句基本一致


查看用户权限


SQL语法

SHOW GRANTS [FOR user] ON [object_type] privilege_level

返回值

'GRANT ALL ON db_name.* TO user' 'GRANT SELECT(column_name) ON db_name.table_name TO user'

查看用户权限
  • 不指定用户或是指定用户即当前用户,则列出当前用户在指定数据库上被授予的权限
  • 否则,列出当前用户在指定数据库上授予指定用户的权限


其它相关内容


权限的默认约定
  • 数据库创建者拥有在该数据库上的所有权限
  • 表(组)创建者拥有在该表(组)上的所有权限
  • 其他数据库用户拥有被各数据库拥有者授予的权限
  • SHOW DATABASES 语句不进行权限检查,可在不指定数据库的前提下之星,会返回用户所有拥有权限的数据库列表
  • 创建数据库时不检查权限,但用户必须通过阿里云官网开通了分析型数据库服务并处于服务正常运行的状态

授权/回收权限的权限
  • 数据库拥有者(暨创建者)在该数据库上执行 Database 及其级别以下的授权/回收权限,如 SELECT ON db_name.*
  • 其他数据库用户目前无法执行授权/回收权限操作

设置ip白名单
目前分析型数据库支持设置DB粒度的ip访问白名单,该功能目前处于内测,有需要的客户可以提交工单索取设置方法和注意事项。

展开
收起
nicenelly 2017-10-26 15:38:29 2340 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载