关于Cassandra错误访问及权限不足时查询行为的咨询
Cassandra未授权访问行为分析及特定权限场景详解
一、Cassandra在未授权访问时的通用行为
当用户或角色尝试访问自身没有权限的资源时,Cassandra的行为是非常明确的:
- 直接返回**权限拒绝(Unauthorized)**错误,错误消息会清晰指出缺失的权限类型和对应的资源,比如针对表查询的错误会显示:
Unauthorized: User <角色名> has no SELECT permission on <键空间.表名> or any of its parents - 这类错误会直接终止当前操作,不会执行任何数据读写动作,也不会对集群状态造成任何影响
- 如果是通过客户端驱动访问,程序会捕获到对应的权限异常,需要在代码逻辑中处理这类场景
二、你的操作流程中Cassandra的具体行为拆解
我们逐个分析你给出的步骤,重点说明最终查询操作的表现:
- 创建
customer普通角色:
执行CREATE USER IF NOT EXISTS customer WITH PASSWORD 'Test27' NOSUPERUSER;后,Cassandra会成功创建一个无超级权限的普通角色。这个角色默认仅拥有登录权限,没有任何资源(键空间、表等)的访问权限。 - 创建
test.emp表:
超级用户拥有集群所有资源的权限,所以这条CREATE TABLE语句会顺利执行,test键空间下会生成结构为(id INT PRIMARY KEY, emp_name TEXT)的emp表。 - 查看
customer权限:
执行LIST ALL PERMISSIONS OF customer;返回空结果完全符合预期,因为此时还未给customer分配任何针对test键空间或emp表的权限。 customer角色执行SELECT查询的行为:
由于customer没有test.emp表的SELECT权限,Cassandra会立即返回Unauthorized错误,具体提示信息类似:Unauthorized: User customer has no SELECT permission on test.emp or any of its parents。
这个查询操作不会被执行,不会读取任何数据,仅会返回权限拒绝的提示,不会对集群产生其他影响。
内容的提问来源于stack exchange,提问作者Rumesh Krishnan
相关产品推荐
相关产品推荐

