| <!--- |
| 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. |
| --> |
| |
| # Apache Ranger - Java client |
| |
| Java library for Apache Ranger. |
| |
| ## Installation |
| |
| #### Prerequisites |
| - Java 8 |
| - Maven 3.6.3 |
| |
| Verify installation of java using the below command. |
| |
| ``` |
| $ java -version |
| java version "1.8.0_281" |
| Java(TM) SE Runtime Environment (build 1.8.0_281-b09) |
| Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode) |
| ``` |
| Libraries |
| ``` |
| import org.apache.ranger.*; |
| import org.apache.ranger.plugin.model.*; |
| ``` |
| |
| Add the following dependency to pom.xml |
| ```xml |
| <dependency> |
| <groupId>org.apache.ranger</groupId> |
| <artifactId>ranger-intg</artifactId> |
| <version>3.0.0-SNAPSHOT</version> |
| <scope>compile</scope> |
| </dependency> |
| ``` |
| ## Usage |
| |
| ``` |
| mvn clean package |
| mvn install dependency:copy-dependencies |
| java -cp "target/<module name>-3.0.0-SNAPSHOT.jar:target/dependency/*" testRanger |
| ``` |
| |
| ```java |
| // testRanger |
| import java.util.*; |
| import org.apache.ranger.*; |
| import org.apache.ranger.plugin.model.*; |
| |
| public class testRanger { |
| |
| public static void main(String[] args) throws RangerServiceException { |
| // create a client to connect to Apache Ranger admin |
| String rangerUrl = "http://localhost:6080"; |
| String username = "admin"; |
| String password = "rangerR0cks!"; |
| |
| /* for kerberos authentication: |
| authType = "kerberos" |
| username = principal |
| password = path of the keytab file */ |
| |
| // For SSL enabled ranger admin use SSL config file (see: ranger-examples/sample-client/conf/ssl-client.xml) |
| RangerClient rangerClient = new RangerClient(rangerUrl, "simple", username, password, null); |
| String serviceDefName = "hive"; |
| String serviceName = "testHive"; |
| String policyName = "testPolicy"; |
| |
| /* |
| Create a new Service |
| */ |
| RangerService service = new RangerService(); |
| service.setType(serviceDefName); |
| service.setName(serviceName); |
| Map<String, String> config = new HashMap<>(); |
| config.put("username", "hive"); |
| config.put("password", "hive"); |
| config.put("jdbc.driverClassName", "org.apache.hive.jdbc.HiveDriver"); |
| config.put("jdbc.url", "jdbc:hive2://ranger-hadoop:10000"); |
| config.put("hadoop.security.authorization", "true"); |
| service.setConfigs(config); |
| RangerService createdService = rangerClient.createService(service); |
| System.out.println("New Service created with id: " + createdService.getId()); |
| |
| |
| /* |
| Create a new Policy |
| */ |
| Map<String, RangerPolicy.RangerPolicyResource> resource = new HashMap<>(); |
| resource.put("database", new RangerPolicy.RangerPolicyResource("test_db")); |
| resource.put("table", new RangerPolicy.RangerPolicyResource("test_table")); |
| resource.put("column", new RangerPolicy.RangerPolicyResource("*")); |
| RangerPolicy policy = new RangerPolicy(); |
| policy.setService(serviceName); |
| policy.setName(policyName); |
| policy.setResources(resource); |
| |
| RangerPolicy createdPolicy = rangerClient.createPolicy(policy); |
| System.out.println("New Policy created with id: " + createdPolicy.getId()); |
| |
| |
| /* |
| Delete a policy |
| */ |
| rangerClient.deletePolicy(serviceName, policyName); |
| System.out.println("Policy with name: " + policyName + " deleted successfully"); |
| |
| |
| /* |
| Delete a Service |
| */ |
| rangerClient.deleteService(serviceName); |
| System.out.println("Service with name: " + serviceName + " deleted successfully"); |
| |
| } |
| } |
| ``` |
| |
| For more examples, checkout `SampleClient` implementation in [ranger-examples](https://github.com/apache/ranger/blob/master/ranger-examples/sample-client/src/main/java/org/apache/ranger/examples/sampleclient/SampleClient.java) module. |