本文介紹如何基于阿里云Elasticsearch配置活動目錄AD(Active Directory)身份認證,以實現AD域下相應角色的用戶訪問阿里云Elasticsearch。
前提條件
您已完成以下操作:
創建阿里云Elasticsearch實例。
具體操作,請參見創建阿里云Elasticsearch實例。本文以7.10版本實例為例。
準備與阿里云Elasticsearch相同專有網絡下的AD域環境和數據,本文以Windows Server 2012為例。
具體操作,請參見ECS實例搭建Windows系統AD域。本文配置的用戶名稱為ccy1,根域為ccy.com,如下圖所示。
使用限制
自2020年10月起,阿里云Elasticsearch對不同地域進行了網絡架構的調整,對創建的實例有以下影響:
舊網絡架構下,如果需要訪問公網,可以直接使用SNAT功能或自建Nginx代理。
新網絡架構下,AD功能受到網絡限制,您可以使用PrivateLink進行VPC網絡打通,具體配置請參見配置實例私網連接。如果您需要訪問公網,則需要配置Nginx代理進行請求轉發。
舊網絡架構下,阿里云Elasticsearch僅支持單可用區的AD認證。
關于網絡架構,請參見【通知】網絡架構調整。
操作流程
步驟一:獲取終端節點域名(可選)
如果您創建的阿里云Elasticsearch處于新網絡架構下(2020年10月及之后創建的實例屬于新網絡架構),需要借助PrivateLink,打通用戶VPC與阿里云服務賬號VPC,獲取終端域名,為后續配置做準備。具體操作如下:
- 創建與阿里云Elasticsearch實例處于同一VPC下,且支持PrivateLink功能的負載均衡實例。
具體操作,請參見步驟一:創建并配置負載均衡實例。
配置負載均衡實例。
配置時,需要指定LDAP所在的服務器為后端服務器,監聽端口為389。
具體操作,請參見配置實例私網連接。
- 創建終端節點服務。
具體操作,請參見步驟二:創建終端節點服務。
- 配置阿里云Elasticsearch私網互通。
具體操作,請參見步驟三:配置阿里云Elasticsearch私網互通。
- 獲取終端節點域名。
具體操作,請參見配置實例私網連接。
說明 請先記錄獲取到的節點域名,該域名會在后續配置中使用。
步驟二:配置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。 重要 新網絡架構下需要設置為 |
bind_dn | 執行所有AD搜索請求的用戶。 |
secure_bind_password | 驗證AD域中身份信息的密碼。 |
步驟三:為域賬號映射角色
登錄目標Elasticsearch實例的Kibana控制臺。
具體操作,請參見登錄Kibana控制臺。
說明本文以阿里云Elasticsearch 7.10.0版本為例,其他版本操作可能略有差別,請以實際界面為準。
根據頁面提示進入Kibana主頁,單擊右上角的Dev tools。
在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主頁,單擊右上角的Dev tools。
在Console頁簽,執行如下命令,驗證ccy1用戶是否有執行對應操作的權限。
GET _cat/indices
如果ccy1用戶有權限,會返回如下結果,說明AD域下ccy1用戶權限設置成功。