- Introducing Elasticsearch Service
- Adding data to Elasticsearch
- Migrating data
- Ingesting data from your application
- Ingest data with Node.js on Elasticsearch Service
- Ingest data with Python on Elasticsearch Service
- Ingest data from Beats to Elasticsearch Service with Logstash as a proxy
- Ingest data from a relational database into Elasticsearch Service
- Ingest logs from a Python application using Filebeat
- Ingest logs from a Node.js web application using Filebeat
- Configure Beats and Logstash with Cloud ID
- Best practices for managing your data
- Configure index management
- Enable cross-cluster search and cross-cluster replication
- Access other deployments of the same Elasticsearch Service organization
- Access deployments of another Elasticsearch Service organization
- Access deployments of an Elastic Cloud Enterprise environment
- Access clusters of a self-managed environment
- Enabling CCS/R between Elasticsearch Service and ECK
- Edit or remove a trusted environment
- Migrate the cross-cluster search deployment template
- Manage data from the command line
- Preparing a deployment for production
- Securing your deployment
- Monitoring your deployment
- Monitor with AutoOps
- Configure Stack monitoring alerts
- Access performance metrics
- Keep track of deployment activity
- Diagnose and resolve issues
- Diagnose unavailable nodes
- Why are my shards unavailable?
- Why is performance degrading over time?
- Is my cluster really highly available?
- How does high memory pressure affect performance?
- Why are my cluster response times suddenly so much worse?
- How do I resolve deployment health warnings?
- How do I resolve node bootlooping?
- Why did my node move to a different host?
- Snapshot and restore
- Managing your organization
- Your account and billing
- Billing Dimensions
- Billing models
- Using Elastic Consumption Units for billing
- Edit user account settings
- Monitor and analyze your account usage
- Check your subscription overview
- Add your billing details
- Choose a subscription level
- Check your billing history
- Update billing and operational contacts
- Stop charges for a deployment
- Billing FAQ
- Elasticsearch Service hardware
- Elasticsearch Service GCP instance configurations
- Elasticsearch Service GCP default provider instance configurations
- Elasticsearch Service AWS instance configurations
- Elasticsearch Service AWS default provider instance configurations
- Elasticsearch Service Azure instance configurations
- Elasticsearch Service Azure default provider instance configurations
- Change hardware for a specific resource
- Elasticsearch Service regions
- About Elasticsearch Service
- RESTful API
- Release notes
- March 25, 2025
- Enhancements and bug fixes - March 2025
- Enhancements and bug fixes - February 2025
- Enhancements and bug fixes - January 2025
- Enhancements and bug fixes - December 2024
- Enhancements and bug fixes - November 2024
- Enhancements and bug fixes - Late October 2024
- Enhancements and bug fixes - Early October 2024
- Enhancements and bug fixes - September 2024
- Enhancements and bug fixes - Late August 2024
- Enhancements and bug fixes - Early August 2024
- Enhancements and bug fixes - July 2024
- Enhancements and bug fixes - Late June 2024
- Enhancements and bug fixes - Early June 2024
- Enhancements and bug fixes - Early May 2024
- Bring your own key, and more
- AWS region EU Central 2 (Zurich) now available
- GCP region Middle East West 1 (Tel Aviv) now available
- Enhancements and bug fixes - March 2024
- Enhancements and bug fixes - January 2024
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- AWS region EU North 1 (Stockholm) now available
- GCP regions Asia Southeast 2 (Indonesia) and Europe West 9 (Paris)
- Enhancements and bug fixes
- Enhancements and bug fixes
- Bug fixes
- Enhancements and bug fixes
- Role-based access control, and more
- Newly released deployment templates for Integrations Server, Master, and Coordinating
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Enhancements and bug fixes
- Cross environment search and replication, and more
- Enhancements and bug fixes
- Enhancements and bug fixes
- Azure region Canada Central (Toronto) now available
- Azure region Brazil South (São Paulo) now available
- Azure region South Africa North (Johannesburg) now available
- Azure region Central India (Pune) now available
- Enhancements and bug fixes
- Azure new virtual machine types available
- Billing Costs Analysis API, and more
- Organization and billing API updates, and more
- Integrations Server, and more
- Trust across organizations, and more
- Organizations, and more
- Elastic Consumption Units, and more
- AWS region Africa (Cape Town) available
- AWS region Europe (Milan) available
- AWS region Middle East (Bahrain) available
- Enhancements and bug fixes
- Enhancements and bug fixes
- GCP Private Link, and more
- Enhancements and bug fixes
- GCP region Asia Northeast 3 (Seoul) available
- Enhancements and bug fixes
- Enhancements and bug fixes
- Native Azure integration, and more
- Frozen data tier and more
- Enhancements and bug fixes
- Azure region Southcentral US (Texas) available
- Azure region East US (Virginia) available
- Custom endpoint aliases, and more
- Autoscaling, and more
- Cross-region and cross-provider support, warm and cold data tiers, and more
- Better feature usage tracking, new cost and usage analysis page, and more
- New features, enhancements, and bug fixes
- AWS region Asia Pacific (Hong Kong)
- Enterprise subscription self service, log in with Microsoft, bug fixes, and more
- SSO for Enterprise Search, support for more settings
- Azure region Australia East (New South Wales)
- New logging features, better GCP marketplace self service
- Azure region US Central (Iowa)
- AWS region Asia Pacific (Mumbai)
- Elastic solutions and Microsoft Azure Marketplace integration
- AWS region Pacific (Seoul)
- AWS region EU West 3 (Paris)
- Traffic management and improved network security
- AWS region Canada (Central)
- Enterprise Search
- New security setting, in-place configuration changes, new hardware support, and signup with Google
- Azure region France Central (Paris)
- Regions AWS US East 2 (Ohio) and Azure North Europe (Ireland)
- Our Elasticsearch Service API is generally available
- GCP regions Asia East 1 (Taiwan), Europe North 1 (Finland), and Europe West 4 (Netherlands)
- Azure region UK South (London)
- GCP region US East 1 (South Carolina)
- GCP regions Asia Southeast 1 (Singapore) and South America East 1 (Sao Paulo)
- Snapshot lifecycle management, index lifecycle management migration, and more
- Azure region Japan East (Tokyo)
- App Search
- GCP region Asia Pacific South 1 (Mumbai)
- GCP region North America Northeast 1 (Montreal)
- New Elastic Cloud home page and other improvements
- Azure regions US West 2 (Washington) and Southeast Asia (Singapore)
- GCP regions US East 4 (N. Virginia) and Europe West 2 (London)
- Better plugin and bundle support, improved pricing calculator, bug fixes, and more
- GCP region Asia Pacific Southeast 1 (Sydney)
- Elasticsearch Service on Microsoft Azure
- Cross-cluster search, OIDC and Kerberos authentication
- AWS region EU (London)
- GCP region Asia Pacific Northeast 1 (Tokyo)
- Usability improvements and Kibana bug fix
- GCS support and private subscription
- Elastic Stack 6.8 and 7.1
- ILM and hot-warm architecture
- Elasticsearch keystore and more
- Trial capacity and more
- APM Servers and more
- Snapshot retention period and more
- Improvements and snapshot intervals
- SAML and multi-factor authentication
- Next generation of Elasticsearch Service
- Branding update
- Minor Console updates
- New Cloud Console and bug fixes
- What’s new with the Elastic Stack
Set up OpenID Connect with Azure, Google, or Okta
editSet up OpenID Connect with Azure, Google, or Okta
editThis page explains how to implement OIDC, from the OAuth client credentials generation to the realm configuration for Elasticsearch and Kibana, with the following OpenID Connect Providers (OPs):
For further detail about configuring OIDC, check our list of references at the end of this article.
Setting up OpenID Connect with Azure
editFollow these steps to configure OpenID Connect single sign-on on Elasticsearch Service with an Azure OP:
-
Configure the OAuth client ID:
-
Create a new application:
-
Sign into the Azure Portal and go to Entra (formerly Azure Active Directory). From there, select App registrations > New registration to register a new application.
-
Enter a Name for your application, for example
ec-oauth2
. - Select a Supported Account Type according to your preferences.
-
Set the Redirect URI as
KIBANA_ENDPOINT_URL/api/security/oidc/callback
. You can retrieve yourKIBANA_ENDPOINT_URL
by opening the Elasticsearch Service Console and selecting the Kibana Copy endpoint link in your deployment details. - Select Register.
- Confirm that your new Application (client) ID appears in the app details.
-
-
Create a client ID and secret:
-
From the application that you created, go to Certificates & secrets and create a new secret under Client secrets > New client secret.
-
Provide a Description, for example
Kibana
. - Select an expiration for the secret.
- Select Add and copy your newly created client secret for later use.
-
-
-
Add your client secret to the Elasticsearch keystore:
-
Follow the steps described in our security settings documentation to Add a secret value to the keystore:
-
Set the Setting name as
xpack.security.authc.realms.oidc.oidc1.rp.client_secret
.For OIDC, the client secret setting name in the keystore should be of the form:
xpack.security.authc.realms.oidc.<oidc-realm-name>.rp.client_secret
. -
For Type, select
Single string
. - Paste your client secret into the Secret field.
- Select Save.
-
-
-
Configure Elasticsearch with the OIDC realm:
To learn more about the available endpoints provided by Microsoft Azure, refer to the Endpoints details in the application that you configured.
To configure Elasticsearch for OIDC:
- Log in to the Elasticsearch Service Console.
-
Update your Elasticsearch user settings with the following configuration:
xpack: security: authc: realms: oidc: oidc1: order: 2 rp.client_id: "<Application (client) ID>" rp.response_type: "code" rp.requested_scopes: ["openid", "email"] rp.redirect_uri: "KIBANA_ENDPOINT_URL/api/security/oidc/callback" op.issuer: "https://login.microsoftonline.com/<Directory (tenant) ID>/v2.0" op.authorization_endpoint: "https://login.microsoftonline.com/<Directory (tenant) ID>/oauth2/v2.0/authorize" op.token_endpoint: "https://login.microsoftonline.com/<Directory (tenant) ID>/oauth2/v2.0/token" op.userinfo_endpoint: "https://graph.microsoft.com/oidc/userinfo" op.endsession_endpoint: "https://login.microsoftonline.com/<Directory (tenant) ID>/oauth2/v2.0/logout" rp.post_logout_redirect_uri: "KIBANA_ENDPOINT_URL/logged_out" op.jwkset_path: "https://login.microsoftonline.com/<Directory (tenant) ID>/discovery/v2.0/keys" claims.principal: email claim_patterns.principal: "^([^@]+)@YOUR_DOMAIN\\.TLD$"
Where:
-
<Application (client) ID>
is your Client ID, available in the application details on Azure. -
<Directory (tenant) ID>
is your Directory ID, available in the application details on Azure. -
KIBANA_ENDPOINT_URL
is your Kibana endpoint, available from the Elasticsearch Service Console. -
YOUR_DOMAIN
andTLD
in theclaim_patterns.principal
regular expression are your organization email domain and top level domain.
-
Remember to add this configuration for each node type in the User settings if you use several node types based on your deployment architecture (Dedicated Master, High IO, and/or High Storage).
-
Create a role mapping:
The following role mapping for OIDC restricts access to a specific user
(firstname.lastname)
based on theclaim_patterns.principal
email address. This prevents other users on the same domain from having access to your deployment. You can remove the rule or adjust it at your convenience.More details are available in our Configuring role mappings documentation.
POST /_security/role_mapping/oidc_kibana { "enabled": true, "roles": [ "superuser" ], "rules" : { "all" : [ { "field" : { "realm.name" : "oidc1" } }, { "field" : { "username" : [ "<firstname.lastname>" ] } } ] }, "metadata": { "version": 1 } }
If you use an email in the
claim_patterns.principal
, you won’t need to add the domain in the role_mapping (for example,firstname.lastname@your_domain.tld
should befirstname.lastname
). -
Configure Kibana with the OIDC realm:
The next step is to configure Kibana, in order to initiate the OpenID authentication:
- Log in to the Elasticsearch Service Console.
-
Update your Kibana user settings with the following configuration:
xpack.security.authc.providers: oidc.oidc1: order: 0 realm: oidc1 description: "Log in with Azure" basic.basic1: order: 1
Setting up OpenID Connect with Google
editFollow these steps to configure OpenID Connect single sign-on on Elasticsearch Service with a Google OP:
-
Configure the OAuth client ID:
-
Create a new project:
- Sign in to the Google Cloud and open the New Project page. Create a new project.
-
Create a client ID and secret:
-
Navigate to the APIs & Services and open the Credentials tab to create your OAuth client ID.
-
For Application Type choose
Web application
. -
Choose a Name for your OAuth 2 client, for example
ec-oauth2
. -
Add an Authorized redirect URI. The URI should be defined as
KIBANA_ENDPOINT_URL/api/security/oidc/callback
. You can retrieve yourKIBANA_ENDPOINT_URL
by opening the Elasticsearch Service Console and selecting the Kibana Copy endpoint link in your deployment details. - Select Create and copy your client ID and your client secret for later use.
-
-
-
Add your client secret to the Elasticsearch keystore:
-
Follow the steps described in our security settings documentation to Add a secret value to the keystore:
-
Set the Setting name as
xpack.security.authc.realms.oidc.oidc1.rp.client_secret
.For OIDC, the client secret setting name in the keystore should be of the form:
xpack.security.authc.realms.oidc.<oidc-realm-name>.rp.client_secret
. -
For Type, select
Single string
. - Paste your client secret into the Secret field.
- Select Save.
-
-
-
Configure Elasticsearch with the OIDC realm:
To learn more about the endpoints provided by Google, refer to this OpenID configuration.
To configure Elasticsearch for OIDC:
- Log in to the Elasticsearch Service Console.
-
Update your Elasticsearch user settings with the following configuration:
xpack: security: authc: realms: oidc: oidc1: order: 2 rp.client_id: "YOUR_CLIENT_ID" rp.response_type: "code" rp.requested_scopes: ["openid", "email"] rp.redirect_uri: "KIBANA_ENDPOINT_URL/api/security/oidc/callback" op.issuer: "https://accounts.google.com" op.authorization_endpoint: "https://accounts.google.com/o/oauth2/v2/auth" op.token_endpoint: "https://oauth2.googleapis.com/token" op.userinfo_endpoint: "https://openidconnect.googleapis.com/v1/userinfo" op.jwkset_path: "https://www.googleapis.com/oauth2/v3/certs" claims.principal: email claim_patterns.principal: "^([^@]+)@YOUR_DOMAIN\\.TLD$"
Where:
-
YOUR_CLIENT_ID
is your Client ID. -
KIBANA_ENDPOINT_URL
is your Kibana endpoint, available from the Elasticsearch Service Console. -
YOUR_DOMAIN
andTLD
in theclaim_patterns.principal
regular expression are your organization email domain and top level domain.
-
Remember to add this configuration for each node type in the User settings if you use several node types based on your deployment architecture (Dedicated Master, High IO, and/or High Storage).
-
Create a role mapping:
The following role mapping for OIDC restricts access to a specific user
(firstname.lastname)
based on theclaim_patterns.principal
email address. This prevents other users on the same domain from having access to your deployment. You can remove the rule or adjust it at your convenience.More details are available in our Configuring role mappings documentation.
POST /_security/role_mapping/oidc_kibana { "enabled": true, "roles": [ "superuser" ], "rules" : { "all" : [ { "field" : { "realm.name" : "oidc1" } }, { "field" : { "username" : [ "<firstname.lastname>" ] } } ] }, "metadata": { "version": 1 } }
If you use an email in the
claim_patterns.principal
, you won’t need to add the domain in the role_mapping (for example,firstname.lastname@your_domain.tld
should befirstname.lastname
). -
Configure Kibana with the OIDC realm:
The next step is to configure Kibana, in order to initiate the OpenID authentication:
- Log in to the Elasticsearch Service Console.
-
Update your Kibana user settings with the following configuration:
xpack.security.authc.providers: oidc.oidc1: order: 0 realm: oidc1 description: "Log in with Google" basic.basic1: order: 1
Setting up OpenID Connect with Okta
editFollow these steps to configure OpenID Connect single sign-on on Elasticsearch Service with an Okta OP:
-
Configure the OAuth client ID:
-
Create a new application:
-
Go to Applications > Add Application.
- For the Platform page settings, select Web then Next.
-
In the Application settings choose a Name for your application, for example
Kibana OIDC
. -
Set the Base URI to
KIBANA_ENDPOINT_URL
. You can retrieve yourKIBANA_ENDPOINT_URL
by opening the Elasticsearch Service Console and selecting the Kibana Copy endpoint link in your deployment details. -
Set the Login redirect URI as
KIBANA_ENDPOINT_URL/api/security/oidc/callback
. -
Set the Logout redirect URI as
KIBANA_ENDPOINT_URL/logged_out
. - Choose Done and copy your client ID and client secret values for later use.
-
-
-
Add your client secret to the Elasticsearch keystore:
-
Follow the steps described in our security settings documentation to Add a secret value to the keystore:
-
Set the Setting name as
xpack.security.authc.realms.oidc.oidc1.rp.client_secret
.For OIDC, the client secret setting name in the keystore should be of the form:
xpack.security.authc.realms.oidc.<oidc-realm-name>.rp.client_secret
. -
For Type, select
Single string
. - Paste your client secret into the Secret field.
- Select Save.
-
-
-
Configure Elasticsearch with the OIDC realm:
To learn more about the available endpoints provided by Okta, refer to the following OpenID configuration:
https://{yourOktadomain}/.well-known/openid-configuration
To configure Elasticsearch for OIDC:
- Log in to the Elasticsearch Service Console.
-
Update your Elasticsearch user settings with the following configuration:
xpack: security: authc: realms: oidc: oidc1: order: 2 rp.client_id: "YOUR_CLIENT_ID" rp.response_type: "code" rp.requested_scopes: ["openid", "email"] rp.redirect_uri: "KIBANA_ENDPOINT_URL/api/security/oidc/callback" op.issuer: "https://YOUR_OKTA_DOMAIN" op.authorization_endpoint: "https://YOUR_OKTA_DOMAIN/oauth2/v1/authorize" op.token_endpoint: "https://YOUR_OKTA_DOMAIN/oauth2/v1/token" op.userinfo_endpoint: "https://YOUR_OKTA_DOMAIN/oauth2/v1/userinfo" op.endsession_endpoint: "https://YOUR_OKTA_DOMAIN/oauth2/v1/logout" op.jwkset_path: "https://YOUR_OKTA_DOMAIN/oauth2/v1/keys" claims.principal: email claim_patterns.principal: "^([^@]+)@YOUR_DOMAIN\\.TLD$"
Where:
-
YOUR_CLIENT_ID
is the Client ID that you set up in the previous steps. -
KIBANA_ENDPOINT_URL
is your Kibana endpoint, available from the Elasticsearch Service Console. -
YOUR_OKTA_DOMAIN
is the URL of your Okta domain shown on your Okta dashboard. -
YOUR_DOMAIN
andTLD
in theclaim_patterns.principal
regular expression are your organization email domain and top level domain.
-
Remember to add this configuration for each node type in the User settings if you use several node types based on your deployment architecture (Dedicated Master, High IO, and/or High Storage).
-
Create a role mapping:
The following role mapping for OIDC restricts access to a specific user
(firstname.lastname)
based on theclaim_patterns.principal
email address. This prevents other users on the same domain from having access to your deployment. You can remove the rule or adjust it at your convenience.More details are available in our Configuring role mappings documentation.
POST /_security/role_mapping/oidc_kibana { "enabled": true, "roles": [ "superuser" ], "rules" : { "all" : [ { "field" : { "realm.name" : "oidc1" } }, { "field" : { "username" : [ "<firstname.lastname>" ] } } ] }, "metadata": { "version": 1 } }
If you use an email in the
claim_patterns.principal
, you won’t need to add the domain in the role_mapping (for example,firstname.lastname@your_domain.tld
should befirstname.lastname
). -
Configure Kibana with the OIDC realm:
The next step is to configure Kibana, in order to initiate the OpenID authentication:
- Log in to the Elasticsearch Service Console.
-
Update your Kibana user settings with the following configuration:
xpack.security.authc.providers: oidc.oidc1: order: 0 realm: oidc1 description: "Log in with Okta" basic.basic1: order: 1
Summary and References
editThis topic covered how to authenticate users in Kibana using OpenID Connect and different providers: Azure, Google, and Okta. If you are looking for other authentication methods, Elasticsearch Service also supports SAML and Kerberos. Please note that OpenID Connect support is only available for Platinum and Enterprise subscriptions. New to Elasticsearch Service? Sign Up for a Trial to try it out.
To learn more about OIDC configuration consult the following references:
On this page