阿里云Elasticsearch(簡稱ES)支持單點登錄到Kibana,開啟SAML身份驗證后,允許您使用符合SAML 2.0 的身份提供者IDP訪問阿里云ES和Kibana。本文介紹通過配置安全斷言標記語言SAML的身份提供者IDP和服務提供者ES及Kibana,實現單點登錄Kibana控制臺。
背景信息
在安全斷言標記語言SAML中,ES和Kibana作為服務提供者SP(Service Provider),支持SAML 2.0 協議的Web瀏覽器SSO和SAML 2.0 Single Logout配置 ,使您能夠使用任何符合SAML 2.0 的身份提供者IDP( IDentity Provider)訪問阿里云ES和Kibana,例如,阿里云應用身份服務IDaaS、聯合身份驗證服務ADFS(Active Directory Federation Services)等。本文以IDaaS為例進行介紹。
單點登錄SSO(Single Sign On):
指在多個應用系統中,用戶只需要登錄一次,就可以訪問所有相互信任的應用系統。詳細信息請參見單點登錄和身份聯邦。
安全斷言標記語言SAML(Security Assertion Markup Language):
基于XML協議,使用包含斷言(Assertion)的安全令牌,在身份提供者IDP和服務提供者SP之間傳遞身份信息,實現基于網絡跨域的單點登錄。SAML協議是成熟的認證協議,在公有云和私有云中有非常廣泛的運用。詳細信息請參見SAML。
阿里云應用身份服務IDaaS(Alibaba Cloud Identity as a Service):
阿里云為企業用戶提供的一套集中式身份、權限、應用管理服務,IDaaS支持多種產品,例如EIAM、CIAM等。詳細信息請參見什么是IDaaS。
前提條件
已創建阿里云ES實例,并開啟HTTPS訪問協議。本文以7.10版本實例為例,其他版本的操作可能存在差異,具體以實際界面為準。
說明創建實例,請參見創建阿里云Elasticsearch實例。
開啟HTTPS,請參見使用HTTPS協議。
開通IDaaS服務的EIAM實例。具體操作,請參見開通和試用流程。
說明Elastic僅支持SAML身份驗證的HTTP-Redirect binding方式,不支持HTTP-POST binding及其他方式,因此只需保證PC端可以訪問IDP及SP服務即可。
Kibana公網端口為443
操作步驟
開啟SAML身份驗證需要重啟集群生效,為了減少變更影響,請在業務低峰期操作。
- 登錄阿里云Elasticsearch控制臺。
- 在左側導航欄,單擊Elasticsearch實例。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在目標實例的左側導航欄,選擇
。在集群訪問設置區域,打開SAML身份驗證開關。
說明如果當前實例暫未開啟HTTPS訪問協議,對話框中會提示請先在當前頁面集群網絡配置中開啟HTTPS協議。
在啟用SAML身份驗證控制面板,配置SAML應用。
在配置SAML應用向導頁面,選擇訪問方式,本文選擇公網訪問Kibana。
下載IdP元數據。具體操作,請參見配置IDaaS SAML應用。
說明單點登錄地址ACS URL和應用唯一標識SP Entity ID可在配置SAML應用向導頁面復制。
單擊或拖拽上傳IdP元數據。
單擊下一步。
關聯ES自定義角色。
在關聯ES自定義角色向導頁面,輸入ES訪問密碼。
角色名稱:默認es_saml1_default,不支持修改。
操作權限:默認為創建的角色es_saml1_default開啟所有權限。如果您需要配置更細粒度的權限,可創建角色后在Kibana中修改角色的權限。具體操作,請參見通過Elasticsearch X-Pack角色管理實現用戶權限管控。
訪問密碼:輸入ES訪問密碼,用于校驗用戶是否具有創建角色的權限。
單擊創建并關聯角色。
創建角色,并將角色與SAML進行映射。
單擊下一步。
單擊完成。
頁面上方提示開啟Saml身份驗證成功,表明已成功配置開啟Saml身份驗證,實例重啟中。
實例重啟完成后,驗證Kibana單點登錄。
在左側導航欄,選擇
。在Kibana區域,單擊公網入口。
選擇Log in with Elasticsearch。
輸入用戶名和密碼,單擊登錄。
您可以看到已成功登錄Kibana頁面。
說明關于登錄Kibana的更多信息,請參見登錄Kibana控制臺。
您可以在實例的安全配置頁面,查看并修改SAML身份認證的相關配置,如果SAML配置正確但仍存在無法登錄的情況,請檢查是否正確配置Kibana訪問白名單或安全組。具體操作,請參見配置Kibana公網或私網訪問白名單。
配置IDaaS SAML應用
登錄IDaaS管理平臺。
單擊目標IDaaS實例ID。
添加應用。
在左側菜單欄,單擊應用。
在應用頁面,單擊添加應用。
單擊標準協議頁簽。
在SAML 2.0區域,單擊添加應用。
輸入應用名稱,單擊立即添加。
在登錄訪問的單點登錄頁簽下,完成應用的單點登錄配置。
配置如下參數,其他參數保持默認。更多參數信息,請參見IDaaS 側配置字段說明。
分類
參數
說明
基本配置
單點登錄地址
ACS URL
單點登錄地址用來接收來自IDP的身份驗證信息。您可以在ES控制臺的配置SAML應用向導頁面,復制單點登錄地址ACS URL。
應用唯一標識
SP Entity ID
應用唯一標識是服務提供者SP的訪問URL,本文的服務提供者為Kibana。您可以在ES控制臺的配置SAML應用向導頁面,復制應用唯一標識SP Entity ID。
授權范圍
選擇授權范圍。
如果選擇手動授權,需要在登錄訪問的應用授權頁簽中進行權限分配。
高級配置
NameID 格式
NameIDFormat
選擇2.0 persistent。
配置示例:
在應用配置信息區域,單擊IdP元數據后的下載。
單擊保存,保存添加的應用。
其他操作
您可以在實例的安全配置頁面,在集群訪問設置區域,查看、修改SAML身份認證配置或關閉SAML身份驗證。
項目 | 操作 |
查看SAML身份認證配置 | 單擊SAML身份驗證后的修改配置,查看SAML身份驗證配置信息。 |
修改SAML身份認證配置 | 單擊SAML身份驗證后的修改配置:
|
關閉SAML身份驗證 | 關閉SAML身份驗證開關,在彈出的對話框中單擊確定,集群重啟后即可生效。 說明 確認關閉SAML身份驗證后,當前SAML身份認證相關的配置將被清除。 |
Kibana公網端口為5601
步驟一:配置IDaaS SAML應用
登錄IDaaS管理平臺。
單擊目標IDaaS實例ID。
添加應用。
在左側菜單欄,單擊應用。
在應用頁面,單擊添加應用。
單擊標準協議頁簽。
在SAML 2.0區域,單擊添加應用。
輸入應用名稱,單擊立即添加。
在登錄訪問的單點登錄頁簽下,完成應用的單點登錄配置。
配置如下參數,選擇授權范圍,其他參數保持默認。更多參數信息,請參見IDaaS 側配置字段說明。
分類
參數
說明
基本配置
單點登錄地址
ACS URL
用來接收來自IDP的身份驗證信息,此ACS端點僅支持SAML HTTP-POST綁定,通常配置為:
${kibana-url}:5601/api/security/v1/saml
。應用唯一標識
SP Entity ID
服務提供者SP的訪問URL。本文的服務提供者為Kibana,應用唯一標識需要配置為
${kibana-url}:5601
。授權范圍
選擇授權范圍。如果選擇手動授權,需要在登錄訪問的應用授權頁簽中進行權限分配。
高級配置
NameID 格式
NameIDFormat
選擇2.0 persistent。
說明${kibana-url}
為Kibana公網地址。您可以在配置Kibana訪問白名單的頁面查看Kibana公網地址和Kibana端口。具體操作,請參見配置Kibana公網或私網訪問白名單。
配置示例:
在應用配置信息區域,單擊IdP元數據后的下載。
下載的文件即為IDaaS SAML元配置文件,以備后用。
步驟二:創建自定義角色并配置elastic SAML
在目標實例中登錄Kibana控制臺。具體操作,請參見登錄Kibana控制臺。
創建一個角色。具體操作,請參見通過Elasticsearch X-Pack角色管理實現用戶權限管控。
將角色與SAML進行映射。
<admin_role>
需要替換為上一步創建的角色名稱。PUT /_security/role_mapping/idaas-test { "roles": "<admin_role>" , "enabled": true, "rules": { "field": { "realm.name": "saml1" } } }
制作Elasticsearch和Kibana的YML配置文件,在配置文件中添加SAML信息。
說明YML參數信息需要與配置IDaaS SAML應用中配置的SAML信息保持一致。
elasticsearch.yml配置文件內容
#elasticsearch.yml配置 xpack.security.authc.token.enabled: 'true' xpack.security.authc.realms.saml.saml1: order: 2 idp.metadata.path: saml/metadata.xml idp.entity_id: "https://es-cn-n6xxxxxx1d.elasticsearch.aliyuncs.com/" sp.entity_id: "https://es-cn-n6xxxxxx1d.kibana.elasticsearch.aliyuncs.com:5601/" sp.acs: "https://es-cn-n6xxxxxx1d.kibana.elasticsearch.aliyuncs.com:5601/api/security/v1/saml" attributes.principal: "nameid:persistent" attributes.groups: "roles"
參數
說明
xpack.security.authc.token.enabled
是否開啟Token服務。需要設置為true,才可配置SAML單點登錄,詳細信息請參見saml-enable-token。
xpack.security.authc.realms.saml.saml1
定義的身份認證領域,本文示例為saml1。領域的詳細信息請參見Realms。
order
領域優先級,數值越低,優先級越高。
說明8.x版本要求order數值唯一性,建議使用2。
idp.metadata.path
IDP元數據文件路徑。
idp.entity_id
IDP使用的身份標識符,和元數據文件中的EntityID相匹配。
sp.entity_id
Kibana實例唯一標識符,與SAML應用的應用唯一標識SP Entity ID相同。如果將Kibana添加為IDP的服務提供商,需要設置此值,推薦配置為Kibana的URL。
重要請確保參數值與業務環境保持一致。如果您配置了反向代理訪問Kibana,而不是直接通過URL訪問,需要將該參數配置為反向代理的地址和端口。
sp.acs
斷言消費服務ACS端點,與SAML應用的單點登錄地址ACS URL相同。用來接收來自IDP的身份驗證信息,此ACS端點僅支持SAML HTTP-POST綁定,通常配置為
${kibana-url}:5601/api/security/v1/saml
。說明${kibana-url}
為Kibana公網地址。attributes.principal
斷言信息,具體請參見Attribute mapping。
attributes.groups
斷言信息,具體請參見Attribute mapping。
kibana.yml配置文件內容
# kibana配置 xpack.security.authc.providers: saml.saml1: order: 0 realm: "saml1" basic.basic1: order: 1 icon: "logoElasticsearch" hint: "Typically for administrators"
參數
說明
xpack.security.authc.providers
添加SAML提供程序,以設置Kibana使用SAML SSO作為身份驗證方法。
xpack.security.authc.providers.saml.<provider-name>.realm
設置SAML領域名稱。請將<provider-name>替換為elasticsearch.yml中配置的領域名稱。本文示例為saml1。
xpack.security.authc.providers.basic.basic1
Kibana配置SAML后,僅支持符合SAML身份驗證的用戶登錄Kibana。為了便于在Kibana登錄頁面支持basic身份登錄(尤其在測試環節,可能需要使用elastic用戶名和密碼登錄集群,創建角色及角色映射),可指定basic.basic1部分配置。指定后,Kibana登錄頁面會添加基本身份登錄入口,詳細信息請參見Authentication in kibana。
說明如果用戶不需要使用basic身份登錄Kibana控制臺,可在kibana.yml中不設置basic身份登錄。
步驟三:提交文件
提交工單,將以下文件提交給阿里云Elasticsearch技術支持人員。
IDaaS SAML元配置文件。技術人員會將SAML元配置文件上傳至elasticsearch的config/saml路徑下。
elasticsearch.yml配置文件。技術人員會按照您提交的文件內容,在后端更新您集群的yml文件。
kibana.yml配置文件。技術人員會按照您提交的文件內容,在后端更新您集群的yml文件。
步驟四:驗證Kibana單點登錄
待技術人員配置完成后,驗證Kibana單點登錄。
進入Kibana控制臺登錄頁面,單擊Log in with saml/saml1。
具體操作,請參見登錄Kibana控制臺。
輸入IDaaS關聯的賬號,單擊提交。
您可以看到已成功登錄Kibana頁面。