簡體   English   中英

訪問Elasticsearch時如何對密碼進行哈希處理

[英]How to hash password when accesing Elasticsearch

我對Elasticsearch有疑問。 我使用Search Guard作為傳輸層安全性,當我想從elasticsearch讀取數據時,我必須提供用戶名和密碼。 像這樣:

import org.apache.spark.{SparkConf, SparkContext}

import org.elasticsearch.spark._

object ReadDataFromES {
def main(args: Array[String]) {
  val conf = new SparkConf()
  .setAppName("SampleESApp")
  .set("es.index.auto.create", "true")
  .set("es.nodes", "localhost:9200")
  .set("es.net.http.auth.user", "elastic_user")
  .set("es.net.http.auth.pass", "elastic_password")
  val sc = new SparkContext(conf)

  print("Reading data \n\n\n")
  val RDD = sc.esRDD("bank/account")
  println(RDD.first())
  println("\n\n")
  /*
  print("Writing data \n\n\n")
  RDD.saveToEs("bank/spark")
  */
}
}

但是問題是我不想在代碼中將密碼(es.net.http.auth.pass參數的值)作為純文本。 有人知道散列此密碼的方法嗎?

有一種常見的模式可用於從代碼庫中分離身份驗證信息。 您需要將此類信息存儲在源版本控制系統無法控制或忽略的其他位置。 然后,您將實現通過代碼訪問它們的方式。

例如,您可以將用於Elasticsearch的用戶名和密碼存儲在json文件中,而git或您使用的其他VCS會將其忽略。 然后在您的代碼中,只需讀取json文件,解析用戶名和密碼,然后將其分配給連接配置即可。 因此,用戶名和密碼僅保留本地。 如果您需要在其他地方運行代碼,則只需要在其中創建具有正確用戶名和密碼的json文件即可。

您可以將密碼存儲為加密文本,然后在需要使用時解密。 例如,請參閱如何使用Java中的密碼短語(非移動平台PC)加密和解密String?

或者,請參閱此答案val encryptedPassword = BCrypt.hashpw(password.trim(),BCrypt.gensalt())

https://stackoverflow.com/questions/43189900/hash-salt-and-save-password-slick

BCrypt可從Spring獲得(例如)

http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/crypto/bcrypt/BCrypt.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM