GeminiDB兼容DynamoDB接口鉴权
在企业级应用中,不同部门或用户角色对数据的访问需求各不相同,如果不对GeminiDB兼容DynamoDB接口的访问权限进行管理,可能会导致数据泄露或被误操作。GeminiDB兼容DynamoDB接口鉴权适用于需要限制不同角色对数据的操作范围的场景。使用者可以通过创建多个GeminiDB兼容DynamoDB接口用户并赋予不同的权限,对GeminiDB兼容DynamoDB接口实例的查询、写入等行为进行表级别的细粒度控制,从而提高数据的安全性以及保护敏感数据。通过合理设置权限,GeminiDB兼容DynamoDB接口可以在多租户或企业环境中实现数据的隔离和访问管理。
GeminiDB兼容DynamoDB接口支持的权限
鉴权功能支持通过GeminiDB兼容DynamoDB接口的API来控制表级别的部分权限(不支持更细粒度的权限控制,例如行或列级别),如支持的权限及其范围所示。
使用cql语句设置用户权限
- 创建新用户
-- 创建普通用户 CREATE USER <username> WITH PASSWORD 'your_password' NOSUPERUSER;

- 新创建的用户未授权前没有任何权限。
- 新用户密码必须为8~32位,必须是大写字母、小写字母、数字、特殊字符中至少两种的组合,其中可输入~!@#%^*-_=+?特殊字符。更多信息,请参见重置管理员密码。
- 为用户添加权限
-- 赋予用户创建表权限: GRANT CREATE ON ALL KEYSPACES TO <username>;
-- 赋予用户表级别查询权限: GRANT SELECT ON TABLE <table_name>.<table_name> TO <username>;
-- 赋予用户表级别插入/更新/删除权限: GRANT MODIFY ON TABLE <table_name>.<table_name> TO <username>;
- 查看用户权限
LIST ALL PERMISSIONS OF <username>;
- 移除用户权限
-- 撤销用户对某个表的 SELECT 权限 REVOKE SELECT ON TABLE <table_name>.<table_name> FROM <username>;
-- 撤销用户对某个 keyspace 的所有权限 REVOKE ALL PERMISSIONS ON KEYSPACE <table_name> FROM <username>;
- 删除用户
DROP USER <username>;

- 创建实例时预置的用户rwuser,拥有创建所有表的权限。
- 创建表的用户,默认拥有该表全部权限。
- 推荐使用rwuser执行DynamoDB表和用户创建操作,再为新创建的用户赋予不同权限,以实现权限控制。
GeminiDB兼容DynamoDB接口对应的用户权限
GeminiDB兼容DynamoDB接口名称 | 用户权限 |
|---|---|
BatchGetItem | 表级别SELECT |
BatchWriteItem | 表级别MODIFY |
CreateTable | ALL KEYSPACES CREATE |
DeleteItem | 表级别MODIFY |
DeleteTable | 表级别DROP |
DescribeStream | 无需任何权限 |
DescribeTimeToLive | 无需任何权限 |
DescribeTable | 无需任何权限 |
GetItem | 表级别SELECT |
GetRecords | 表级别SELECT |
GetShardIterator | 无需任何权限 |
ListStreams | 无需任何权限 |
ListTables | 无需任何权限 |
PutItem | 表级别MODIFY |
Query | 表级别SELECT |
Scan | 表级别SELECT |
UpdateItem | 表级别MODIFY |
UpdateTable | 表级别ALTER |
UpdateTimeToLive | 表级别ALTER |
鉴权失败报错信息
{
"__type": "AccessDeniedException",
"message": "User <user_name> has no <permission_name> permission on <data_resource> or any of its parents"
} 
