or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

admin-client.mdauthentication-security.mdcontext-enrichment.mdindex.mdplugin-services.mdpolicy-engine.mdpolicy-models.mdresource-matching.md
tile.json

tessl/maven-org-apache-ranger--ranger-plugins-common

Common library for Apache Ranger plugins providing shared functionality, models, and utilities for security policy enforcement across various big data components.

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.apache.ranger/ranger-plugins-common@2.7.x

To install, run

npx @tessl/cli install tessl/maven-org-apache-ranger--ranger-plugins-common@2.7.0

index.mddocs/

Apache Ranger Plugins Common

Apache Ranger Plugins Common is a foundational Java library that provides shared functionality for all Apache Ranger plugins. It enables consistent security policy enforcement across diverse big data ecosystems through a comprehensive set of common components including plugin architecture, administrative client interfaces, policy models, context enrichers, audit facilities, and authorization utilities.

Package Information

  • Package Name: ranger-plugins-common
  • Package Type: maven
  • Language: Java
  • Group ID: org.apache.ranger
  • Artifact ID: ranger-plugins-common
  • Installation: Add to pom.xml:
<dependency>
  <groupId>org.apache.ranger</groupId>
  <artifactId>ranger-plugins-common</artifactId>
  <version>2.7.0</version>
</dependency>

Core Imports

import org.apache.ranger.plugin.service.RangerBasePlugin;
import org.apache.ranger.admin.client.RangerAdminClient;
import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
import org.apache.ranger.plugin.policyengine.RangerAccessRequestImpl;
import org.apache.ranger.plugin.policyengine.RangerAccessResourceImpl;
import org.apache.ranger.plugin.policyengine.RangerAccessResult;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerServiceDef;

Basic Usage

import org.apache.ranger.plugin.service.RangerBasePlugin;
import org.apache.ranger.plugin.policyengine.RangerAccessRequestImpl;
import org.apache.ranger.plugin.policyengine.RangerAccessResourceImpl;

// Initialize plugin
RangerBasePlugin plugin = new RangerBasePlugin("hdfs", "MyHDFSPlugin");
plugin.init();

// Create access request
RangerAccessResourceImpl resource = new RangerAccessResourceImpl();
resource.setValue("path", "/user/data/file.txt");

RangerAccessRequestImpl request = new RangerAccessRequestImpl();
request.setResource(resource);
request.setAccessType("read");
request.setUser("alice");

// Evaluate access
RangerAccessResult result = plugin.isAccessAllowed(request);
if (result.getIsAllowed()) {
    System.out.println("Access granted");
} else {
    System.out.println("Access denied: " + result.getReason());
}

// Note: Auditing is handled automatically during access evaluation
// Access results contain audit information processed by the plugin's audit providers

Architecture

Apache Ranger Plugins Common is built around several key architectural components:

  • Plugin Framework: Core plugin architecture with RangerBasePlugin providing lifecycle management, policy evaluation, and audit logging
  • Policy Engine: RangerPolicyEngine for evaluating access policies with support for different policy types (access, data masking, row filtering)
  • Admin Client: RangerAdminClient interface and implementations for communicating with Ranger Admin server
  • Model Objects: Rich domain models (RangerPolicy, RangerServiceDef, RangerRole) representing security policies and service definitions
  • Context Enrichment: Pluggable context enrichers for attribute-based access control and dynamic policy evaluation
  • Resource Matching: Flexible resource matching framework supporting wildcards, regex, and custom matchers
  • Audit Framework: Comprehensive audit logging with pluggable audit handlers and event processing

Capabilities

Plugin Services

Core plugin framework providing the main entry point for Ranger plugins, with lifecycle management, policy evaluation, and audit integration.

public class RangerBasePlugin {
    public RangerBasePlugin(String serviceType, String appId);
    public RangerBasePlugin(String serviceType, String serviceName, String appId);
    public RangerBasePlugin(RangerPluginConfig pluginConfig);
    public void init();
    public RangerAccessResult isAccessAllowed(RangerAccessRequest request);
    public Collection<RangerAccessResult> isAccessAllowed(Collection<RangerAccessRequest> requests, RangerAccessResultProcessor resultProcessor);
    public RangerAccessResult evalDataMaskPolicies(RangerAccessRequest request, RangerAccessResultProcessor resultProcessor);
    public RangerAccessResult evalRowFilterPolicies(RangerAccessRequest request, RangerAccessResultProcessor resultProcessor);
    public RangerResourceACLs getResourceACLs(RangerAccessRequest request);
    public void refreshPoliciesAndTags();
}

Plugin Services

Policy Engine

Policy evaluation engine that processes access requests against configured policies, supporting access control, data masking, and row filtering policies.

public interface RangerPolicyEngine {
    RangerAccessResult evaluatePolicies(RangerAccessRequest request, int policyType, RangerAccessResultProcessor resultProcessor);
    Collection<RangerAccessResult> evaluatePolicies(Collection<RangerAccessRequest> requests, int policyType, RangerAccessResultProcessor resultProcessor);
    RangerResourceACLs getResourceACLs(RangerAccessRequest request);
}

