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;
- 为用户添加权限
-- 赋予用户创建表权限: 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"
}