全部產品
Search
文件中心

Elasticsearch:配置Active Directory身份認證

更新時間:Jun 30, 2024

本文介紹如何基於Elasticsearch配置活動目錄AD(Active Directory)身份認證,以實現AD域下相應角色的使用者訪問Elasticsearch。

前提條件

您已完成以下操作:

  • 建立Elasticsearch執行個體。

    具體操作,請參見建立Elasticsearch執行個體。本文以7.10版本執行個體為例。

  • 準備與Elasticsearch相同專用網路下的AD域環境和資料,本文以Windows Server 2012為例。

    本文配置的使用者名稱稱為ccy1,根域為ccy.com

使用限制

自2020年10月起,Elasticsearch對不同地區進行了網路架構的調整,對建立的執行個體有以下影響:

  • 舊網路架構下,如果需要訪問公網,可以直接使用SNAT功能或自建Nginx代理。

  • 新網路架構下,AD功能受到網路限制,您可以使用PrivateLink進行VPC網路打通,具體配置請參見配置執行個體私網串連。如果您需要訪問公網,則需要配置Nginx代理進行請求轉寄。

  • 舊網路架構下,Elasticsearch僅支援單可用性區域的AD認證。

說明

關於網路架構,請參見【通知】網路架構調整

操作流程

  1. 步驟一:擷取終端節點網域名稱(可選)

  2. 步驟二:配置AD認證

  3. 步驟三:為域帳號映射角色

  4. 步驟四:驗證結果

步驟一:擷取終端節點網域名稱(可選)

如果您建立的Elasticsearch處於新網路架構下(2020年10月及之後建立的執行個體屬於新網路架構),需要藉助PrivateLink,打通使用者VPC與阿里雲服務帳號VPC,擷取終端網域名稱,為後續配置做準備。具體操作如下:

  1. 建立與Elasticsearch執行個體處於同一VPC下,且支援PrivateLink功能的Server Load Balancer執行個體。
  2. 配置Server Load Balancer執行個體。

    配置時,需要指定LDAP所在的伺服器為後端伺服器,監聽連接埠為389。

    具體操作,請參見配置執行個體私網串連

  3. 建立終端節點服務。

    具體操作,請參見步驟二:建立終端節點服務

  4. 配置Elasticsearch私網互連。
  5. 擷取終端節點網域名稱。

    具體操作,請參見配置執行個體私網串連

    說明 請先記錄擷取到的節點網域名稱,該網域名稱會在後續配置中使用。

步驟二:配置AD認證

您可以通過Elasticsearch的安全功能與AD域通訊,實現使用者身份認證。安全功能基於LDAP與AD域進行通訊,因此active_directory域類似於ldap域。與LDAP目錄一樣,AD域階層式存放區使用者和組。AD域通過發送LDAP綁定請求,驗證使用者的身份。驗證後,AD域會通過搜尋尋找對應使用者在Active Directory中的條目。一旦找到該使用者,AD域就會從Active Directory中使用者條目的tokenGroups屬性中檢索該使用者的群組成員資格。詳細資料,請參見Configuring an Active Directory realm

  • 目標Elasticsearch為6.x、7.x、8.x版本

    在目標Elasticsearch執行個體的YML檔案中添加如下配置,設定對應使用者的AD認證。具體操作,請參見配置YML參數

  • 目標Elasticsearch為其他版本

    先嘗試在目標Elasticsearch執行個體的YML檔案中添加如下配置。如果控制台操作失敗,無法觸發YML配置的變更重啟,再通過提交工單,將相關配置提交給技術人員幫您配置。

xpack.security.authc.realms.active_directory.my_ad.order: 2
xpack.security.authc.realms.active_directory.my_ad.domain_name: ccy.com
xpack.security.authc.realms.active_directory.my_ad.url: ldap://ep-bp1i321219*********-cn-hangzhou-h.epsrv-bp15571d5ps*********.cn-hangzhou.privatelink.aliyuncs.com:389
xpack.security.authc.realms.active_directory.my_ad.bind_dn: cc**@ccy.com
xpack.security.authc.realms.active_directory.my_ad.secure_bind_password: your_password

參數

說明

order

進行身分識別驗證時,檢查已配置的AD域的順序。

說明

8.x版本要求order數值唯一性,建議使用2。

domain_name

根域的名稱。

url

AD域與ECS執行個體進行私網串連的URL及連接埠號碼,詳細資料請參見Configuring an Active Directory realm

重要

新網路架構下需要設定為ldap://<終端節點網域名稱>:<連接埠>,本文以ldap://ep-bp1i321219*********-cn-hangzhou-h.epsrv-bp15571d5ps*********.cn-hangzhou.privatelink.aliyuncs.com:389為例。

bind_dn

執行所有AD搜尋請求的使用者。

secure_bind_password

驗證AD域中身份資訊的密碼。

步驟三:為域帳號映射角色

  1. 登入目標Elasticsearch執行個體的Kibana控制台。

    具體操作,請參見登入Kibana控制台

    說明

    本文以Elasticsearch 7.10.0版本為例,其他版本操作可能略有差別,請以實際介面為準。

  2. 根據頁面提示進入Kibana首頁,單擊右上方的Dev tools

  3. Console頁簽,執行如下命令,將AD域下的ccy1使用者佈建為管理員角色。

    PUT /_security/role_mapping/basic_users
    {
      "roles": [ "superuser" ],
      "enabled": true,
      "rules": {
        "any": [
          {
            "field": {
              "groups": "cn=ali,dc=ccy,dc=com"
            }
          },
          {
            "field": {
              "dn": "cn=ccy1,cn=ali,dc=ccy,dc=com"
            }
          }
        ]
      }
    }

步驟四:驗證結果

  1. 使用已授權的ccy1使用者登入目標Elasticsearch的Kibana。

  2. 根據頁面提示進入Kibana首頁,單擊右上方的Dev tools

  3. Console頁簽,執行如下命令,驗證ccy1使用者是否有執行對應操作的許可權。

    GET _cat/indices

    如果ccy1使用者有許可權,會返回如下結果,說明AD域下ccy1使用者權限設定成功。AD網域設定驗證結果