blob: 601f5d146f18cfce8986515da778aa515fbb608e [file] [view]
---
title: "Download and verify"
---
<!---
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
# Download and verify Apache Ranger
Apache Ranger is distributed as a source tarball, as binary tarballs for each service and plugin, as Docker
images and as Maven artifacts. All releases are made under the
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0); the `LICENSE` and `NOTICE` files in
each artifact list the terms of the bundled third-party components.
Whatever you download, verify it. Every file published by the project comes with a detached OpenPGP signature
(`.asc`) and a checksum file (`.sha512`, and `.sha256` for the source tarball). The signing keys are in the
project's `KEYS` file. Verification takes a minute and protects you from a corrupted mirror or a tampered file.
## Current release
The current stable release is **Apache Ranger 2.9.0** (August 8, 2026); see the
[2.9.0 release notes](2.9.0.md). Download it from the ASF download server, which serves the closest mirror:
| Artifact | Link |
| --- | --- |
| Source | [apache-ranger-2.9.0.tar.gz](https://downloads.apache.org/ranger/2.9.0/apache-ranger-2.9.0.tar.gz) ([asc](https://downloads.apache.org/ranger/2.9.0/apache-ranger-2.9.0.tar.gz.asc), [sha512](https://downloads.apache.org/ranger/2.9.0/apache-ranger-2.9.0.tar.gz.sha512), [sha256](https://downloads.apache.org/ranger/2.9.0/apache-ranger-2.9.0.tar.gz.sha256)) |
| Services | [services/](https://downloads.apache.org/ranger/2.9.0/services/) — `admin`, `usersync`, `tagsync`, `kms`, `pdp` |
| Plugins | [plugins/](https://downloads.apache.org/ranger/2.9.0/plugins/) — `atlas`, `elasticsearch`, `hbase`, `hdfs`, `hive`, `kafka`, `knox`, `kylin`, `ozone`, `presto`, `schema-registry`, `solr`, `sqoop`, `storm`, `trino`, `yarn` |
| Tools | [tools/](https://downloads.apache.org/ranger/2.9.0/tools/) — `migration-util`, `ranger-tools`, `sample-client`, `solr_audit_conf` |
| Everything | [downloads.apache.org/ranger/2.9.0/](https://downloads.apache.org/ranger/2.9.0/) |
Binary tarballs follow the naming pattern `ranger-<version>-<component>.tar.gz`, for example
`services/admin/ranger-2.9.0-admin.tar.gz` and `plugins/hive/ranger-2.9.0-hive-plugin.tar.gz`. Each sits next to
its `.asc` and `.sha512` files. Binary tarballs have been published for 2.6.0 and later (the `pdp` service and the
`trino` plugin from 2.9.0); for older releases build them from the source tarball.
Previous releases are listed on the [Releases](index.md) page. Every release ever made, including the
incubating ones, stays available at
[archive.apache.org/dist/ranger/](https://archive.apache.org/dist/ranger/) and
[archive.apache.org/dist/incubator/ranger/](https://archive.apache.org/dist/incubator/ranger/).
## Verify signatures and checksums
Signatures and checksums must always be fetched from the ASF servers (`downloads.apache.org` or
`archive.apache.org`), not from a mirror, so that a compromised mirror cannot serve matching fake files.
### 1. Import the signing keys
The `KEYS` file contains the public keys of all Ranger release managers:
```bash
curl -O https://downloads.apache.org/ranger/KEYS
gpg --import KEYS
```
The same file is available from `https://dist.apache.org/repos/dist/release/ranger/KEYS`. Release announcement
emails name the key used for that release; you can show a key's fingerprint with `gpg --fingerprint <key-id>`.
Because you import keys from a file rather than through a web of trust, `gpg` will report the signature as good
but the key as not certified; that warning is expected.
### 2. Verify the OpenPGP signature
```bash
export RANGER_VERSION=2.9.0
curl -O https://downloads.apache.org/ranger/${RANGER_VERSION}/apache-ranger-${RANGER_VERSION}.tar.gz
curl -O https://downloads.apache.org/ranger/${RANGER_VERSION}/apache-ranger-${RANGER_VERSION}.tar.gz.asc
gpg --verify apache-ranger-${RANGER_VERSION}.tar.gz.asc apache-ranger-${RANGER_VERSION}.tar.gz
```
A successful check prints `Good signature from "<release manager>"`. Any other result means the file must not be
used.
### 3. Verify the checksum
For releases from 2.5.0 onward the `.sha512` file is produced with `sha512sum`, so it can be checked directly:
=== "Linux"
```bash
curl -O https://downloads.apache.org/ranger/${RANGER_VERSION}/apache-ranger-${RANGER_VERSION}.tar.gz.sha512
sha512sum -c apache-ranger-${RANGER_VERSION}.tar.gz.sha512
```
=== "macOS"
```bash
curl -O https://downloads.apache.org/ranger/${RANGER_VERSION}/apache-ranger-${RANGER_VERSION}.tar.gz.sha512
shasum -a 512 -c apache-ranger-${RANGER_VERSION}.tar.gz.sha512
```
The source tarball also ships a `.sha256` file; `sha256sum -c` (or `shasum -a 256 -c`) checks it the same way.
Repeat steps 2 and 3 for every binary tarball you download.
!!! note "Older releases"
The `.sha512` files of releases 2.0.0 through 2.4.0 are in `gpg --print-md SHA512` format (upper-case hex in
groups), which `sha512sum -c` cannot read. For those, run `gpg --print-md SHA512 apache-ranger-<version>.tar.gz`
and compare the output with the file. The 2.2.0 checksum files are named with an upper-case extension,
`apache-ranger-2.2.0.tar.gz.SHA512` and `.SHA256`. Releases 0.4.0 through 0.7.0 (except 0.6.3) have no
`.sha512` file; their digests are in a single `.mds` file (`gpg --print-mds` output), so compare the matching
line with `gpg --print-md SHA512 <file>` or `gpg --print-md SHA1 <file>`.
## Docker images
Official images are published to Docker Hub under the `apache` organization for each release from 2.4.0 onward.
The release manager builds them from the `dev-support/ranger-docker` Dockerfiles at the release tag; see
[Release process](../project/release-process.md).
| Image | Purpose | Tags |
| --- | --- | --- |
| [apache/ranger](https://hub.docker.com/r/apache/ranger) | Ranger Admin | `2.4.0` … `2.9.0` |
| [apache/ranger-db](https://hub.docker.com/r/apache/ranger-db) | PostgreSQL database initialized for Ranger | same as `apache/ranger` |
| [apache/ranger-solr](https://hub.docker.com/r/apache/ranger-solr) | Solr with the `ranger_audits` collection | same as `apache/ranger` |
| [apache/ranger-zk](https://hub.docker.com/r/apache/ranger-zk) | ZooKeeper for Solr | `2.4.0` … `2.8.0` (no `2.9.0` tag has been published) |
| [apache/ranger-base](https://hub.docker.com/r/apache/ranger-base) | Base image (OS + JDK) used to build and run the other images | `<date>-<n>-<jdk>`, for example `20260806-2-17` |
The images are not signed; pull them by version tag rather than `latest` and check the image digest shown by
Docker Hub. The quick-start below, from the cwiki page
[Run Ranger in Docker using DockerHub images](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=406622390),
starts Ranger Admin with its PostgreSQL, Solr and ZooKeeper dependencies:
```bash
export RANGER_VERSION=2.9.0
export RANGER_ZK_VERSION=2.8.0
docker pull apache/ranger-zk:${RANGER_ZK_VERSION}
docker pull apache/ranger-solr:${RANGER_VERSION}
docker pull apache/ranger-db:${RANGER_VERSION}
docker pull apache/ranger:${RANGER_VERSION}
docker network create rangernw
docker run -d --name ranger-zk --hostname ranger-zk.example.com --network rangernw -p 2181:2181 \
apache/ranger-zk:${RANGER_ZK_VERSION}
docker run -d --name ranger-solr --hostname ranger-solr.example.com --network rangernw -p 8983:8983 \
apache/ranger-solr:${RANGER_VERSION} solr-precreate ranger_audits /opt/solr/server/solr/configsets/ranger_audits/
docker run -d --name ranger-db --hostname ranger-db.example.com --network rangernw \
--health-cmd='su -c "pg_isready -q" postgres' --health-interval=10s --health-timeout=2s --health-retries=30 \
apache/ranger-db:${RANGER_VERSION}
docker run -d --name ranger --hostname ranger.example.com --network rangernw \
-e RANGER_VERSION=${RANGER_VERSION} -e RANGER_DB_TYPE=postgres -p 6080:6080 \
apache/ranger:${RANGER_VERSION} /home/ranger/scripts/ranger.sh
```
Ranger Admin is then available at `http://localhost:6080/` (user `admin`, password `rangerR0cks!`). To run the
full stack with plugins, or to build images from a source checkout, use the compose files in
`dev-support/ranger-docker`.
## Maven Central
Ranger libraries are published to Maven Central under the group `org.apache.ranger`, with the release version
as the artifact version. Releases 0.6.0 through 2.9.0 are available; artifacts for a new release are deployed
during the release process, so check
[repo1.maven.org/maven2/org/apache/ranger/](https://repo1.maven.org/maven2/org/apache/ranger/) if the version
you need is not there yet.
Artifacts you are most likely to depend on:
| Artifact | Contents |
| --- | --- |
| `ranger-plugins-common` | Policy engine, `RangerBasePlugin`, policy refresher, `RangerAccessRequest`/`RangerAccessResult` |
| `ranger-plugins-audit` (up to 2.6.0) / `ranger-audit-dest-solr`, `ranger-audit-dest-hdfs`, `ranger-audit-dest-es`, `ranger-audit-dest-kafka`, `ranger-audit-dest-log4j`, `ranger-audit-dest-cloudwatch` (2.7.0 and later) | Audit framework and destinations; see the [2.7.0 breaking changes](2.7.0.md#breaking-changes) |
| `ranger-intg` | Java client for the Ranger Admin REST API (`RangerClient`) |
| `ranger-authz-api`, `authz-embedded` | Component-neutral authorization API and embedded authorizer (2.8.0 and later) |
| `ranger-<component>-plugin`, `ranger-<component>-plugin-shim` | Per-component authorizers and their shim classes (`hdfs`, `hive`, `hbase`, `kafka`, `knox`, `solr`, `ozone`, `trino`, …) |
| `ranger-plugin-classloader` | Classloader used by the shims to isolate plugin dependencies |
| `ranger-kms`, `ranger-tagsync`, `unixusersync`, `security-admin-web` | Service modules |
```xml title="pom.xml"
<dependency>
<groupId>org.apache.ranger</groupId>
<artifactId>ranger-plugins-common</artifactId>
<version>2.9.0</version>
</dependency>
```
The Python client is published to PyPI as [`apache-ranger`](https://pypi.org/project/apache-ranger/)
(`pip install apache-ranger`); its source is in `intg/src/main/python` of the repository.
## Source code and release tags
Every release since 0.7.1 is tagged in the Git repository as `release-ranger-<version>`
(<https://github.com/apache/ranger/tags>); the tag matches the contents of the source tarball. Release branches
are named `ranger-<major>.<minor>`, for example `ranger-2.9`. To build a release from source:
```bash
git clone https://github.com/apache/ranger.git
cd ranger
git checkout release-ranger-2.9.0
mvn clean package -DskipTests
```
The build writes the same `ranger-<version>-<component>.tar.gz` files that are published in the `services/`,
`plugins/` and `tools/` directories to `target/`.
## Further reading
- [Releases](index.md) — every release with dates and links.
- [Release process](../project/release-process.md) — how artifacts are built, signed and published.
- [Installation overview](../getting-started/install.md) — choosing between tarballs, Docker and building from source.
- [ASF release signing guide](https://infra.apache.org/release-signing.html) and
[verifying downloads](https://www.apache.org/dyn/closer.cgi#verify).