
# 数据权限列表
#### 权限矩阵
平台中SQL语句与数据库、表、角色相关的权限矩阵如[表2]所示。
表1表1：支持权限矩阵 
| 授权类型     | **LakeFormation**权限类型 | 权限说明               |
|:---|:---|:---|
| database | ALL                   | 数据库的所有操作权限。        |
| database | ALTER                 | 修改数据库。             |
| database | DROP                  | 删除数据库。             |
| database | DESCRIBE              | 查看数据库的元数据信息或切换数据库。 |
| database | LIST_TABLE            | 查看数据库下资源列表。        |
| database | LIST_FUNC             | 查看某一数据库下的函数。       |
| database | CREATE_TABLE          | 在数据库中创建表。          |
| database | CREATE_FUNC           | 在数据库中创建函数。         |
| table    | ALL                   | 表的所有操作权限。          |
| table    | ALTER                 | 修改表。               |
| table    | DROP                  | 删除表。               |
| table    | DESCRIBE              | 查看表的元数据信息。         |
| table    | UPDATE                | 更新表数据。             |
| table    | INSERT                | 插入表数据。             |
| table    | SELECT                | 查询表内数据。            |
| table    | DELETE                | 删除表的数据。            |
| column   | SELECT                | 查询表内的列数据。          |
| function | ALL                   | 函数的所有操作权限。         |
| function | ALTER                 | 修改函数。              |
| function | DROP                  | 删除函数。              |
| function | DESCRIBE              | 查看函数的元数据信息。        |
| function | EXEC                  | 执行函数。              |
   
 表2常用SQL权限说明 
| 分类       | SQL语句                                                | 所需权限                         |
|:---|:---|:---|
| Database | DROP DATABASE db1                                    | db1的DROP权限。                  |
| Database | CREATE TABLE tb1(...)                                | db1下的CREATE_TABLE权限。         |
| Database | CREATE VIEW v1                                       | db1下的CREATE_VIEW权限。          |
| Table    | SHOW CREATE TABLE tb1                                | tb1的DESCRIBE权限。              |
| Table    | DESCRIBE \[EXTENDED\|FORMATTED\] tb1                 | tb1的DESCRIBE权限。              |
| Table    | DROP TABLE \[IF EXISTS\] tb1                         | tb1的DROP权限。                  |
| Table    | SELECT count(\*) FROM tb1                            | tb1的SELECT权限。                |
| Table    | SELECT \* FROM view1                                 | view1的SELECT权限。              |
| Table    | SELECT count(\*) FROM view1                          | view1的SELECT权限。              |
| Table    | LOAD DATA TABLE                                      | tb1的INSERT权限。                |
| Table    | INSERT INTO TABLE                                    | tb1的INSERT权限。                |
| Table    | INSERT OVERWRITE TABLE                               | tb1的INSERT权限。                |
| Table    | ALTER TABLE ADD COLUMNS                              | tb1的ALTER权限。                 |
| Table    | ALTER TABLE RENAME                                   | tb1的ALTER权限。                 |
| column   | SELECT user_id FROM db.users;                        | db.users表中user_id列的SELECT权限。 |
| function | ALTER FUNCTION db.calc_tax RENAME TO db.calc_tax_v2; | db下calc_tax函数的ALTER权限。       |
| function | DROP FUNCTION IF EXISTS db.calc_tax;                 | db下calc_tax函数的DROP权限。        |
| function | DESCRIBE FUNCTION EXTENDED db.calc_tax;              | db下calc_tax函数的DESCRIBE 权限。   |
| function | SELECT db.calc_tax("xxx");                           | db下calc_tax函数的SELECT权限。      |
   
#### 注意事项
- 权限操作本质是通过平台管理的API实现，而非直接在Spark SQL引擎中执行GRANT/REVOKE语句来实现。
- 同一数据库下的表和视图共享权限命名空间。
- 具有GRANT_PRIVILEGE权限的用户可以为其他用户赋权。
- 具有REVOKE_PRIVILEGE权限的用户可以回收其他用户的权限。
 
