需要为键空间内的单个表设置授权

时间:2019-07-15 10:13:23

标签: authentication cassandra authorization

我正在使用cassandra 3.11.4和CQL规范3.4.4 我使用cassandra的所有节点微服务均不使用任何身份验证。 cassandra yaml中的authenticator字段当前设置为authenticator:AllowAllAuthenticator

问题是我想为我的键空间中的单个表创建授权,并为其添加角色,而对于键空间中的其他表则不需要任何授权。

像这样可能吗?正如我可以检查的那样,一旦更改身份验证器:PasswordAuthenticator,使用Express cassandra的服务就会开始引发错误。

在我的产品中,我不希望这样做,因为这会破坏我的工作服务,并且它们将开始抛出错误,要求在连接中提供身份验证信息。

1 个答案:

答案 0 :(得分:0)

<opinion>

运行不安全的Cassandra集群是一个可怕的,可怕的想法。尤其是一种被多个服务或应用程序使用的

</opinion>

这就是我要做的:

  1. 将“安全”表重新创建为其自己的键空间。将其保留在原始密钥空间中,可以更轻松地隔离和应用安全性。

  2. 输入用户名和密码以使用所有服务。例如:shareduser / blahblahblah

  3. 设置您的服务以使用共享用户及其密码。 Cassandra驱动程序可以发送凭据以及在群集上禁用的身份验证...它只是忽略它们。

  4. 在一个节点上打开“身份验证和授权”,然后重新启动。您的服务将继续通过其余不安全的节点进行连接。

  5. 使用cqlsh验证安全节点。更改system_auth键空间的复制,以复制到每个DC中的至少3个节点。然后创建共享用户和受保护用户。

  6. 授予安全用户访问其新密钥空间中所需表的权限。授予共享用户访问原始密钥空间的权限。

例如:

GRANT ALL PERMISSIONS ON keyspace2.securetable TO secureuser;

GRANT ALL ON KEYSPACE keyspace1 TO shareduser;
  1. 验证用户可以访问所需的表。

  2. 在其余节点上打开“身份验证和授权”,然后在它们上重新启动Cassandra。

这些步骤应可使您现有的服务继续正常运行。