public class RangerPolicyEngineImpl implements RangerPolicyEngine {
    public RangerPolicyEngineImpl(ServicePolicies servicePolicies, RangerPluginContext pluginContext, RangerRoles roles);
}

Policy Engine

Admin Client

Client interface for communicating with Ranger Admin server to retrieve policies, roles, and service definitions, and to perform administrative operations.

public interface RangerAdminClient {
    void init(String serviceName, String appId, String configPropertyPrefix, Configuration config);
    ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception;
    RangerRoles getRolesIfUpdated(long lastKnownRoleVersion, long lastActivationTimeInMills) throws Exception;
    void grantAccess(GrantRevokeRequest request) throws Exception;
    void revokeAccess(GrantRevokeRequest request) throws Exception;
}

public class RangerAdminRESTClient extends AbstractRangerAdminClient {
    public void init(String serviceName, String appId, String propertyPrefix, Configuration config);
}

Admin Client

Policy Models

Rich domain models representing policies, service definitions, roles, and other security constructs with full serialization support.

public class RangerPolicy extends RangerBaseModelObject {
    public static final int POLICY_TYPE_ACCESS = 0;
    public static final int POLICY_TYPE_DATAMASK = 1;
    public static final int POLICY_TYPE_ROWFILTER = 2;
    
    public String getService();
    public String getName();
    public Integer getPolicyType();
    public Map<String, RangerPolicyResource> getResources();
    public List<RangerPolicyItem> getPolicyItems();
}

public class RangerServiceDef extends RangerBaseModelObject {
    public String getName();
    public List<RangerResourceDef> getResources();
    public List<RangerAccessTypeDef> getAccessTypes();
}

Policy Models

Context Enrichment

Pluggable context enrichment framework for enhancing access requests with additional attributes for policy evaluation.

public interface RangerContextEnricher {
    void init();
    void enrich(RangerAccessRequest request);
}

public abstract class RangerAbstractContextEnricher implements RangerContextEnricher {
    // Base implementation with common functionality
}

public class RangerTagEnricher extends RangerAbstractContextEnricher {
    // Tag-based context enrichment
}

Context Enrichment

Resource Matching

Flexible resource matching framework supporting various matching strategies including wildcards, regular expressions, and custom matchers.

public interface RangerResourceMatcher {
    void init();
    boolean isMatch(RangerAccessResource resource, Map<String, Object> evalContext);
    boolean isCompleteMatch(RangerAccessResource resource, Map<String, Object> evalContext);
}

public class RangerDefaultResourceMatcher extends RangerAbstractResourceMatcher {
    // Default wildcard-based matching
}

public class RangerPathResourceMatcher extends RangerAbstractResourceMatcher {
    // Path-specific matching with hierarchy support
}

Resource Matching

Authentication & Security

Kerberos authentication support and security utilities for secure communication and credential management.

public class SecureClientLogin {
    public static Subject loginUserFromKeytab(String user, String path) throws IOException;
    public static Subject loginUserWithPassword(String user, String password) throws IOException;
    public static boolean isKerberosCredentialExists(String principal, String keytabPath);
}

Authentication & Security

Types

Core Request/Response Types

public interface RangerAccessRequest {
    RangerAccessResource getResource();
    String getAccessType();
    String getUser();
    Set<String> getUserGroups();
    Set<String> getUserRoles();
    Date getAccessTime();
    String getClientIPAddress();
    Map<String, Object> getContext();
}

public class RangerAccessRequestImpl implements RangerAccessRequest {
    public RangerAccessRequestImpl();
    public RangerAccessRequestImpl(RangerAccessResource resource, String accessType, String user, Set<String> userGroups, Set<String> userRoles);
}

public interface RangerAccessResource {
    String getOwnerUser();
    boolean exists(String name);
    String getValue(String name);
    String[] getValues(String name);
    Set<String> getKeys();
    Map<String, Object> getAsMap();
}

public class RangerAccessResult {
    public String getServiceName();
    public RangerAccessRequest getAccessRequest();
    public boolean getIsAllowed();
    public boolean getIsAudited();
    public long getPolicyId();
    public String getReason();
}

Configuration Types

public class RangerPluginConfig extends RangerConfiguration {
    public RangerPluginConfig(String serviceType, String serviceName, String appId, String clusterName, String clusterType, PolicyRefresher policyRefresher);
    public String getServiceType();
    public String getServiceName();
    public String getAppId();
}

public class ServicePolicies {
    public String getServiceName();
    public Long getPolicyVersion();
    public List<RangerPolicy> getPolicies();
    public RangerServiceDef getServiceDef();
}

Grant/Revoke Types

public class GrantRevokeRequest {
    public String getGrantor();
    public Map<String, String> getResource();
    public Set<String> getUsers();
    public Set<String> getGroups();
    public Set<String> getAccessTypes();
    public Boolean getIsRecursive();
}

public class GrantRevokeRoleRequest {
    // Role-based grant/revoke operations
}