title: “Apache Ranger 2.9.0”

Apache Ranger 2.9.0 release notes

Apache Ranger 2.9.0 was released on August 8, 2026. It is the current stable release. The release adds the Ranger PDP server, a thin-client authorization library, a Polaris plugin, action-based policy evaluation for Ozone, header-based authentication and a large number of security and dependency fixes.

Highlights

  • Ranger PDP server — a new pdp module that runs the policy engine as a standalone service and answers authorization requests over REST (RANGER-5371). A companion authz-remote library lets plugins integrate as thin clients (RANGER-5550), and RangerEmbeddedAuthorizer accepts a caller-provided audit handler (RANGER-5505).
  • Apache Polaris plugin to authorize Apache Iceberg catalogs managed by Polaris (RANGER-4910, RANGER-5546).
  • Ozone action-based policies — the Ozone service definition gains an action-matches policy condition and matchers for S3-style actions, behind a feature flag (RANGER-5628, RANGER-5667, RANGER-5687).
  • Header-based authentication for Ranger Admin (RANGER-5499), configuration-based super users and super groups (RANGER-5627), and an authorization check for the doAsUser parameter (RANGER-5539).
  • Tag sync for Trino — TagSync processes Atlas notifications for Trino entities (RANGER-5522); Atlas Kafka consumer updated for Kafka 3.9 (RANGER-5658).
  • Performance — faster policy and role create/update when many users, groups and roles exist (RANGER-3899, RANGER-5614).
  • Dependency and packaging clean-up — Tomcat 9.0.115 (RANGER-5493), Bouncy Castle 1.84 (RANGER-5639), Netty 4.1.130 (RANGER-5502), new ranger-common-utils module (RANGER-5519), removal of jersey-bundle and javax.servlet-api dependencies (RANGER-5523, RANGER-5515).
  • Security fixes — uniform TLS hostname verification across HTTP clients (RANGER-5689), rate limiting in the UNIX auth service (RANGER-5690), no bearer tokens in logs (RANGER-5693), hardened GraalJS engine for _expression conditions (RANGER-5629), Hive CTAS/temporary-table UDF authorization (RANGER-5634).
  • Tools and clients — apache-ranger Python client 0.0.13 (RANGER-5653), Performance Analyser on Python 3.11 (RANGER-5532); the default access-audit store for a fresh install is Solr (RANGER-5710).

Component versions

The release was built and tested with the following component versions (as recorded in the release notes):

ComponentVersion
JavaJDK 8
Python3.10+ for Ranger server scripts and tools; the apache-ranger PyPI client 0.0.13 requires Python 3.13+; the Performance Analyser supports Python 3.11
MariaDB10.7.3
PostgreSQL13.16
Oracle23.6
Apache Hadoop3.4.2
Apache Kafka3.9.1
Apache Ozone2.1.1
Apache Solr8.11.3
Apache Tomcat (embedded)9.0.115

Artifacts

ArtifactLocation
Source tarballapache-ranger-2.9.0.tar.gz (signature, SHA-512)
Binary tarballshttps://downloads.apache.org/ranger/2.9.0/services/ (admin, usersync, tagsync, kms, pdp), https://downloads.apache.org/ranger/2.9.0/plugins/, https://downloads.apache.org/ranger/2.9.0/tools/
Release directoryhttps://downloads.apache.org/ranger/2.9.0/
Git tagrelease-ranger-2.9.0
Docker imagesapache/ranger:2.9.0, apache/ranger-db:2.9.0, apache/ranger-solr:2.9.0 on Docker Hub
Maven Centralorg.apache.ranger:*:2.9.0
Archivearchive.apache.org/dist/ranger/2.9.0/

Verify every download against its .asc signature and checksum file before you use it; see Download and verify.

Resolved issues

The tables below list the 68 JIRA issues recorded in the release notes for this version (30 improvements, 22 bugs fixed, 16 tasks). Each key links to the issue in the Apache JIRA.

Improvements

