TECHNOLOGIES: ELASTICSEARCH

Elasticsearch Security Review

Elasticsearch has switched security on by default since version 8.0, but clusters upgraded from older versions can still run without it. We test authentication, roles, API keys and network exposure. CREST-certified testers, fixed price from £2,620 for a 2-day single-system scope, quoted within 24 hours.

  • Unlimited retesting
  • Unlimited pre-retesting
  • No hidden fees
Accredited & recognised
Cyber Essentials certified Cyber Essentials Plus certified IASME certifying body ISO 27001 certified ISO 9001 certified Crown Commercial Service supplier UK Cyber Security Council member
CREST
Approved Provider
10
Elasticsearch Test Areas
FREE
Retest Until Closed
24h
Scope to Active Test
CLIENT REFERENCE
“I would highly recommend EJN Labs to any organisation seeking reliable, detailed, and well-managed penetration testing services, particularly for government or enterprise-level projects.”
SquareOneImran SaghirProject Lead, SquareOneRead the SquareOne case study →
CLIENT REFERENCE
“There wasn’t another company we could find that could deliver what we needed in the timeframe we needed. The client loved it, and we got instant ROI from the engagement.”
CelloriDan WilcocksonFounder, CelloriRead the Cellori case study →
See all case studies →
WHY IT MATTERS
9200

Elasticsearch listens for client requests on port 9200 and for inter-node traffic on port 9300. Elastic’s own documentation states a node binds only to localhost by default, but changing network.host to reach it from another machine exposes both ports to whatever network can route to them.

Why Elasticsearch security depends on what was configured, and when

Elastic’s documentation on automatic security setup states that since version 8.0, Elasticsearch automatically enables security features on first startup, but only when the node is not already part of an existing cluster and none of a defined list of settings has been configured beforehand. That condition matters more than the version number: a node upgraded from an older release, restored from a snapshot, or started with one incompatible setting already in elasticsearch.yml never goes through the automatic step, so how a cluster reached its current state decides more than which version it runs today. Anonymous access follows a similar shape. Elastic’s anonymous access documentation confirms that requests carrying no authentication token are rejected with a 401 by default, and stay that way unless a role is explicitly assigned to the anonymous user in elasticsearch.yml.

Role definitions carry document and field-level security in the same block as ordinary index privileges, and Elastic is explicit that omitting the query parameter entirely disables document level security for that permission entry, rather than falling back to a safe restriction. Field-level security sits alongside it as a grant and except list of field names on the same role, and Elastic warns it should never be set on an alias field, since securing a concrete field means naming that field directly; a multi-field variant such as a .raw suffix is stored independently and is not excluded automatically when its parent field is. API keys carry their own scope through role descriptors set at creation, and a key created through the full options screen does not expire by default, unlike the quick personal key from Kibana’s Help menu, which is given a 90-day expiry automatically.

Kibana privileges are assigned per space rather than cluster-wide: a role’s base or feature privileges only reach the spaces named alongside them, and Elastic’s spaces documentation confirms each space holds its own saved objects, with users limited to the spaces they have actually been granted. Snapshot repositories add a further privilege list of their own, since Elastic’s prerequisites for Kibana’s Snapshot and Restore feature require the monitor, manage_slm, cluster:admin/snapshot and cluster:admin/repository cluster privileges together, with a separate cluster:admin/settings/update privilege needed only to change which repository is the default. None of this changes much between self-managed and Elastic Cloud: Elastic Cloud automatically secures inter-node and HTTPS traffic and encrypts data at rest, but the roles, API keys, document queries and field grants you configure are the same access model either way. For the wider family of cache and streaming platforms this scope splits from, see our NoSQL, cache and streaming security review. OpenSearch, an open-source fork of an older Elasticsearch codebase now run under the Linux Foundation, has since diverged into its own access-control model and gets its own scope and page.

SCOPE

What we review in an Elasticsearch cluster

ES-01

Security Features and Automatic Setup Since 8.0

