Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
02be3cf
RANGER-5482:Create Ranger Audit Server with SOLR and HDFS as audit co…
rameeshm Mar 13, 2026
2ac2c09
RANGER-5520:Audit Server refactoring to segregate audit ingestion and…
rameeshm May 10, 2026
50df820
RANGER-5613:DockerFile of Ranger Audit Server has issue duplicate too…
rameeshm May 27, 2026
f4191e7
RANGER-4676, RANGER-5615: Add OpenSearch Dispatcher to Ranger Audit S…
paras200 Jun 29, 2026
3b9d234
RANGER-5654: Fix Solr audit dispatcher Kerberos TGT relogin (No key t…
ramackri Jun 24, 2026
37e9cbd
RANGER-5720: DB patch 078 — x_audit_config table and audit server boo…
ramackri Sep 8, 2026
485e889
Backport to ranger-2.10: audit-server pom alignment and GDS exclusion
Sep 11, 2026
fc6a964
RANGER-5483:Add Audit Server as a destination for all the Ranger Plug…
rameeshm May 27, 2026
98ebad2
RANGER-5632: update plugins packaging to have audit-server as the onl…
mneethiraj Jun 8, 2026
5027a9d
RANGER-5633: Wire audit-server Kafka producer and consumer tuning (#1…
ramackri Jun 11, 2026
4b50f75
RANGER-5642, RANGER-5644: Package Jersey auditserver REST client JARs…
ramackri Jun 14, 2026
7a33244
RANGER-5650: KMS plugin: package Jackson/Jersey audit client JARs in …
ramackri Jun 19, 2026
192a32b
RANGER-5642: Exclude duplicate Jersey JARs from Kafka plugin packagin…
ramackri Jun 16, 2026
7f3fc28
RANGER-5646: Exclude duplicate Hive/Hadoop JARs from hive plugin pack…
ramackri Jun 15, 2026
03b5ef7
RANGER-5661:Fix Kafka plugin packaging for broker-delegate classloadi…
ramackri Jul 3, 2026
4b8a9be
RANGER-5660: Fix YARN plugin packaging and enable script lib path (#1…
ramackri Jul 3, 2026
14d3f5a
RANGER-5640: Bump Docker Ozone to 2.1 and package audit-server JARs i…
ramackri Jun 11, 2026
e34e958
RANGER-5637: Fix Knox and Ozone plugin docker CI smoke-test failures …
ramackri Jun 10, 2026
7edae4c
RANGER-5645: Add audit-ingestor service-user allowlist for Docker plu…
ramackri Jun 15, 2026
f81db67
RANGER-5643: Fix docker Kerberos for Solr audit dispatcher (#1016)
ramackri Jun 14, 2026
eba414a
Backport to ranger-2.10: restore 2.10 docker .env after Wave 2 conflicts
Sep 11, 2026
3c1d650
RANGER-5680: Restructure audit services in docker compose and use Ope…
kumaab Aug 21, 2026
92a3fb6
RANGER-5679: Document OpenSearch audit setup in docker README and dec…
paras200 Aug 5, 2026
1a08654
RANGER-5700: Support SPIFFE-based authn via HTTP headers (#1096)
kumaab Jul 22, 2026
fc4ae50
RANGER-5766: Add support for SPIFFE Ids as usernames in Ranger (#1197)
kumaab Aug 31, 2026
2b8d2bd
RANGER-5767: Extend header based authn to support ROLEs in Ranger Adm…
kumaab Sep 4, 2026
68e2fe8
RANGER-5723: Plugin SPIFFE outbound auth for audit-server destination…
ramackri Aug 22, 2026
eec139c
RANGER-5736: Fix MariaDB grant failure during Ranger Admin DB setup (…
ramackri Aug 14, 2026
421763a
RANGER-5693: Stop logging full JWT bearer tokens on validation failur…
ramackri Jul 19, 2026
7808aaf
RANGER-5716: Fix swapped client IP and resource in KMS Ranger audits …
ramackri Jul 31, 2026
572542b
Backport to ranger-2.10: fix RANGER-5680 rename conflict leftovers
Sep 11, 2026
26944f9
Backport to ranger-2.10: Jersey 1 SPIFFE wiring and build fixes
Sep 11, 2026
74d13ae
Backport to ranger-2.10: remove sortpom backup files
Sep 11, 2026
7fe5db9
Backport to ranger-2.10: security-admin build and SPIFFE fixes withou…
Sep 11, 2026
079da73
Backport to ranger-2.10: JDK8-compatible SPIFFE unit tests
Sep 11, 2026
258181f
Backport to ranger-2.10: JDK8-compatible OpenSearchUtilTest
Sep 11, 2026
83c5067
Backport to ranger-2.10: JDK8-compatible OpenSearch Map/List helpers
Sep 11, 2026
7adcd5b
Backport to ranger-2.10: use hive.storage-api.version in audit HDFS d…
Sep 11, 2026
176fd0c
Backport to ranger-2.10: resolve Kylin RoaringBitmap from Maven Central.
Sep 11, 2026
afec0d7
Backport to ranger-2.10: fix RAT license check for CI.
Sep 11, 2026
c6b3767
Backport to ranger-2.10: restore JDK 8 CI and fix docker/kafka packag…
Sep 11, 2026
26ee7ea
Backport to ranger-2.10: use Jersey 1 SpringServlet in audit server W…
Sep 11, 2026
ea6de57
Backport to ranger-2.10: pre-serialize audit batches for audit-server…
Sep 11, 2026
44962c3
Backport to ranger-2.10: add Kerberos auth_to_local rules for audit i…
Sep 11, 2026
72d3677
Backport to ranger-2.10: package Jersey 1.x audit client in HBase and…
Sep 11, 2026
532ba2e
Backport to ranger-2.10: fix Hive 4.0 pre-exec hooks ConfVars lookup.
Sep 11, 2026
38da924
Backport to ranger-2.10: harden docker smoke for HBase, KMS, and Ozon…
Sep 11, 2026
0a2dfb9
Backport to ranger-2.10: avoid Jersey 1.x ClientHandlerException on K…
Sep 11, 2026
51f86fb
Backport to ranger-2.10: pull jersey-bundle into plugin assemblies vi…
Sep 11, 2026
04cde3e
Backport to ranger-2.10: fix docker smoke for HBase, Hive, and KMS pa…
Sep 11, 2026
56abfa2
Backport to ranger-2.10: apply Ranger Java style and fix PMD violation.
Sep 12, 2026
4db92c2
Backport to ranger-2.10: drop local dev-support formatting helpers fr…
Sep 12, 2026
9cd1ed4
Fix KMS Jersey packaging and Knox/Solr docker smoke on 2.10.
Sep 12, 2026
8ad1b09
Fix Knox gateway data directory ownership after master secret setup.
Sep 12, 2026
80e85f5
Skip Knox JDK 17 JVM flags when running on JDK 8 docker images.
Sep 12, 2026
cd9daaa
Fix Jersey and audit packaging for 2.10 docker smoke tests.
Sep 12, 2026
21f1ea0
Restore compile scope for Glassfish Jersey in knox-agent.
Sep 12, 2026
7a8734b
Exclude jsr311-api from Knox compile classpath.
Sep 12, 2026
510f202
Fix sortpom ordering in audit-dispatcher-opensearch pom.
Sep 12, 2026
8eb087e
Fix CI failures for build-11 and docker smoke jobs.
Sep 12, 2026
f6771d6
Fix build-11 Knox jar install path in CI.
Sep 12, 2026
2a285d3
Restore OpenSearch audit pipeline in CI docker jobs.
Sep 12, 2026
3a3af08
Fix PDP compose network for CI docker stack.
Sep 12, 2026
f927151
Fix CI kafka readiness and JDK 11 KMS build.
Sep 12, 2026
1b125b8
Fix staged docker compose service name for postgres in CI.
Sep 12, 2026
a1522b7
Fix docker CI failures for PDP audit, KDC keytabs, and Hive setup.
Sep 12, 2026
4316d1f
Fix plugins-docker CI by aligning Hive container startup with master.
Sep 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
168 changes: 141 additions & 27 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ on:
env:
MAVEN_OPTS: -Xmx5g -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
build-8:
runs-on: ubuntu-22.04
Expand Down Expand Up @@ -72,6 +76,14 @@ jobs:
name: target-8
path: target/*

- name: Upload build-11 dependency jars
uses: actions/upload-artifact@v4
with:
name: build-11-deps
path: |
knox-agent/target/ranger-knox-plugin-*.jar
kms/target/ranger-kms-*.jar

build-11:
needs:
- build-8
Expand All @@ -93,8 +105,29 @@ jobs:
with:
java-version: '11'
distribution: 'temurin'
- name: Download build-11 dependency jars from build-8
uses: actions/download-artifact@v4
with:
name: build-11-deps
- name: Install build-11 dependency jars for distro build
run: |
KNOX_JAR="$(find . -path '*/ranger-knox-plugin-*.jar' -not -path '*/ranger-knox-plugin-shim-*' | head -1)"
KMS_JAR="$(find . -path '*/ranger-kms-*.jar' -not -path '*plugin*' | head -1)"
if [ -z "${KNOX_JAR}" ] || [ -z "${KMS_JAR}" ]; then
echo "Missing build-11 dependency jar(s)" >&2
find . -name 'ranger-knox-plugin-*.jar' -o -name 'ranger-kms-*.jar' >&2 || true
exit 1
fi
mvn install:install-file \
-Dfile="${KNOX_JAR}" \
-DpomFile=knox-agent/pom.xml \
--no-transfer-progress -B -q
mvn install:install-file \
-Dfile="${KMS_JAR}" \
-DpomFile=kms/pom.xml \
--no-transfer-progress -B -q
- name: build (11)
run: mvn -T 8 clean verify -pl '!knox-agent' --no-transfer-progress -B -V
run: mvn -T 8 clean verify -pl '!knox-agent,!kms' --no-transfer-progress -B -V
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
Expand All @@ -105,7 +138,7 @@ jobs:
needs:
- build-8
runs-on: ubuntu-22.04
timeout-minutes: 30
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- name: Download build-8 artifacts
Expand All @@ -116,10 +149,15 @@ jobs:
- name: Copy artifacts for docker build
run: |
mv ranger-*-admin.tar.gz dev-support/ranger-docker/dist
mv ranger-*-pdp.tar.gz dev-support/ranger-docker/dist
mv ranger-*-usersync.tar.gz dev-support/ranger-docker/dist
mv ranger-*-tagsync.tar.gz dev-support/ranger-docker/dist
mv ranger-*-kms.tar.gz dev-support/ranger-docker/dist
mv ranger-*-solr-plugin.tar.gz dev-support/ranger-docker/dist
# Audit index stores are only brought up via the audit service, which
# also needs Kafka + the audit ingestor/dispatcher images.
mv ranger-*-kafka-plugin.tar.gz dev-support/ranger-docker/dist
mv ranger-*-audit-ingestor.tar.gz dev-support/ranger-docker/dist
mv ranger-*-audit-dispatcher.tar.gz dev-support/ranger-docker/dist
mv version dev-support/ranger-docker/dist
rm -f ranger-*.tar.gz # clean up workspace

Expand All @@ -129,14 +167,19 @@ jobs:
- name: Download DB and Log4J connectors
run: |
cd dev-support/ranger-docker
./download-archives.sh none
# Kafka archive is needed to build the ranger-kafka image (audit pipeline).
./download-archives.sh kafka

- name: Build all ranger-service images
run: |
cd dev-support/ranger-docker
export RANGER_DB_TYPE=postgres
docker compose \
export AUDIT_INDEX_STORE=opensearch
export AUDIT_DESTINATIONS=audit-store-opensearch
docker compose --profile ${AUDIT_DESTINATIONS} \
-f docker-compose.ranger.yml \
-f docker-compose.ranger-audit-service.yml \
-f docker-compose.ranger-pdp.yml \
-f docker-compose.ranger-usersync.yml \
-f docker-compose.ranger-tagsync.yml \
-f docker-compose.ranger-kms.yml build
Expand All @@ -145,16 +188,30 @@ jobs:
run: |
cd dev-support/ranger-docker
export RANGER_DB_TYPE=postgres
docker compose \
-f docker-compose.ranger.yml \
-f docker-compose.ranger-usersync.yml \
-f docker-compose.ranger-tagsync.yml \
-f docker-compose.ranger-kms.yml up -d
export AUDIT_INDEX_STORE=opensearch
export AUDIT_DESTINATIONS=audit-store-opensearch
COMPOSE_FILES="-f docker-compose.ranger.yml \
-f docker-compose.ranger-audit-service.yml \
-f docker-compose.ranger-pdp.yml \
-f docker-compose.ranger-usersync.yml \
-f docker-compose.ranger-tagsync.yml \
-f docker-compose.ranger-kms.yml"
# Start admin first so Kafka policy cache can populate before audit pipeline healthchecks.
docker compose ${COMPOSE_FILES} up -d ranger-kdc ranger-zk ranger-db ranger
echo "Waiting for Ranger Admin..."
for i in $(seq 1 120); do
if curl -sf http://localhost:6080/login.jsp >/dev/null; then
echo "Ranger Admin is up after ${i} attempt(s)"
break
fi
sleep 5
done
docker compose --profile ${AUDIT_DESTINATIONS} ${COMPOSE_FILES} up -d

- name: Check status of containers and remove them
run: |
sleep 60
containers=(ranger ranger-zk ranger-solr ranger-postgres ranger-usersync ranger-tagsync ranger-kms);
containers=(ranger ranger-zk ranger-opensearch ranger-postgres ranger-pdp ranger-usersync ranger-tagsync ranger-kms ranger-kafka ranger-audit-ingestor ranger-audit-dispatcher-opensearch);
flag=true;
for container in "${containers[@]}"; do
if [[ $(docker inspect -f '{{.State.Running}}' $container 2>/dev/null) == "true" ]]; then
Expand All @@ -175,9 +232,33 @@ jobs:
exit 1;
fi

# Download large plugin distro archives in parallel with build-8 so a slow
# archive.apache.org mirror does not consume the docker-build job budget.
plugins-download-archives:
runs-on: ubuntu-24.04
timeout-minutes: 90
steps:
- uses: actions/checkout@v4

- name: Cache downloaded archives
uses: actions/cache@v4
with:
path: dev-support/ranger-docker/downloads
key: ${{ runner.os }}-ranger-downloads-${{ hashFiles('dev-support/ranger-docker/.env') }}
restore-keys: |
${{ runner.os }}-ranger-downloads-

# Populates downloads/ for plugins-docker-build; Ozone tarball + extract dir are
# cached together (extractOzoneIfNeeded in download-archives.sh).
- name: Run download-archives.sh
run: |
cd dev-support/ranger-docker
./download-archives.sh hadoop hive hbase kafka knox ozone

plugins-docker-build:
needs:
- build-8
- plugins-download-archives
runs-on: ubuntu-24.04 # bumping os version for more disk space
timeout-minutes: 60 # bumping timeout to allow containers to come up
steps:
Expand All @@ -191,23 +272,27 @@ jobs:
run: |
mv ranger-*-admin.tar.gz dev-support/ranger-docker/dist
mv ranger-*-plugin.tar.gz dev-support/ranger-docker/dist
# Audit index stores are only brought up via the audit service, which
# also needs the audit ingestor/dispatcher images.
mv ranger-*-audit-ingestor.tar.gz dev-support/ranger-docker/dist
mv ranger-*-audit-dispatcher.tar.gz dev-support/ranger-docker/dist
mv version dev-support/ranger-docker/dist
rm -f ranger-*.tar.gz # clean up workspace

- name: Free up disk space
run: docker system prune --all --force --volumes

- name: Cache downloaded archives
- name: Restore plugin archives from cache
uses: actions/cache@v4
with:
path: dev-support/ranger-docker/downloads
key: ${{ runner.os }}-ranger-downloads-${{ hashFiles('dev-support/ranger-docker/.env') }}
restore-keys: |
${{ runner.os }}-ranger-downloads-

# Populates downloads/ for plugins-docker-build; Ozone tarball + extract dir are
# cached together (extractOzoneIfNeeded in download-archives.sh).
- name: Run download-archives.sh
# Idempotent: skips downloads already in the Actions cache; Ozone re-extract runs
# only when the tarball or extract dir is missing/stale (see extractOzoneIfNeeded).
- name: Verify plugin archives (download any cache misses)
run: |
cd dev-support/ranger-docker
./download-archives.sh hadoop hive hbase kafka knox ozone
Expand All @@ -216,11 +301,13 @@ jobs:
run: |
cd dev-support/ranger-docker
export RANGER_DB_TYPE=postgres
docker compose \
export AUDIT_INDEX_STORE=opensearch
export AUDIT_DESTINATIONS=audit-store-opensearch
docker compose --profile ${AUDIT_DESTINATIONS} \
-f docker-compose.ranger.yml \
-f docker-compose.ranger-audit-service.yml \
-f docker-compose.ranger-hadoop.yml \
-f docker-compose.ranger-hbase.yml \
-f docker-compose.ranger-kafka.yml \
-f docker-compose.ranger-hive.yml \
-f docker-compose.ranger-knox.yml \
-f docker-compose.ranger-ozone.yml build
Expand All @@ -230,19 +317,46 @@ jobs:
cd dev-support/ranger-docker
./scripts/ozone/ozone-plugin-docker-setup.sh
export RANGER_DB_TYPE=postgres
docker compose \
-f docker-compose.ranger.yml \
-f docker-compose.ranger-hadoop.yml \
-f docker-compose.ranger-hbase.yml \
-f docker-compose.ranger-kafka.yml \
-f docker-compose.ranger-hive.yml \
-f docker-compose.ranger-knox.yml \
-f docker-compose.ranger-ozone.yml up -d
export AUDIT_INDEX_STORE=opensearch
export AUDIT_DESTINATIONS=audit-store-opensearch
COMPOSE_FILES="-f docker-compose.ranger.yml \
-f docker-compose.ranger-audit-service.yml \
-f docker-compose.ranger-hadoop.yml \
-f docker-compose.ranger-hbase.yml \
-f docker-compose.ranger-hive.yml \
-f docker-compose.ranger-knox.yml \
-f docker-compose.ranger-ozone.yml"
docker compose ${COMPOSE_FILES} up -d ranger-kdc ranger-zk ranger-db ranger
echo "Waiting for Ranger Admin..."
for i in $(seq 1 120); do
if curl -sf http://localhost:6080/login.jsp >/dev/null; then
echo "Ranger Admin is up after ${i} attempt(s)"
break
fi
sleep 5
done
docker compose --profile ${AUDIT_DESTINATIONS} ${COMPOSE_FILES} up -d

- name: Wait for KDC Kerberos readiness
run: |
cd dev-support/ranger-docker
for i in $(seq 1 90); do
status=$(docker inspect -f '{{.State.Health.Status}}' ranger-kdc 2>/dev/null || echo missing)
if [ "$status" = "healthy" ]; then
echo "ranger-kdc is healthy after ${i} attempt(s)"
exit 0
fi
echo "Waiting for ranger-kdc (status=${status})..."
sleep 2
done
echo "ranger-kdc did not become healthy in time"
docker logs ranger-kdc || true
exit 1

- name: Check status of containers and remove them
run: |
sleep 60
containers=(ranger ranger-zk ranger-solr ranger-postgres ranger-hadoop ranger-hbase ranger-kafka ranger-hive ranger-knox ozone-om ozone-scm ozone-datanode);
sleep 120
containers=(ranger ranger-zk ranger-opensearch ranger-postgres ranger-hadoop ranger-hbase ranger-kafka ranger-hive ranger-knox ozone-om ozone-scm ozone-datanode ranger-audit-ingestor ranger-audit-dispatcher-opensearch);
flag=true;
for container in "${containers[@]}"; do
if [[ $(docker inspect -f '{{.State.Running}}' $container 2>/dev/null) == "true" ]]; then
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,9 @@ winpkg/target
.python-version
/security-admin/src/main/webapp/react-webapp/node_modules
**/target

# Runtime logs and process files
logs/
*.log
*.pid
catalina.out
Loading
Loading