# Apache Ranger - Python client Python library for Apache Ranger. ## Installation Use the package manager [pip](https://pip.pypa.io/en/stable/) to install python client for Apache Ranger. ```bash > pip install apache-ranger ``` Verify if apache-ranger client is installed: ```bash > pip list Package Version ------------ --------- apache-ranger 0.0.3 ``` ## Usage ```python test_ranger.py``` ```python # test_ranger.py from apache_ranger.model.ranger_service import * from apache_ranger.client.ranger_client import * from apache_ranger.model.ranger_policy import * ## Step 1: create a client to connect to Apache Ranger admin ranger_url = 'http://localhost:6080' ranger_auth = ('admin', 'rangerR0cks!') # For Kerberos authentication # # from requests_kerberos import HTTPKerberosAuth # # ranger_auth = HTTPKerberosAuth() ranger = RangerClient(ranger_url, ranger_auth) # to disable SSL certificate validation (not recommended for production use!) # # ranger.session.verify = False ## Step 2: Let's create a service service = RangerService() service.name = 'test_hive' service.type = 'hive' service.configs = {'username':'hive', 'password':'hive', 'jdbc.driverClassName': 'org.apache.hive.jdbc.HiveDriver', 'jdbc.url': 'jdbc:hive2://ranger-hadoop:10000', 'hadoop.security.authorization': 'true'} print('Creating service: name=' + service.name) created_service = ranger.create_service(service) print(' created service: name=' + created_service.name + ', id=' + str(created_service.id)) ## Step 3: Let's create a policy policy = RangerPolicy() policy.service = service.name policy.name = 'test policy' policy.resources = { 'database': RangerPolicyResource({ 'values': ['test_db'] }), 'table': RangerPolicyResource({ 'values': ['test_tbl'] }), 'column': RangerPolicyResource({ 'values': ['*'] }) } allowItem1 = RangerPolicyItem() allowItem1.users = [ 'admin' ] allowItem1.accesses = [ RangerPolicyItemAccess({ 'type': 'create' }), RangerPolicyItemAccess({ 'type': 'alter' }) ] denyItem1 = RangerPolicyItem() denyItem1.users = [ 'admin' ] denyItem1.accesses = [ RangerPolicyItemAccess({ 'type': 'drop' }) ] policy.policyItems = [ allowItem1 ] policy.denyPolicyItems = [ denyItem1 ] print('Creating policy: name=' + policy.name) created_policy = ranger.create_policy(policy) print(' created policy: name=' + created_policy.name + ', id=' + str(created_policy.id)) ## Step 4: Delete policy and service created above print('Deleting policy: id=' + str(created_policy.id)) ranger.delete_policy_by_id(created_policy.id) print(' deleted policy: id=' + str(created_policy.id)) print('Deleting service: id=' + str(created_service.id)) ranger.delete_service_by_id(created_service.id) print(' deleted service: id=' + str(created_service.id)) ``` For more examples, checkout `sample-client` python project in [ranger-examples](https://github.com/apache/ranger/blob/master/ranger-examples/sample-client/src/main/python/sample_client.py) module.