配置Active Directory身份認(rèn)證
本文介紹如何基于阿里云Elasticsearch配置活動(dòng)目錄AD(Active Directory)身份認(rèn)證,以實(shí)現(xiàn)AD域下相應(yīng)角色的用戶訪問(wèn)阿里云Elasticsearch。
前提條件
您已完成以下操作:
創(chuàng)建阿里云Elasticsearch實(shí)例。本文以7.10版本實(shí)例為例
具體操作,請(qǐng)參見(jiàn)創(chuàng)建阿里云Elasticsearch實(shí)例。
準(zhǔn)備與阿里云Elasticsearch相同專有網(wǎng)絡(luò)下的AD域環(huán)境和數(shù)據(jù),本文以Windows Server 2012為例。
具體操作,請(qǐng)參見(jiàn)使用Windows實(shí)例搭建AD域。本文配置的用戶名稱為ccy1,根域?yàn)?span data-tag="parmname" id="parmname-4sd-jml-wrb" class="parmname">ccy.com,如下圖所示。
使用限制
自2020年10月起,阿里云Elasticsearch對(duì)不同地域進(jìn)行了網(wǎng)絡(luò)架構(gòu)的調(diào)整,對(duì)創(chuàng)建的實(shí)例有以下影響:
舊網(wǎng)絡(luò)架構(gòu)下,如果需要訪問(wèn)公網(wǎng),可以直接使用SNAT功能或自建Nginx代理。
新網(wǎng)絡(luò)架構(gòu)下,AD功能受到網(wǎng)絡(luò)限制,您可以使用PrivateLink進(jìn)行VPC網(wǎng)絡(luò)打通,具體配置請(qǐng)參見(jiàn)配置實(shí)例私網(wǎng)連接。如果您需要訪問(wèn)公網(wǎng),則需要配置Nginx代理進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)。
舊網(wǎng)絡(luò)架構(gòu)下,阿里云Elasticsearch僅支持單可用區(qū)的AD認(rèn)證。
關(guān)于網(wǎng)絡(luò)架構(gòu),請(qǐng)參見(jiàn)【通知】網(wǎng)絡(luò)架構(gòu)調(diào)整。
操作流程
步驟一:獲取終端節(jié)點(diǎn)域名(可選)
如果您創(chuàng)建的阿里云Elasticsearch處于新網(wǎng)絡(luò)架構(gòu)下(2020年10月及之后創(chuàng)建的實(shí)例屬于新網(wǎng)絡(luò)架構(gòu)),需要借助PrivateLink,打通用戶VPC與阿里云服務(wù)賬號(hào)VPC,獲取終端域名,為后續(xù)配置做準(zhǔn)備。具體操作如下:
- 創(chuàng)建與阿里云Elasticsearch實(shí)例處于同一VPC下,且支持PrivateLink功能的負(fù)載均衡實(shí)例。
具體操作,請(qǐng)參見(jiàn)步驟一:創(chuàng)建并配置負(fù)載均衡實(shí)例。
配置負(fù)載均衡實(shí)例。
配置時(shí),需要指定LDAP所在的服務(wù)器為后端服務(wù)器,監(jiān)聽(tīng)端口為389。
具體操作,請(qǐng)參見(jiàn)配置實(shí)例私網(wǎng)連接。
- 創(chuàng)建終端節(jié)點(diǎn)服務(wù)。
具體操作,請(qǐng)參見(jiàn)步驟二:創(chuàng)建終端節(jié)點(diǎn)服務(wù)。
- 配置阿里云Elasticsearch私網(wǎng)互通。
具體操作,請(qǐng)參見(jiàn)步驟三:配置阿里云ES私網(wǎng)連接。
- 獲取終端節(jié)點(diǎn)域名。
具體操作,請(qǐng)參見(jiàn)配置實(shí)例私網(wǎng)連接。
說(shuō)明 請(qǐng)先記錄獲取到的節(jié)點(diǎn)域名,該域名會(huì)在后續(xù)配置中使用。
步驟二:配置AD認(rèn)證
您可以通過(guò)Elasticsearch的安全功能與AD域通信,實(shí)現(xiàn)用戶身份認(rèn)證。安全功能基于LDAP與AD域進(jìn)行通信,因此active_directory域類似于ldap域。與LDAP目錄一樣,AD域分層存儲(chǔ)用戶和組。AD域通過(guò)發(fā)送LDAP綁定請(qǐng)求,驗(yàn)證用戶的身份。驗(yàn)證后,AD域會(huì)通過(guò)搜索查找對(duì)應(yīng)用戶在Active Directory中的條目。一旦找到該用戶,AD域就會(huì)從Active Directory中用戶條目的tokenGroups屬性中檢索該用戶的組成員身份。詳細(xì)信息,請(qǐng)參見(jiàn)Configuring an Active Directory realm。
目標(biāo)阿里云Elasticsearch為6.x、7.x、8.x版本。
在目標(biāo)Elasticsearch實(shí)例的YML文件中添加如下配置,設(shè)置對(duì)應(yīng)用戶的AD認(rèn)證。具體操作,請(qǐng)參見(jiàn)配置YML參數(shù)。
目標(biāo)阿里云Elasticsearch為其他版本
先嘗試在目標(biāo)Elasticsearch實(shí)例的YML文件中添加如下配置。如果控制臺(tái)操作失敗,無(wú)法觸發(fā)YML配置的變更重啟,再通過(guò)提交工單,將相關(guān)配置提交給技術(shù)人員幫您配置。
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
參數(shù) | 說(shuō)明 |
order | 進(jìn)行身份驗(yàn)證時(shí),檢查已配置的AD域的順序。 說(shuō)明 8.x版本要求order數(shù)值唯一性,建議使用2。 |
domain_name | 根域的名稱。 |
url | AD域與ECS實(shí)例進(jìn)行私網(wǎng)連接的URL及端口號(hào),詳細(xì)信息請(qǐng)參見(jiàn)Configuring an Active Directory realm。 重要 新網(wǎng)絡(luò)架構(gòu)下需要設(shè)置為 |
bind_dn | 執(zhí)行所有AD搜索請(qǐng)求的用戶。 |
secure_bind_password | 驗(yàn)證AD域中身份信息的密碼。 |
步驟三:為域賬號(hào)映射角色
登錄目標(biāo)Elasticsearch實(shí)例的Kibana控制臺(tái)。
具體操作,請(qǐng)參見(jiàn)登錄Kibana控制臺(tái)。
說(shuō)明不同版本操作可能略有差別,請(qǐng)以實(shí)際界面為準(zhǔn)。
根據(jù)頁(yè)面提示進(jìn)入Kibana主頁(yè),單擊開(kāi)發(fā)工具。
在Console頁(yè)簽,執(zhí)行如下命令,將AD域下的ccy1用戶設(shè)置為管理員角色。
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" } } ] } }
步驟四:驗(yàn)證結(jié)果
使用已授權(quán)的ccy1用戶登錄目標(biāo)Elasticsearch的Kibana。
根據(jù)頁(yè)面提示進(jìn)入Kibana主頁(yè),單擊開(kāi)發(fā)工具。
在Console頁(yè)簽,執(zhí)行如下命令,驗(yàn)證ccy1用戶是否有執(zhí)行對(duì)應(yīng)操作的權(quán)限。
GET _cat/indices
如果ccy1用戶有權(quán)限,會(huì)返回如下結(jié)果,說(shuō)明AD域下ccy1用戶權(quán)限設(shè)置成功。