
Kibana Audit
- 2.2k installs
- 546 repo stars
- Updated July 22, 2026
- elastic/agent-skills
kibana-audit is a skill that >
About
The kibana-audit skill helps with >. Key workflows include Kibana Audit Logging; Jobs to Be Done; Prerequisites; Enable Kibana Audit Logging. Documented capabilities cover Enable or disable Kibana audit logging; Configure audit log output (rolling file, console); Filter out noisy events (e.g. `saved_object_find`); Investigate saved object access or deletion events; Track Kibana login/logout and session activity. Agents should invoke it when users ask about kibana audit or mention triggers defined in the skill frontmatter. Follow the SKILL.md steps, reference files, and output formats rather than improvising outside documented scope. login/logout, session expiry, space operations, and Kibana-level RBAC enforcement. For Elasticsearch audit logging (authentication failures, access grants/denials, security config changes), see **elasticsearch-audit**. For authentication and API key management, see **elasticsearch-authn**. For roles and user management, see **elasticsearch-authz**. For detailed event types, schema, and correlation queries, see [references/api-reference.md](references/api-reference.md). > **Deployment note:** Kibana audit configuration differs across deployment types. S.
- Kibana Audit Logging
- elasticsearch-audit**. For authentication and API key management, see **elasticsearch-authn**. For roles and user
- Jobs to Be Done
- Enable or disable Kibana audit logging
- Configure audit log output (rolling file, console)
Kibana Audit by the numbers
- 2,227 all-time installs (skills.sh)
- +163 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #93 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
kibana-audit capabilities & compatibility
- Capabilities
- kibana audit logging · elasticsearch audit**. for authentication and ap · jobs to be done · enable or disable kibana audit logging · configure audit log output (rolling file, consol
- Use cases
- planning · research
What kibana-audit says it does
>
npx skills add https://github.com/elastic/agent-skills --skill kibana-auditAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2.2k |
|---|---|
| repo stars | ★ 546 |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 22, 2026 |
| Repository | elastic/agent-skills ↗ |
How do I apply kibana-audit for kibana audit tasks?
>
Who is it for?
Teams using kibana-audit as documented in the skill repository.
Skip if: Tasks outside the kibana-audit scope in SKILL.md.
When should I use this skill?
User mentions kibana-audit, kibana-audit, or related skill triggers.
What you get
Structured guidance and deliverables from the kibana-audit SKILL.md workflow.
- kibana.yml audit configuration
- Rolling audit.log output
By the numbers
- Rolling-file audit appender supports 24h time-interval rotation policy
- Numeric retention strategy supports max 10 rolling audit log files
Files
Kibana Audit Logging
Enable and configure audit logging for Kibana via kibana.yml. Kibana audit logs cover application-layer security events that Elasticsearch does not see: saved object CRUD (dashboards, visualizations, index patterns, rules, cases), login/logout, session expiry, space operations, and Kibana-level RBAC enforcement.
For Elasticsearch audit logging (authentication failures, access grants/denials, security config changes), see elasticsearch-audit. For authentication and API key management, see elasticsearch-authn. For roles and user management, see elasticsearch-authz.
For detailed event types, schema, and correlation queries, see references/api-reference.md.
Deployment note: Kibana audit configuration differs across deployment types. See
Deployment Compatibility for details.
Jobs to Be Done
- Enable or disable Kibana audit logging
- Configure audit log output (rolling file, console)
- Filter out noisy events (e.g.
saved_object_find) - Investigate saved object access or deletion events
- Track Kibana login/logout and session activity
- Monitor space creation, modification, and deletion
- Correlate Kibana audit events with Elasticsearch audit logs via
trace.id - Ship Kibana audit logs to Elasticsearch for unified querying
Prerequisites
| Item | Description |
|---|---|
| Kibana access | Filesystem access to kibana.yml (self-managed) or Cloud console access (ECH) |
| License | Audit logging requires a gold, platinum, enterprise, or trial license |
| Elasticsearch URL | Cluster endpoint for correlation queries against .security-audit-* |
Prompt the user for any missing values.
Enable Kibana Audit Logging
Kibana audit is configured statically in kibana.yml (not via API). A Kibana restart is required after changes.
xpack.security.audit.enabled: true
xpack.security.audit.appender:
type: rolling-file
fileName: /path/to/kibana/data/audit.log
policy:
type: time-interval
interval: 24h
strategy:
type: numeric
max: 10To disable, set xpack.security.audit.enabled to false and restart Kibana.
Appender types
| Type | Description |
|---|---|
rolling-file | Writes to a file with rotation policy. Recommended. |
console | Writes to stdout. Useful for containerized deployments. |
Event Types
Kibana audit events use ECS format with the same core fields as ES audit (event.action, event.outcome, user.name, trace.id, @timestamp) plus Kibana-specific fields like kibana.saved_object.type, kibana.saved_object.id, and kibana.space_id.
Key event actions:
| Event action | Description | Category |
|---|---|---|
saved_object_create | A saved object was created | database |
saved_object_get | A saved object was read | database |
saved_object_update | A saved object was updated | database |
saved_object_delete | A saved object was deleted | database |
saved_object_find | A saved object search was performed | database |
saved_object_open_point_in_time | A PIT was opened on saved objects | database |
saved_object_close_point_in_time | A PIT was closed on saved objects | database |
saved_object_resolve | A saved object was resolved (alias redirect) | database |
login | A user logged in (success or failure) | authentication |
logout | A user logged out | authentication |
session_cleanup | An expired session was cleaned up | authentication |
access_agreement_acknowledged | A user accepted the access agreement | authentication |
space_create | A Kibana space was created | web |
space_update | A Kibana space was updated | web |
space_delete | A Kibana space was deleted | web |
space_get | A Kibana space was retrieved | web |
See references/api-reference.md for the complete event schema.
Filter Policies
Suppress noisy events using ignore_filters in kibana.yml:
xpack.security.audit.ignore_filters:
- actions: [saved_object_find]
categories: [database]| Filter field | Type | Description |
|---|---|---|
actions | list | Event actions to ignore |
categories | list | Event categories to ignore |
An event is filtered out if it matches all specified fields within a single filter entry.
Correlate with Elasticsearch Audit Logs
When Kibana makes requests to Elasticsearch on behalf of a user, both systems record the same trace.id (passed via the X-Opaque-Id header). This is the primary key for correlating events across the two audit logs.
Prerequisite: Elasticsearch audit must be enabled via the cluster settings API. See the elasticsearch-audit
skill for setup instructions, event types, and ES-specific filter policies.
Correlation workflow
1. Find the suspicious event in the Kibana audit log. 2. Extract its trace.id value. 3. Search the ES audit index (.security-audit-*) for all events with the same trace.id. 4. Review the combined timeline to understand what ES-level operations the Kibana action triggered.
The elasticsearch-audit skill also documents this workflow from the ES side — use it when starting from an ES audit event and looking for the originating Kibana action.
Search ES audit by trace ID
Given a suspicious Kibana event (e.g. a saved object deletion), extract its trace.id and search the ES audit index:
curl -X POST "${ELASTICSEARCH_URL}/.security-audit-*/_search" \
<auth_flags> \
-H "Content-Type: application/json" \
-d '{
"query": {
"bool": {
"filter": [
{ "term": { "trace.id": "'"${TRACE_ID}"'" } },
{ "range": { "@timestamp": { "gte": "now-24h" } } }
]
}
},
"sort": [{ "@timestamp": { "order": "asc" } }]
}'Secondary correlation fields: user.name, source.ip, and @timestamp (time-window joins).
Ship Kibana audit logs to Elasticsearch
To query Kibana audit events alongside ES audit events, ship the Kibana audit log file to an Elasticsearch index using Filebeat:
filebeat.inputs:
- type: log
paths: ["/path/to/kibana/data/audit.log"]
json.keys_under_root: true
json.add_error_key: true
output.elasticsearch:
hosts: ["https://localhost:9200"]
index: "kibana-audit-%{+yyyy.MM.dd}"Once indexed, both .security-audit-* (ES) and kibana-audit-* (Kibana) can be searched together using a multi-index query filtered by trace.id.
Examples
Enable Kibana audit for compliance
Request: "Enable Kibana audit logging and keep 10 rotated log files."
xpack.security.audit.enabled: true
xpack.security.audit.appender:
type: rolling-file
fileName: /var/log/kibana/audit.log
policy:
type: time-interval
interval: 24h
strategy:
type: numeric
max: 10Restart Kibana after applying.
Investigate a deleted dashboard
Request: "Someone deleted a dashboard. Check the Kibana audit log."
Search the Kibana audit log (or the indexed kibana-audit-* data) for saved_object_delete events with kibana.saved_object.type: dashboard. Extract the trace.id and cross-reference with the ES audit index to see the underlying Elasticsearch operations.
Reduce audit noise from saved object searches
Request: "Kibana audit logs are too large because of constant saved_object_find events."
xpack.security.audit.ignore_filters:
- actions: [saved_object_find]
categories: [database]This suppresses high-volume read operations while preserving create, update, and delete events.
Guidelines
Always enable alongside Elasticsearch audit
For full coverage, enable audit in both kibana.yml and Elasticsearch. Without Kibana audit, saved object access and Kibana login events are invisible. Without ES audit, cluster-level operations are invisible. See the elasticsearch-audit skill for ES-side setup.
Use trace.id for correlation
When investigating a Kibana event, always extract trace.id and search the ES audit index (.security-audit-*). This reveals the full chain of operations triggered by a single Kibana action. See Correlate with Elasticsearch Audit Logs above for queries.
Filter noisy read events
saved_object_find generates very high volume on busy Kibana instances. Suppress it unless you specifically need to audit read access.
Ship logs to Elasticsearch for unified querying
Kibana audit logs are written to files by default. Ship them to Elasticsearch via Filebeat for programmatic querying alongside ES audit events.
Rotate and retain appropriately
Configure rolling-file rotation to avoid filling the disk. A 30-90 day retention is typical for compliance.
Deployment Compatibility
| Capability | Self-managed | ECH | Serverless |
|---|---|---|---|
Kibana audit (kibana.yml) | Yes | Via Cloud UI | Not available |
| Rolling-file appender | Yes | Via Cloud UI | Not available |
| Console appender | Yes | Yes | Not available |
| Ignore filters | Yes | Via Cloud UI | Not available |
Correlate via trace.id | Yes | Yes | Not available |
| Ship to ES via Filebeat | Yes | Yes | Not available |
ECH notes: Kibana audit is enabled via the deployment edit page in the Cloud console. Log files are accessible through the Cloud console deployment logs.
Serverless notes:
- Kibana audit logging is not user-configurable on Serverless. Security events are managed by Elastic as part of the
platform.
- If a user asks about Kibana auditing on Serverless, direct them to the Elastic Cloud console or their account team.
Kibana Audit Logging Reference
Reference for Kibana audit logging configuration, event types, event schema, and correlation with Elasticsearch audit logs. For full documentation, see the linked Elastic docs.
Configuration (kibana.yml)
All Kibana audit settings are configured in kibana.yml. A restart is required after changes.
xpack.security.audit.enabled: true
xpack.security.audit.appender:
type: rolling-file
fileName: /path/to/kibana/data/audit.log
policy:
type: time-interval
interval: 24h
strategy:
type: numeric
max: 10
xpack.security.audit.ignore_filters:
- actions: [saved_object_find]
categories: [database]Core settings
| Setting | Type | Default | Description |
|---|---|---|---|
xpack.security.audit.enabled | boolean | false | Enable Kibana audit logging |
xpack.security.audit.appender | object | — | Log output configuration (file type/policy) |
xpack.security.audit.appender.type | string | — | rolling-file or console |
Rolling-file appender settings
| Setting | Type | Default | Description |
|---|---|---|---|
xpack.security.audit.appender.fileName | string | — | Path to the audit log file |
xpack.security.audit.appender.policy.type | string | — | time-interval or size-limit |
xpack.security.audit.appender.policy.interval | string | — | Rotation interval (e.g. 24h) |
xpack.security.audit.appender.strategy.type | string | — | numeric |
xpack.security.audit.appender.strategy.max | number | — | Max number of rotated files to retain |
Ignore filter settings
| Setting | Type | Default | Description |
|---|---|---|---|
xpack.security.audit.ignore_filters | list | [] | Array of filter rules |
xpack.security.audit.ignore_filters[].actions | list | — | Event actions to ignore |
xpack.security.audit.ignore_filters[].categories | list | — | Event categories to ignore |
An event is filtered out if it matches all non-empty fields within a single filter entry.
Event Types
| Event action | Description | Category |
|---|---|---|
saved_object_create | A saved object was created | database |
saved_object_get | A saved object was read | database |
saved_object_update | A saved object was updated | database |
saved_object_delete | A saved object was deleted | database |
saved_object_find | A saved object search was performed | database |
saved_object_open_point_in_time | A PIT was opened on saved objects | database |
saved_object_close_point_in_time | A PIT was closed on saved objects | database |
saved_object_resolve | A saved object was resolved (alias redirect) | database |
login | A user logged in (success or failure) | authentication |
logout | A user logged out | authentication |
session_cleanup | An expired session was cleaned up | authentication |
access_agreement_acknowledged | A user accepted the access agreement | authentication |
space_create | A Kibana space was created | web |
space_update | A Kibana space was updated | web |
space_delete | A Kibana space was deleted | web |
space_get | A Kibana space was retrieved | web |
Event Schema
Key ECS and Kibana-specific fields in each audit event:
| Field | Type | Description |
|---|---|---|
@timestamp | date | Event timestamp |
event.action | keyword | Event type (e.g. saved_object_create) |
event.category | keyword | Category (authentication, database, web) |
event.outcome | keyword | success, failure, or unknown |
user.name | keyword | Authenticated username |
user.roles | keyword | Roles assigned to the user |
trace.id | keyword | Correlation ID shared with Elasticsearch requests |
kibana.saved_object.type | keyword | Saved object type (e.g. dashboard, index-pattern) |
kibana.saved_object.id | keyword | Saved object ID |
kibana.space_id | keyword | Kibana space where the event occurred |
kibana.authentication_provider | keyword | Auth provider used (e.g. saml1, basic) |
http.request.method | keyword | HTTP method for web events |
url.path | keyword | Request path |
source.ip | ip | Client IP address |
Correlating with Elasticsearch Audit Logs
The trace.id field is the primary correlation key. When Kibana makes a request to Elasticsearch on behalf of a user, it passes an X-Opaque-Id header that both systems record as trace.id.
Correlation workflow
1. Find the suspicious event in the Kibana audit log (from the log file or shipped to an index). 2. Extract the trace.id value. 3. Search the ES audit index for all events with the same trace.id. 4. Review the combined timeline to understand what ES-level operations the Kibana action triggered.
Find all ES audit events for a Kibana trace
POST /.security-audit-*/_search
{
"query": {
"bool": {
"filter": [
{ "term": { "trace.id": "abc123-trace-id" } }
]
}
},
"sort": [{ "@timestamp": "asc" }]
}Correlate by user and time window
When trace.id is not available (e.g. direct API calls), fall back to user + time correlation:
POST /.security-audit-*/_search
{
"query": {
"bool": {
"filter": [
{ "term": { "user.name": "joe" } },
{ "range": { "@timestamp": { "gte": "2025-06-15T10:00:00Z", "lte": "2025-06-15T10:05:00Z" } } }
]
}
},
"sort": [{ "@timestamp": "asc" }]
}Ship Kibana audit logs to Elasticsearch for unified querying
To query Kibana audit events alongside ES audit events, ship the Kibana audit log file to an Elasticsearch index using Filebeat:
filebeat.inputs:
- type: log
paths: ["/path/to/kibana/data/audit.log"]
json.keys_under_root: true
json.add_error_key: true
output.elasticsearch:
hosts: ["https://localhost:9200"]
index: "kibana-audit-%{+yyyy.MM.dd}"Once indexed, both .security-audit-* (ES) and kibana-audit-* (Kibana) can be searched together using a multi-index query filtered by trace.id.
Related skills
Forks & variants (1)
Kibana Audit has 1 known copy in the catalog totaling 2 installs. They canonicalize to this original listing.
- elastic - 2 installs
FAQ
What does kibana-audit do?
>
When should I use kibana-audit?
When you need kibana audit help per SKILL.md.
Is kibana-audit safe to install?
Review the Security Audits panel on this page before installing in production.