Elastic
C Kibana (API, alerting and AI connectors)
Kibana passes your Authorization header to Elasticsearch, so on a Platinum/Enterprise stateful deployment a JWT realm lets a workload call the Kibana API with a token from any issuer; otherwise, and on Serverless, it is Elasticsearch API keys that never expire by default. Its GA connectors want pasted secrets: AWS access keys for Bedrock, a GCP service-account JSON for Gemini, client secrets for ServiceNow, Exchange and Defender.
Docs: elastic.co · Checked 2026-10-14 · source YAML · dispute via PR
Inbound Arequires Platinum or Enterprise (self-managed) or Elastic Cloud Hosted Platinum / Enterprise, because the JWT realm lives in Elasticsearch. Not available on Serverless.
How a workload running anywhere authenticates to this product.
Kibana's HTTP authentication provider accepts an Authorization Bearer header and relays it (plus ES-Client-Authentication) to Elasticsearch, so an Elasticsearch JWT realm that pins issuer, audience and subject authenticates Kibana API calls with an external short-lived JWT; the fallback is an Elasticsearch API key (ApiKey scheme) or basic auth.
- Issuers
- any
- elastic.co checked 2026-10-14
“By default Kibana supports ApiKey authentication scheme and any scheme supported by the currently enabled authentication provider.”
- elastic.co checked 2026-10-14
“Under the hood, Kibana relays this header to Elasticsearch, then Elasticsearch authenticates the request using the credentials in the header.”
- elastic.co checked 2026-10-14
“By default, this setting is set to ['apikey', 'bearer'] to support HTTP authentication with the ApiKey and Bearer schemes.”
- elastic.co checked 2026-10-14
“List of Kibana client-side headers to send to Elasticsearch.”
- github.com checked 2026-10-14
“it('accepts valid JWT (without secret) via authorization Bearer header', async () => {”
- elastic.co checked 2026-10-14
“Elasticsearch can be configured to trust JSON Web Tokens (JWTs) issued from an external service as bearer tokens for authentication.”
- elastic.co checked 2026-10-14
“At least one of the allowed_subjects or allowed_subject_patterns settings must be specified (and be non-empty) when token_type is access_token .”
- github.com checked 2026-10-14
“bearer_token (String, Sensitive) Bearer Token to use for authentication to Kibana”
- github.com checked 2026-10-14
“If `xpack.security.authc.http.jwt.taggedRoutesOnly` flag is set, then only routes marked with this tag will accept”
- elastic.co checked 2026-10-14
“Single sign-on (SAML, OpenID Connect, Kerberos, JWT)”
- elastic.co checked 2026-10-14
“Serverless does not support Elasticsearch authentication realms. User authentication is managed at the organization level .”
- elastic.co checked 2026-10-14
“For Elastic Cloud Serverless projects, you can optionally grant access to Elasticsearch and Kibana APIs when you assign roles to the API key .”
- elastic.co checked 2026-10-14
“Basic auth tokens are constructed with the Basic keyword, followed by a space, followed by a base64-encoded string of your username:password (separated by a : colon).”
Kibana has no credential store of its own for API callers: every Kibana API request is authenticated by Elasticsearch, so this grade follows the elasticsearch card (A, JWT realm, Platinum/Enterprise). Elastic does not have a page called "JWT for the Kibana API". The A is assembled from three pieces: the documented header relay, the default schemes ['apikey', 'bearer'], and the default header allowlist ['authorization', 'es-client-authentication']. Kibana's own integration test confirms it: Bearer JWTs from an ES JWT realm, with or without the shared secret, authenticate against a Kibana API route. The elasticstack Terraform provider exposes bearer_token (KIBANA_BEARER_TOKEN) for its kibana block, so IaC can use the same path. Deployment types: self-managed, ECK, ECE (elastic-cloud-enterprise) and Elastic Cloud Hosted, where the JWT realm can be configured. On Serverless there are no realms, and Kibana's xpack.security.authc.http.jwt.taggedRoutesOnly defaults to true. That flag limits JWTs to a handful of internal routes such as status and stats. A Serverless workload therefore uses a project API key or an Elastic Cloud API key granted Kibana API access (see elastic-cloud-api). Without Platinum the path is static Elasticsearch API keys, the same keys and hygiene as the elasticsearch card, which on their own grade F (2 of 5). Kibana's own connection to Elasticsearch uses the elastic/kibana service account token or kibana_system credentials, which are static. Fleet and Elastic Agent enrollment run through Kibana but are graded on elastic-agent-fleet.
Outbound C
How this product reaches into your cloud, repos, or other SaaS.
Generally available connectors that reach into customer systems authenticate with secrets the customer creates and pastes. The best of them run an OAuth client-credentials flow from a customer-managed client secret or private key (ServiceNow OAuth, Microsoft Exchange email, Microsoft Defender for Endpoint, CrowdStrike, Webhook OAuth 2.0). The cloud AI connectors want raw AWS access keys (Bedrock) or a GCP service-account JSON key (Gemini/Vertex).
- elastic.co checked 2026-10-14
“The AWS access key for authentication.”
- elastic.co checked 2026-10-14
“These are the minimum required permissions. IAM policies with additional permissions are also supported.”
- elastic.co checked 2026-10-14
“The GCP service account JSON file for authentication.”
- elastic.co checked 2026-10-14
“Select JSON, then click CREATE to download the key. Keep it somewhere secure.”
- elastic.co checked 2026-10-14
“A valid AWS access key that has permissions to use Amazon Bedrock and access to models for inference requests.”
- elastic.co checked 2026-10-14
“A valid service account in JSON format for the Google Vertex AI API.”
- elastic.co checked 2026-10-14
“IMPORTANT: You must specify either api_key , entra_id , or client_secret .”
- elastic.co checked 2026-10-14
“For OpenAI and Azure OpenAI, only apiKey is supported for authentication.”
- elastic.co checked 2026-10-14
“The RSA private key that you created for use in ServiceNow.”
- elastic.co checked 2026-10-14
“If service is MS Exchange Server, the host, port, and secure properties are ignored and tenantId, clientId, clientSecret are required instead.”
- elastic.co checked 2026-10-14
“The client secret for your app in the Azure portal.”
- elastic.co checked 2026-10-14
“The CrowdStrike API client secret to authenticate the client ID.”
- elastic.co checked 2026-10-14
“A SentinelOne API token created by the user.”
- elastic.co checked 2026-10-14
“If you choose OAuth 2.0 authentication, you must provide an access token URL, client ID, and client secret.”
- elastic.co checked 2026-10-14
“Jira API authentication token for HTTP Basic authentication. For Jira Data Center, this value should be the password associated with the email owner.”
- elastic.co checked 2026-10-14
“Copy the Bot User OAuth Token so you can paste it into your Slack connector form.”
- elastic.co checked 2026-10-14
“A 32 character PagerDuty Integration Key for an integration on a service, also referred to as the routing key.”
- elastic.co checked 2026-10-14
“Elastic's managed OAuth flow. Select this option and authorize access to your Slack workspace through Elastic. No app setup is required.”
- elastic.co checked 2026-10-14
“Prefer an OAuth 2.0 API Services app with private-key JWT client authentication (RS256 + kid). A classic SSWS API token is supported as a fallback for orgs that have not migrated to OAuth for Okta.”
- elastic.co checked 2026-10-14
“The AWS IAM access key ID used to sign every request with Signature Version 4 (SigV4).”
- elastic.co checked 2026-10-14
“You upload a service account JSON key when creating the connector, and every action then runs as that service account, using a short-lived access token the connector mints for each request.”
- elastic.co checked 2026-10-14
“It supports two authentication methods: Bearer token (personal access token) and OAuth Authorization Code.”
GA connectors checked: Amazon Bedrock (access key + secret; the setup guide creates an IAM user with a minimal policy), Google Gemini/Vertex (service-account JSON key), OpenAI and Azure OpenAI (API key only), and the AI Connector / inference endpoints (Bedrock access_key/secret_key, Vertex service_account_json, Azure OpenAI api_key, a pasted Entra token or an app-registration client_secret). Also Slack (webhook URL or bot token from your own Slack app), Microsoft Teams (Workflows webhook URL), Jira (API token or Data Center password), PagerDuty (integration key), ServiceNow ITSM/SecOps (basic auth, or OAuth with your own client secret and RSA private key) and Email (SMTP password or app password; Microsoft Exchange via your own app's client secret). Rounding out the list: Webhook (basic, client cert, or OAuth 2.0 client credentials from 9.2) and the response-action connectors CrowdStrike (client ID/secret), SentinelOne (API token) and Microsoft Defender for Endpoint (Azure app client secret). None of the GA connectors uses an AWS role, GCP impersonation or workload identity federation, or an Azure federated credential. The Bedrock and Gemini connectors cannot use role-based or federated auth. Anthropic models are reached only through Bedrock (or the OpenAI-compatible "Other" provider). The Elastic Managed LLM (EIS) needs no customer credential, but it is Elastic's own model service and does not reach into your infrastructure. The Observability AI Assistant connector only feeds alerts to the assistant and uses whichever LLM connector is configured, so its outbound auth is that connector's. Graded C because the best GA option on several connectors is an OAuth client-credentials flow (Microsoft Entra / ServiceNow / CrowdStrike / Okta-style) from a customer-managed client secret or private key. The cloud LLM connectors alone (raw AWS keys) would sit at D. Preview connectors (Serverless-only or 9.4+ preview) add Elastic's "Quick Connect" OAuth, an install of Elastic's own app with no secret handed over, for Slack v2, Microsoft Teams and Gmail (read-only). That is "Planned" for stateful Elastic Stack and would move this surface to B when GA. Other preview connectors still want keys: AWS CloudWatch/EKS/S3 (access keys), GCP IAM (SA JSON key), Azure Monitor and SharePoint (client secret), Azure Blob (account key), Okta (private-key JWT or SSWS token) and GitHub (PAT or your own OAuth app). Subscription: third-party connectors are paid features on self-managed. The AI Connector "Elastic Stack users: An Enterprise subscription". Connector secrets are stored as encrypted saved objects in Kibana.
Hygiene for any static credential the product still issues
| ✗ Expiry enforceable | Same Elasticsearch API keys as the elasticsearch card. expiration is optional and no xpack.security.authc.api_key.* setting caps or forces it. Kibana's "Connection details" quick-create defaults a personal key to 90 days, but the API and the main create pane default to never.
|
| ✓ Rotation via API | POST /_security/api_key creates, DELETE /_security/api_key invalidates.
|
| ✓ Scoped keys | role_descriptors can include Kibana application privileges (feature and space privileges), so a key can be limited to, for example, connectors or alerting in one space. Without role_descriptors the key snapshots its creator's full permissions, and that is the default.
|
| ✗ Last-used visible | The get API key response has creation, expiration and invalidation times but no last-used field, and the Kibana API Keys page shows none either. Usage can only be reconstructed from audit logs.
|
| ✗ Leak revocation | GitHub's pattern data marks elastic_stack_api_key and elastic_cloud_api_key isPublic false. Both are user patterns (GHAS private repos, push protection), not partner patterns, so a key leaked to a public repo is not reported to Elastic for revocation.
|
Notes
Scope: authenticating to the Kibana HTTP API (self-managed, ECK, ECE, Elastic Cloud Hosted and Serverless), and the Kibana Actions/Connectors framework used by alerting, cases, Elastic Security response actions, AI Assistant and Agent Builder. Neighbouring cards: elasticsearch (the realms and API keys Kibana relies on), elastic-cloud-api (Cloud API keys that can reach Serverless Kibana), elastic-agent-fleet (Fleet APIs served by Kibana) and elastic-cloud-enterprise. The headline is C because of the outbound connectors. A Basic-tier or Serverless user calling the Kibana API is on non-expiring API keys (F inbound).
Badge
[](https://wif.tax/p/kibana/)