JIRASummary
RANGER-3899Policy creation takes more time when there are more users,groups,roles
RANGER-4910Develop Apache Ranger Plugin for Polaris to Enhance Access Control for Apache Iceberg
RANGER-5371module: Ranger PDP server
RANGER-5493Update tomcat to 9.0.115
RANGER-5499Support header based authentication
RANGER-5505update RangerEmbeddedAuthorizer to support caller provided audit handler
RANGER-5515remove javax.servlet-api depedency in agents-common module
RANGER-5516update commons-configuration2 library version from 2.8.0 to 2.13.0
RANGER-5517remove unnecessary dependency on ranger-plugins-common
RANGER-5519introduce ranger-common-utils module
RANGER-5522update tagsync to process Atlas notifications for Trino entities
RANGER-5523replace jersey-bundle dependency with jersey-client and jersey-core
RANGER-5529update RangerAuthorizer methods to be REST friendly
RANGER-5532Ranger Performance Analyser: Python 3.11 Support and Enhancements
RANGER-5539Add Authorisation Check for doAsUser Parameter
RANGER-5546Polaris service-def update to rename resource root to realm-identifier
RANGER-5549replace use of com.kstruct.gethostname4j library
RANGER-5550introduce authz-remote library to support thin client integration for plugins
RANGER-5564update RangerAuthzConfig to support properties from plugin configuration files
RANGER-5600Bump org.apache.avro:avro from 1.11.4 to 1.11.5
RANGER-5601Bump urllib3 to 2.7.0 and requests from 2.32.5 to 2.33.0
RANGER-5604Bump org.glassfish.jersey.core:jersey-client from 2.22.1 to 2.47 in /plugin-schema-registry
RANGER-5614Role creation/updation takes more time when there are more users,groups,roles
RANGER-5617Set PDP header authn cfg values to null
RANGER-5627support configuration-based super users and super groups in Ranger Admin
RANGER-5628Support for actions in Ozone Service Definition: Ozone STS action-based policy evaluation (RangerActionMatcher, RangerActionListMatcher), action-matches policy condition, Admin UI support on permission rows, DB patch PatchForOzoneServiceDefPolicyConditionUpdate_J10065, and Ozone dependency bump to 2.1.1
RANGER-5639Upgrade bouncycastle to 1.84
RANGER-5653Release apache-ranger Python client 0.0.13 with Python 3.13+ support
RANGER-5667Follow-on for RANGER-5628: deny requests missing s3Action when policy has action-matches restrictions, treat whitespace-only action lists as unrestricted, avoid unnecessary allocation in RangerActionMatcher, and fix Ozone policy UI crash when adding Allow/Deny conditions
RANGER-5513Enhance Ranger lookup API input validation

Bugs fixed

JIRASummary
RANGER-5407In Atlas Service for some of the default policies wrong permissions seen
RANGER-5463UserStore version not updated when group-user mappings are modified via UserSync
RANGER-5501missing accessType in audit logs generated by RangerEmbeddedAuthorizer
RANGER-5502Upgrade Netty to 4.1.130.Final to address CVEs
RANGER-5508fix Runtime.exec parameters
RANGER-5526Security Zone creation fails with tag service due to NonUniqueResultException
RANGER-5530[KMS]: dev_kms TestConnection from keyAdmin UI is failing after Kerberos implementation
RANGER-5538username set incorrectly
RANGER-5552Remove mvn repo for Apache Ozone in pom.xml
RANGER-5567allow validateConfig API available only for users with Ranger admin role
RANGER-5579add validation to DefaultSchemaRegistryClient createUrlSelector method
RANGER-5623UI Inconsistency: Groups tab userlist fails to reflect updated user-group mapping after successful PUT /xusers/groupusers request
RANGER-5624Inconsistent masking of updatedBy field in /xusers/groups/groupName/{group_name} API compared to /xusers/groups/{id}
RANGER-5629Harden GraalJS engine configuration used for policy condition (_expression) evaluation
RANGER-5634CTAS & Temporary-Table queries from Hive bypass UDF Select authorization
RANGER-5635ranger.admin.allow.unauthenticated.download.access is honored only when Kerberos is enabled
RANGER-5647Tag policy test fixtures, path matcher fix, and ISO EXPIRES_ON tag test dates to ranger-2.9
RANGER-5648Solr authorization fails with NPE
RANGER-5689Standardize TLS hostname verification across Ranger HTTP clients using a uniform verifier
RANGER-5690UnixAuth service lacks rate limiting on authentication attempts
RANGER-5693RangerJwtAuthHandler logs full JWT bearer token on validation failure
RANGER-5687Add feature flag for work in RANGER-5628

Tasks

JIRASummary
RANGER-5490Update webpack version from 5.94.0 to 5.105.1
RANGER-5491Update axios version from 1.12.2 to 1.13.5
RANGER-5518Upgrade underscore.js from 1.13.6 to 1.13.8
RANGER-5569Updating library dependencies in Ranger Admin React package-lock.json
RANGER-5605Fix Ranger build failure when triggered through Docker
RANGER-5638Upgrade handlebars to 4.7.9
RANGER-5657Limit getAllModuleNames() to sys-admin sessions in SessionMgr
RANGER-5658Tag Sync: remove atlas.kafka.zookeeper.connect and fix Atlas Kafka consumer for Kafka 3.9
RANGER-5694Refactor policy condition rendering component to ensure layout stability
RANGER-5709KMS secure download APIs: align Tags and Userstore with Policy/Roles — use getServiceByNameForDP() instead of getServiceByName()
RANGER-5710Default access audit store to Solr
RANGER-5637Ranger CI: fix plugins-docker-build (Ozone smoke-test failures)
RANGER-5640Align Ranger Ozone Docker with Ozone 2.1
RANGER-5712Fix Trino/Ozone plugin auth in ranger-docker (Kerberos keytabs,policy download auth, Solr audit JAAS for Ozone)
RANGER-5716Fix swapped client IP and resource in KMS Ranger audits
RANGER-5718PDP server logs NoClassDefFoundError for GsonBuilder — gson JAR missing from pdp tarball lib/

Further reading