The following worked with Elastic Cloud, Elasticsearch & Kibana v7.6.0. It should be pretty close for other kinds of deployments. Before starting, make sure you have the right license level that allows SAML.
-
Navigate to the SAML apps section of the admin console
-
Click the Add button and choose to "Add custom SAML app"
-
Write down the Entity ID and download the Idp metadata file
-
Choose application name, description and add logo
-
In the "Service Provider Details" screen add the following:
- ACS URL:
https://<kibana url>:9243/api/security/v1/saml
- Entity ID:
https://<kibana url>:9243/
- Start URL:
https://<kibana url>:9243/
- Name ID: Basic Information | Primary Email
- Name ID Format: Email
- ACS URL:
-
Skip attribute mapping and click "Finished"
-
Enable SAML app to be in "On for everyone" status
-
Rename the metadata file to
metadata.xml
-
Place the file in folder named
saml
-
Compress the folder into zip file.
-
Navigate to the custom plugins section under your Elastic account
-
Add a new plugin:
- Plugin name:
<whatever you like, e.g gsuite-saml>
- Version:
*
- Description:
<whatever you like>
- Plugin name:
-
Upload the zip file created above
-
In Kibana navigate to: Managment -> Security -> Role mappings
-
Create a new role mapping:
- Roles: Whatever roles you need
- Add the following mapping rule:
- User filed:
realm.name
- Type:
text
- Value: <realm name from elasticsearch.yml. e.g
gsuite
>
- User filed:
- Under the Elasticsearch deployment configuration go Edit screen
- Enable the
gsuite-saml
plugin under "Elasticsearch plugins and settings" - Paste the content of
elasticsearch.yml
to "User setting overrides" in the Elasticsearch section - Paste the content of
kibana.yml
to "User setting overrides" in the Kibana section - Click Save and wait for the re-deloyment to finish successfully
If everything went smooth, you should be able to point your browser to Kibana and get authenticated with your Google account.
Thank you for providing this. It is very helpful. We would not have figured it out without your help. We got it working after a few attempts. Here are some additional tips:
Tip #1
It was not clear what "step 1" was since the steps are not numbered. There are two entity IDs in the first section of steps. One is the kibana url and the other is from the gsuite saml app. The below line in the elastic.yml file needs the entity id from the gsuite saml app not the one that is the kibana url.
idp.entity_id: "https://accounts.google.com/o/saml2?idpid=XXXXXXXXX <Entity id from step 1>"
Tip #2
We had two data configurations and a ML configuration. We needed to place the elastic.yml lines in all three locations.