我使用的是cassandra3.11.4和cql规范3.4.4,我所有使用cassandra的节点微服务都不使用任何类型的身份验证。cassandra yaml中的authenticator字段当前设置为authenticator:allowallauthenticator
问题是,我想为键空间中的一个表创建带有附加到它的角色的授权,而不需要为键空间中的其他表这样做。
这样的事情可能吗?如我所知,我使用expresscassandra的服务在我更改验证器passwordauthenticator时就开始抛出错误。
在我的产品中,我不希望这样,因为这将破坏我的工作服务,他们将开始抛出错误,要求在连接中的身份验证信息。
1条答案
按热度按时间6uxekuva1#
运行一个不安全的cassandra集群是一个非常糟糕的主意。尤其是被多个服务或应用程序使用的。
我会这么做:
将“secure”表重新创建到它自己的键空间。将其保留在原始密钥空间中可以更容易地隔离和应用安全性。
为所有服务提供用户名和密码。前任:
shareduser
/blahblahblah
将服务设置为使用共享用户及其密码。cassandra驱动程序可以在集群上发送凭证,同时禁用auth…它只是忽略凭证。在一个节点上打开身份验证和授权,然后重新启动。您的服务将继续通过剩余的不安全节点进行连接。
使用cqlsh对安全节点进行身份验证。更改的复制
system_auth
要复制到每个dc中至少3个节点的键空间。然后创建共享用户和安全用户。授予安全用户对其新密钥空间中所需表的访问权限。授予共享用户对原始密钥空间的访问权。
前任:
验证用户是否可以访问所需的表。
在其余节点上启用身份验证和授权,然后在这些节点上重新启动cassandra。
这些步骤应该允许您的现有服务继续正常工作。