Elastic’s own documentation confirms that since version 8.0, Elasticsearch automatically enables security features on first startup, but only when a node is not already part of an existing cluster and none of a defined list of settings has been configured first; an upgrade or a restore never triggers it. We test whether xpack.security is actually enabled on every node in scope, or whether the cluster reached its current state by a path the automatic setup does not cover.

ES-02

Built-in Users and Role Mappings

The elastic superuser and the kibana_system, logstash_system, beats_system and apm_system service users ship with fixed privileges and cannot authenticate until a password is set for each one, and Elastic’s own guidance is not to use the elastic superuser beyond that initial setup. Roles assigned through an external identity provider arrive through role mapping rules rather than direct assignment, and we test whether those mapping rules grant only the role a user’s actual group membership justifies.

ES-03

Index Privileges and Document-Level Security

Index privileges are granted per data stream or index pattern, and document-level security narrows that further with a query attached to the same permission entry; Elastic is explicit that omitting the query parameter entirely disables document-level security for that entry rather than defaulting to a safe restriction. We test every role’s index privileges and document queries against the data a user should actually see, and whether a permission entry meant to carry a query was ever given one.

ES-04

Field-Level Security and Multi-Fields

Field-level security is configured as a grant and except list of field names on the same role definition, and Elastic warns it should never be set on an alias field, since securing a concrete field means naming that field directly. Multi-fields such as a .raw variant are stored independently and are not excluded automatically when their parent field is, so we test whether a role’s granted or denied fields actually cover every multi-field variant of a sensitive mapping.

ES-05

API Key Scope and Expiry

An API key’s privileges come from the role descriptors attached when it is created, and a key made through the full options screen does not expire by default, unlike the quick personal key created from Kibana’s Help menu, which is given a 90-day expiry automatically. We test what a given key is actually scoped to do against what the integration using it needs, and whether a non-expiring key has ever been revisited since it was issued.

ES-06

Kibana Spaces and Privilege Scope

A role’s Kibana privileges are assigned per space through a base or feature privilege list, and a privilege entry only reaches the spaces named alongside it; Elastic’s spaces documentation confirms each space holds its own saved objects, with users limited to the spaces they have actually been granted. We test whether a role’s space assignments match who should reach that space’s dashboards and saved objects, not what was granted once and never revisited.

ES-07

Snapshot Repository Access

Registering, browsing or restoring through Kibana’s Snapshot and Restore feature needs the monitor, manage_slm, cluster:admin/snapshot and cluster:admin/repository cluster privileges together, and a separate cluster:admin/settings/update privilege before anyone can change which repository is the default. We test who actually holds each of those privileges against who is meant to manage backups, and whether a repository’s storage credentials are scoped no wider than the bucket or share it needs.

ES-08

Network Exposure on Ports 9200 and 9300

Elastic’s networking reference states a node binds only to localhost by default and cannot be reached remotely until network.host is changed, at which point http.port, defaulting to the 9200-9300 range, and transport.port, defaulting to 9300-9400, both become reachable from whatever network can route to them. We test what network.host, firewall rules and any cloud security group actually allow against what the deployment needs to reach it, not what a default installation ships with.

ES-09

Anonymous Access Configuration

Incoming requests with no authentication token are rejected with a 401 by default, and Elastic’s documentation states that anonymous access only becomes possible once a role is explicitly assigned to the anonymous user in elasticsearch.yml; without one, requests stay rejected. We test whether that setting is present anywhere in scope and, if it is, whether the role it grants is any narrower than what an authenticated user already gets.

ES-10

Application Query Authorisation and Tenant Isolation

Elasticsearch itself enforces the roles, document queries and field grants assigned to whichever identity authenticates a request, but an application that builds its own search queries can still let one tenant’s request reach past its own index pattern or document filter if the tenant boundary was meant to be added at the application layer rather than by Elasticsearch. We test the application’s own query-building code for a tenant identifier that is trusted from the request rather than enforced by a role, a document-level security query, or a separate index per tenant.

OUR PROCESS

Elasticsearch Security Review: From Scope to Attestation

