在没有硬编码用户名密码的情况下访问cassandra

Accessing cassandra without hardcoded username password

我有一个可用的现有 Datastax Cassandra 设置。我们刚刚向系统添加了身份验证,现在我们可以使用我们的 AD 帐户登录。这非常好,当然有效。但是,应用程序需要使用硬编码 username/password 才能连接。

在 SQL 服务器中,我们能够将用户设置为 运行 服务,然后它将通过 AD 连接并工作。然而在 Cassandra 中却不一样。

如果我不想在我的 app.config 文件中包含用户名,尤其是密码,我有什么选择?

您可以使用 DSE (Datastax Enterprise) 通过 LDAP 进行身份验证,因此身份验证阶段是使用 LDAP 完成的,而不是您目前正在使用的 DSE 中的内部身份验证。请注意,我在这里的评论适用于 DSE5.0 以上版本,但您可以在 4.6 以上版本的 DSE 中使用 LDAP 身份验证。

文档(下面的link)涵盖了这一点。基本步骤如下:

  1. cassandra.yaml 中配置您的身份验证器以使用 DSE 身份验证器

    authenticator: com.datastax.bdp.cassandra.auth.DseAuthenticator

  2. 使用 CREATE ROLE 命令

  3. 在 cassandra 中创建一个内部角色以映射到 LDAP 服务器中的 LDAP 组
  4. 确保您需要使用的所有用户映射到相关的 LDAP 组(LDAP 配置的一部分)

  5. 配置您的 dse.yaml 以获得 LDAP 服务器的正确设置

  6. 重启DSE进程使设置生效

以下文档提供了一些很好的示例和背景信息:

https://docs.datastax.com/en/latest-dse/datastax_enterprise/unifiedAuth/unifiedAuthConfig.html

https://docs.datastax.com/en/latest-dse/datastax_enterprise/sec/authLdapConfig.html

注意:配置 dse.yaml 时请注意文档中关于 user_search_filter:

的注释

When using Active Directory set the filter to (sAMAccountName={0})