我有一個現有的Datastax Cassandra設置工作。我們只是向系統添加了身份驗證,現在我們可以使用我們的AD帳戶登錄。這非常好,當然有用。但是,應用程序需要使用硬編碼的用戶名/密碼才能連接。訪問cassandra沒有硬編碼的用戶名密碼
在SQL Server中,我們能夠設置用戶運行服務,然後它將連接並通過AD工作。然而在卡桑德拉卻不一樣。
如果我不想在我的app.config文件中包含用戶名和密碼,我的選項是什麼?
我有一個現有的Datastax Cassandra設置工作。我們只是向系統添加了身份驗證,現在我們可以使用我們的AD帳戶登錄。這非常好,當然有用。但是,應用程序需要使用硬編碼的用戶名/密碼才能連接。訪問cassandra沒有硬編碼的用戶名密碼
在SQL Server中,我們能夠設置用戶運行服務,然後它將連接並通過AD工作。然而在卡桑德拉卻不一樣。
如果我不想在我的app.config文件中包含用戶名和密碼,我的選項是什麼?
您可以通過LDAP和DSE(Datastax Enterprise)使用身份驗證,因此身份驗證階段是使用LDAP完成的,而不是您目前使用的DSE中的內部身份驗證。請注意,我的評論適用於DSE5.0以上版本,但您可以使用早期版本的DSE從4.6開始的LDAP認證。
文檔(下面的鏈接)涵蓋了這一點。基本步驟如下:
配置在cassandra.yaml
認證使用DSE認證
authenticator: com.datastax.bdp.cassandra.auth.DseAuthenticator
創建卡桑德拉內部角色映射到LDAP組(S)在您的LDAP服務器中使用CREATE ROLE
命令
確保您需要使用的所有用戶都映射到相關LDAP組(您的LDAP配置的一部分)
配置您的dse.yaml
有你的LDAP服務器
正確的設置重新啓動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})
添加評論,因爲我不能提供一個完整答案,但由於您使用的是Active Directory,因此可以使用DataStax Enteprise的Kerberos身份驗證。如果運行DSE進程的用戶使用Kerberos進行身份驗證(爲您在其緩存中進行身份驗證的用戶提供了憑單),則可以使用Kerberos連接到DSE,而無需爲應用程序提供用戶名或密碼。 –
@AndyTolbert正確的Kerberos是一個很好的選擇,DSE也支持通過LDAP進行身份驗證,無論是使用Active Directory還是其他版本。我在w.r.t下面添加了一個答案。 DSE5.0起。謝謝! – markc
偉大的答案@markc,這將是偉大的工作! –