【问题标题】:Accessing cassandra without hardcoded username password在没有硬编码用户名密码的情况下访问 cassandra
【发布时间】:2017-01-24 05:59:54
【问题描述】:

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

在 SQL Server 中,我们能够设置一个用户来运行该服务,然后它将通过 AD 连接和工作。但是在 Cassandra 中就不一样了。

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

【问题讨论】:

  • 添加评论,因为我无法提供完整的答案,但由于您使用的是 Active Directory,您可以将 Kerberos 身份验证与 DataStax Enteprise 一起使用。如果运行 DSE 进程的用户通过 Kerberos 进行了身份验证(在缓存中具有您正在验证的用户的票证),您可以使用 Kerberos 连接到 DSE,而无需向您的应用程序提供用户名或密码。跨度>
  • @AndyTolbert 正确 Kerberos 是一个不错的选择,DSE 还支持通过 LDAP 进行身份验证,无论是使用 Active Directory 还是其他版本。我在 w.r.t. 下面添加了一个答案。 DSE5.0 以上。谢谢!
  • 很好的答案@markc,效果很好!

标签: windows authentication cassandra datastax-enterprise


【解决方案1】:

您可以通过 LDAP 与 DSE (Datastax Enterprise) 一起使用身份验证,因此身份验证阶段是使用 LDAP 完成的,而不是您目前使用的 DSE 中的内部身份验证。请注意,我这里的 cmets 适用于 DSE5.0 及更高版本,但您可以将 LDAP 身份验证与 4.6 及更高版本的 DSE 一起使用。

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

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

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

  2. 使用CREATE ROLE 命令在 cassandra 中创建一个内部角色以映射到 LDAP 服务器中的 LDAP 组

  3. 确保您需要使用的所有用户都映射到相关的 LDAP 组(LDAP 配置的一部分)

  4. 配置您的 dse.yaml 为您的 LDAP 服务器设置正确的设置

  5. 重启 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 的注释:

使用 Active Directory 时,将过滤器设置为 (sAMAccountName={0})

【讨论】:

    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2023-04-03
    相关资源
    最近更新 更多