01

Scope and Access

We agree which indices, data streams, Kibana spaces and API keys are in scope, plus an authenticated user or key for every privilege tier you want tested, from an ordinary application role through to one that can read role and snapshot repository configuration.

02

Role and Privilege Mapping

We map every role’s index privileges, document queries, field grants and Kibana space assignments against who or what actually needs that level of access.

03

Manual Testing

A CREST-certified tester manually tests authentication and role enforcement, document and field-level security, API key scope, network exposure and application-layer query handling, chaining findings where they compound.

04

Attestation and Retest

You get a technical report with CVSS scores and reproduction steps, a walkthrough call, a free retest once fixes are deployed, and an attestation letter for auditors.

CREDENTIALS

Verified Accreditations Auditors Accept

Every credential below is independently verifiable. UK procurement teams, FCA supervisors, ISO 27001 / SOC 2 auditors, and cyber insurance underwriters all recognise these standards.

GET YOUR QUOTE

Get a CREST Elasticsearch pen test quote in 24 hours

A fixed-price quote back in one business day, from a named CREST assessor. No sales pipeline, no chasing.

  • CREST and IASME accredited. Testing your auditors and clients already recognise.
  • Fast-track testing within 24 hours where required. Free retest of every fix included.
  • Live findings via your client portal, not a four-week PDF.
  • Fixed price from £3,500 for a single-role, single-app scope, agreed up front. Most engagements run £5,000 and up. No day-rate surprises.
What clients say
There wasn’t another company we could find that could deliver what we needed in the timeframe we needed. The client loved it, and we got instant ROI from the engagement.
CelloriDan WilcocksonFounder, Cellori

Under NDA Further named references available on a scoping call.

What happens next
  1. We reply within one business day with a fixed-price quote from a named CREST assessor.
  2. You approve the scope and we book a start date, usually within 24 hours.
  3. Live findings land in your client portal as we test, with a free retest of every fix.
Accredited & recognised
CREST member Cyber Essentials certified Cyber Essentials Plus certified IASME certifying body ISO 27001 certified ISO 9001 certified UK Cyber Security Council Crown Commercial Service supplier

Get your fixed pen test quote in 24 hours

⚡24h reply ✓CREST tester ↻Free retests

or book a 20-min scoping call first

We reply within one business day. Your data stays with us. No newsletter signup.

COMPLIANCE READY

Reports Mapped to Every Framework

Findings are written so your team can reference the report against each framework without translation work.

ISO 27001:2022

Annex A.8.8 management of technical vulnerabilities plus A.5.15-5.18 and A.8.2-8.5 access control validation.

SOC 2 Type I & II

CC6 logical access, CC7 system operations, CC8 change management evidence.

PCI DSS

Requirement 11.4 application penetration testing across cardholder data environments, including ecommerce penetration testing for online retail platforms.

FCA SYSC

SYSC 4.1.1R, 6.1.1R, 13 mapped to each finding for FCA-regulated firms.

UK GDPR

Article 32 effectiveness testing, customer-data security controls, ICO-acceptable evidence.

Cyber Essentials Plus

Direct certification through our IASME body status, single-vendor delivery.

PRICING

Transparent Elasticsearch Security Review Pricing

Pricing depends on the number of roles, integrations and environments in scope. See our pricing page for how we quote.

✦ ALWAYS · ON EVERY TIER · NO EXCEPTIONS ✦
✓Free retests, no time limit
✓Free rescheduling
✓No cancellation fees
✓24-hour scope to active testing
✓Live findings to client portal
✓Executive + technical report
✓60-min walkthrough call
✓Letter of attestation
SMALL / SMB
£2,620–£3,940
2 to 3 testing days

Single user role, basic CRUD application, marketing website with auth. Around 5 working days from kickoff to report.

Get a fixed quote
ENTERPRISE
£6,110–£8,730
4 to 6 testing days

Multi-tenant platform, complex authorisation matrix, integration-heavy applications. Around 15 to 20 working days from kickoff to report.

Get a fixed quote

