本文介紹如何基於Elasticsearch配置活動目錄AD(Active Directory)身份認證,以實現AD域下相應角色的使用者訪問Elasticsearch。
前提條件
您已完成以下操作:
建立Elasticsearch執行個體。本文以7.10版本執行個體為例
具體操作,請參見建立Elasticsearch執行個體。
準備與Elasticsearch相同專用網路下的AD域環境和資料,本文以Windows Server 2012為例。
本文配置的使用者名稱稱為ccy1,根域為ccy.com。
使用限制
自2020年10月起,Elasticsearch對不同地區進行了網路架構的調整,對建立的執行個體有以下影響:
舊網路架構下,如果需要訪問公網,可以直接使用SNAT功能或自建Nginx代理。
新網路架構下,AD功能受到網路限制,您可以使用PrivateLink進行VPC網路打通,具體配置請參見配置執行個體私網串連。如果您需要訪問公網,則需要配置Nginx代理進行請求轉寄。
舊網路架構下,Elasticsearch僅支援單可用性區域的AD認證。
關於網路架構,請參見【通知】網路架構調整。
操作流程
步驟一:擷取終端節點網域名稱(可選)
如果您建立的Elasticsearch處於新網路架構下(2020年10月及之後建立的執行個體屬於新網路架構),需要藉助PrivateLink,打通使用者VPC與阿里雲服務帳號VPC,擷取終端網域名稱,為後續配置做準備。具體操作如下:
- 建立與Elasticsearch執行個體處於同一VPC下,且支援PrivateLink功能的Server Load Balancer執行個體。
具體操作,請參見步驟一:建立並配置Server Load Balancer執行個體。
配置Server Load Balancer執行個體。
配置時,需要指定LDAP所在的伺服器為後端伺服器,監聽連接埠為389。
具體操作,請參見配置執行個體私網串連。
- 建立終端節點服務。
具體操作,請參見步驟二:建立終端節點服務。
- 配置Elasticsearch私網互連。
具體操作,請參見步驟三:配置阿里雲ES私網串連。
- 擷取終端節點網域名稱。
具體操作,請參見配置執行個體私網串連。
說明 請先記錄擷取到的節點網域名稱,該網域名稱會在後續配置中使用。
步驟二:配置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.bind_password: your_password
參數 | 說明 |
order | 進行身分識別驗證時,檢查已配置的AD域的順序。 說明 8.x版本要求order數值唯一性,建議使用2。 |
domain_name | 根域的名稱。 |
url | AD域與ECS執行個體進行私網串連的URL及連接埠號碼,詳細資料請參見Configuring an Active Directory realm。 重要 新網路架構下需要設定為 |
bind_dn | 執行所有AD搜尋請求的使用者。 |
secure_bind_password | 驗證AD域中身份資訊的密碼。 |
步驟三:為域帳號映射角色
登入目標Elasticsearch執行個體的Kibana控制台。
具體操作,請參見登入Kibana控制台。
說明不同版本操作可能略有差別,請以實際介面為準。
根據頁面提示進入Kibana首頁,單擊開發工具。
在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" } } ] } }
步驟四:驗證結果
使用已授權的ccy1使用者登入目標Elasticsearch的Kibana。
根據頁面提示進入Kibana首頁,單擊開發工具。
在Console頁簽,執行如下命令,驗證ccy1使用者是否有執行對應操作的許可權。
GET _cat/indices
如果ccy1使用者有許可權,會返回如下結果,說明AD域下ccy1使用者權限設定成功。