在cassandra中启用基于角色的身份验证后,如何提供向后读取兼容性?

nhhxz33t  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(234)

我们要把Cassandra的设置从 authenticator: AllowAllAuthenticationauthenticator: PasswordAuthenticator 启用基于角色的身份验证。将有两个角色: admin 哪个是超级用户 read-only 只允许阅读。
我想为cassandra集群的用户提供向后兼容性。更具体地说,许多用户使用
使用 cqlsh python cassandra包
php cassandra包
只读取Cassandra的数据。目前他们没有指定任何用户名或密码。因此我想 read-only 角色某种“默认”角色,即如果未提供用户名和密码,则该角色将自动设置为 read-only 因此用户可以读取数据,因此客户端不需要更改代码。
有办法吗?我目前在以下两个方面遇到了问题:
默认用户为 cassandra 如果没有在中指定角色/用户 cqlsh . 我没有找到设置默认用户/角色的方法。
对于默认用户 cassandra ,我仍然要为它设置密码。
如有任何建议,将不胜感激!提前谢谢。

hyrbngr7

hyrbngr71#

我来自甲骨文公司,多年来一直以sysdba的身份做“sqlplus”/工作。我喜欢它,因为o/s证明了我的身份。现在,在Cassandra也有类似的东西,但并不安全。基本上,在您的主目录中有一个名为“.cassandra”(隐藏)的子目录。在该目录中有一个名为“cqlshrc”(so~/.cassandra/cqlshrc)的文件(如果没有,创建一个)。您可以添加身份验证信息,只需键入“cqlsh”就可以登录到该文件,而无需其他任何操作(除非您在需要“host”和“port”的远程位置进行操作)。除其他外,cqlshrc文件还有一个如下所示的身份验证部分:

[authentication]
username = <your_user_name>
password = <your_password>

因此,您只需将所需的用户名和密码放在该文件中,就可以在不提供用户名和密码的情况下进行连接(您还可以运行“cqlsh-u your\u user\u name”,它也会在您的cqlshrc文件中找到您的密码)。
您可以在这里看到一些明显的问题:1)密码是明文的2)如果更改密码,则需要更改cqlshrc文件中的密码
我不建议你使用“Cassandra”用户做任何事情。事实上,我会放弃的。原因是因为cassandra用户使用cl=quorum执行所有操作。我们在调查来自opscenter和我们的备份工具(如您所见,我们使用dse)的巨大i/o请求时发现了这一点。他们都在使用cassandra并重击具有cassandra身份验证信息的节点。很明显,代码中加入了cl=quorum,这有点愚蠢。总之,上面的方法是让用户与特定的用户登录,而不提供凭证,这样就很容易进行切换。
希望有帮助
-吉姆

相关问题