Full UK pen test cost guide

WHY EJN LABS

What You Get From Elasticsearch Security Review

Six concrete differentiators competitors don’t all match.

CREST-Certified Testers, Verifiable

Every test by a CREST-certified pen tester (CRT, CCT APP, CCT INF where applicable). Verify our company status at crest-approved.org.

24-Hour Startup, Where Required

From signed scope to active testing in a single business day for incident response, audit deadlines, or regulator-driven timelines.

Live Findings, Not 4-Week PDFs

Critical issues reported during testing through your client portal. Your team remediates while testing continues.

Audit-Ready Reports

Executive summary plus full technical report with CVSS scores and explicit framework mappings (ISO 27001, SOC 2, PCI DSS, FCA SYSC).

Free Retests, Standard

Verify remediation of every finding before close-out. Letter of attestation for audit submission included. Most competitors charge £1,500-£3,000 per retest.

UK-Based CREST Testers

Every engagement performed by vetted, UK-based CREST-certified testers, matched to your needs, security clearance, and compliance scope.

FAQ

Frequently Asked

What access do you need to test our Elasticsearch cluster?

We need at least one authenticated user or API key for every privilege tier in scope, from an ordinary application role through to one that can read role, snapshot repository and Kibana space configuration. Read access to existing role definitions and any external identity provider’s mapping rules speeds up the review, though we can test with authenticated access alone.

Will testing touch live data?

We test the indices, data streams and Kibana spaces you nominate, working against your actual roles, document queries and application search code rather than a copy, so we agree exclusions such as destructive index operations or production-only data before testing starts. We do not export real customer data or run destructive tests without that agreement in writing.

Do you test Elastic Cloud and self-managed Elasticsearch the same way?

The underlying access model is the same: who can authenticate, what role or API key they hold, and what a document query or field grant actually restricts. What differs is the boundary, since Elastic Cloud manages the host, TLS and encryption at rest automatically, so we confirm during scoping exactly what you control on your deployment type and test to that boundary.

What is out of scope for a single-system Elasticsearch review?

We never test Elasticsearch’s own source code, the underlying host or hypervisor of an Elastic Cloud deployment, or Elastic Cloud’s shared infrastructure, and a separately hosted application that happens to query the cluster is scoped and quoted on its own. We test the authentication, roles, document and field-level security, API keys, network configuration and application-level query handling for the cluster you nominate.

Does Elastic have a policy on customer penetration testing?

Elastic publishes security and shared-responsibility documentation for Elastic Cloud, but we have not found a published rules-of-engagement page for customers testing their own deployments in the way AWS, Microsoft Azure and Google Cloud publish for their platforms. We confirm Elastic’s current terms for testing your own deployment during scoping and test within them.

Do you test OpenSearch the same way?

OpenSearch is an open-source fork of an older Elasticsearch codebase, now run under the Linux Foundation, and it has since diverged into its own access-control model rather than tracking Elastic’s documentation. We scope and quote OpenSearch separately rather than assuming the two behave identically.

How long does an Elasticsearch security review take?

A single cluster, with a limited number of indices, roles and Kibana spaces, sits in our 2-day single-system scope, with a report typically landing around 5 working days after kickoff. More indices, multiple Kibana spaces, or a mix of self-managed and Elastic Cloud deployments moves into a larger scope with more testing days.

Are your testers CREST certified?

Yes. Every Elasticsearch engagement is carried out by UK-based, CREST-certified testers, and your report and attestation letter are recognised by auditors and insurers accordingly.

EXPLORE EVERY SERVICE

20+ CREST-accredited testing services in one place

Web, mobile, API, cloud, AI, infrastructure, red team. Pick the test that fits your environment.

Penetration testing services
READY TO START

Get a fixed price for your Elasticsearch review

Elasticsearch has switched security on by default since version 8.0, but clusters upgraded from older versions can still run without it. We test authentication, roles, API keys and network exposure. CREST-certified testers, fixed price from £2,620 for a 2-day single-system scope, quoted within 24 hours.