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.
Dunno if it depends on the Google Workspace subscription or if this is a newer development, but I've been able forward group membership from the Google Workspace IdP to the SP and use it in role mapping directly. The Google Workspace Documentation also seems pretty unequivocal about this:
After having mapped the groups on Google Workspace IdP to an "App attribute" (in our case named
google_groups
), I've been able to use it successfully for role mapping:Kibana user settings:
Role mapping rule: