Menu

Ranger HIVE Plugin Configure

Ranger Hive plugin runs inside Hiveserver2's JVM

Show Source Code
module.exports = (service) ->
  options = service.options

Identities

Show Source Code
  options.group = merge {}, service.deps.ranger_admin.options.group, options.group or {}
  options.user = merge {}, service.deps.ranger_admin.options.user, options.user or {}
  options.hive_user = service.deps.hive_server2.options.user
  options.hive_group = service.deps.hive_server2.options.group
  options.hdfs_krb5_user = service.deps.hadoop_core.options.hdfs.krb5_user

Kerberos

Show Source Code
  options.krb5 ?= {}
  options.krb5.enabled ?= service.deps.hadoop_core.options.core_site['hadoop.security.authentication'] is 'kerberos'
  options.krb5.realm ?= service.deps.krb5_client.options.etc_krb5_conf?.libdefaults?.default_realm
  # Admin Information
  options.krb5.admin = service.deps.krb5_client.options.admin[options.krb5.realm]

Access

Show Source Code
  options.ranger_admin ?= service.deps.ranger_admin.options.admin
  options.hdfs_install ?= service.deps.ranger_hdfs[0].options.install if service.deps.ranger_hdfs

Plugin User

Show Source Code
  options.plugin_user =
    "name": options.hive_user.name
    "firstName": ''
    "lastName": ''
    "emailAddress": ''
    'userSource': 1
    'userRoleList': ['ROLE_USER']
    'groups': []
    'status': 1

Environment

Show Source Code
  # Layout
  options.conf_dir ?= service.deps.hive_server2.options.conf_dir

Configuration

Show Source Code
  options.install ?= {}
  options.install['PYTHON_COMMAND_INVOKER'] ?= 'python'
  # Should Hive GRANT/REVOKE update XA policies?
  options.install['UPDATE_XAPOLICIES_ON_GRANT_REVOKE'] ?= 'true'
  options.install['CUSTOM_USER'] ?= "#{options.user.name}"
  options.install['CUSTOM_GROUP'] ?= "#{options.group.name}"

SSL

Used only if SSL is enabled between Policy Admin Tool and Plugin. The path to keystore is derived from Hive Server2. The path to the truststore is derived from Hadoop Core.

Show Source Code
  if service.deps.ranger_admin.options.site['ranger.service.https.attrib.ssl.enabled'] is 'true'
    options.install['SSL_KEYSTORE_FILE_PATH'] ?= service.deps.hive_server2.options.hive_site['hive.server2.keystore.path']
    options.install['SSL_KEYSTORE_PASSWORD'] ?= service.deps.hive_server2.options.hive_site['hive.server2.keystore.password']
    options.install['SSL_TRUSTSTORE_FILE_PATH'] ?= service.deps.hadoop_core.options.ssl_client['ssl.client.truststore.location']
    options.install['SSL_TRUSTSTORE_PASSWORD'] ?= service.deps.hadoop_core.options.ssl_client['ssl.client.truststore.password']

##Policy Admin Tool

The repository name should match the reposity name in web ui.

Show Source Code
  # Build Hive Server2 URL
  
  port = if service.deps.hive_server2.options.hive_site['hive.server2.transport.mode'] is 'http'
  then service.deps.hive_server2.options.hive_site['hive.server2.thrift.http.port']
  else service.deps.hive_server2.options.hive_site['hive.server2.thrift.port']
  httpPath = service.deps.hive_server2.options.hive_site['hive.server2.thrift.http.path']
  hive_url = 'jdbc:hive2://'
  hive_url += "#{service.node.fqdn}:#{port}/"
  if service.deps.hive_server2.options.hive_site['hive.server2.authentication'] is 'KERBEROS'
    hive_url += ";principal=#{service.deps.hive_server2.options.hive_site['hive.server2.authentication.kerberos.principal']}"
  if service.deps.hive_server2.options.hive_site['hive.server2.use.SSL'] is 'true'
    hive_url += ";ssl=true"
    hive_url += ";sslTrustStore=#{service.deps.hadoop_core.options.ssl_client['ssl.client.truststore.location']}"
    hive_url += ";trustStorePassword=#{service.deps.hadoop_core.options.ssl_client['ssl.client.truststore.password']}"
  if service.deps.hive_server2.options.hive_site['hive.server2.transport.mode'] is 'http'
    hive_url += ";transportMode=#{service.deps.hive_server2.options.hive_site['hive.server2.transport.mode']}"
    hive_url += ";httpPath=#{httpPath}"

Admin properties

Show Source Code
  options.install['POLICY_MGR_URL'] ?= service.deps.ranger_admin.options.install['policymgr_external_url']
  options.install['REPOSITORY_NAME'] ?= 'hadoop-ryba-hive'

Service Definition

Show Source Code
  options.service_repo ?=
    'name': options.install['REPOSITORY_NAME']
    'description': 'Hive Repo'
    'type': 'hive'
    'isEnabled': true
    'configs':
      # 'username': 'ranger_plugin_hbase'
      # 'password': 'RangerPluginHive123!'
      'username': service.deps.ranger_admin.options.plugins.principal
      'password': service.deps.ranger_admin.options.plugins.password
      'jdbc.driverClassName': 'org.apache.hive.jdbc.HiveDriver'
      'jdbc.url': "#{hive_url}"
      "commonNameForCertificate": ''
      'policy.download.auth.users': "#{service.deps.hive_server2.options.user.name}" #from ranger 0.6
      'tag.download.auth.users': "#{service.deps.hive_server2.options.user.name}"

Audit

HDFS storage

Show Source Code
  options.install['XAAUDIT.HDFS.IS_ENABLED'] ?= 'true'
  if options.install['XAAUDIT.HDFS.IS_ENABLED'] is 'true'
    # migration: lucasbak 11102017
    # honored but not used by plugin
    # options.install['XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY'] ?= "#{service.deps.ranger_admin.options.conf_dir}/%app-type%/audit"
    # options.install['XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY'] ?= "#{service.deps.ranger_admin.options.conf_dir}/%app-type%/archive"
    options.install['XAAUDIT.HDFS.HDFS_DIR'] ?= "#{service.deps.hdfs_client.options.core_site['fs.defaultFS']}/#{options.user.name}/audit"
    options.install['XAAUDIT.HDFS.ENABLE'] ?= 'true'
    options.install['XAAUDIT.HDFS.DESTINATION_DIRECTORY'] ?= "#{service.deps.hdfs_client.options.core_site['fs.defaultFS']}/#{options.user.name}/audit/%app-type%/%time:yyyyMMdd%"
    options.install['XAAUDIT.HDFS.DESTINATION_FILE'] ?= '%hostname%-audit.log'
    options.install['XAAUDIT.HDFS.FILE_SPOOL_DIR'] ?= "#{service.deps.hive_server2.options.log_dir}/audit/hdfs/spool"
    options.install['XAAUDIT.HDFS.DESTINATION_FLUSH_INTERVAL_SECONDS'] ?= '900'
    options.install['XAAUDIT.HDFS.DESTINATION_ROLLOVER_INTERVAL_SECONDS'] ?= '86400'
    options.install['XAAUDIT.HDFS.DESTINATION _OPEN_RETRY_INTERVAL_SECONDS'] ?= '60'
    options.install['XAAUDIT.HDFS.LOCAL_BUFFER_FILE'] ?= '%time:yyyyMMdd-HHmm.ss%.log'
    options.install['XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS'] ?= '60'
    options.install['XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS'] ?= '600'
    options.install['XAAUDIT.HDFS.LOCAL_ARCHIVE _MAX_FILE_COUNT'] ?= '5'

HDFS Policy

Show Source Code
  if options.install['XAAUDIT.HDFS.IS_ENABLED'] is 'true'
    options.policy_hdfs_audit ?=
      'name': "hive-ranger-plugin-audit"
      'service': "#{options.hdfs_install['REPOSITORY_NAME']}"
      'repositoryType':"hdfs"
      'description': 'Hive Ranger Plugin audit log policy'
      'isEnabled': true
      'isAuditEnabled': true
      'resources':
        'path':
          'isRecursive': 'true'
          'values': ['/ranger/audit/hiveServer2']
          'isExcludes': false
      'policyItems': [
        'users': ["#{options.hive_user.name}"]
        'groups': []
        'delegateAdmin': true
        'accesses': [
            "isAllowed": true
            "type": "read"
        ,
            "isAllowed": true
            "type": "write"
        ,
            "isAllowed": true
            "type": "execute"
        ]
        'conditions': []
      ]

Solr storage

Show Source Code
  if service.deps.ranger_admin.options.install['audit_store'] is 'solr'
    options.audit ?= {}
    options.install['XAAUDIT.SOLR.IS_ENABLED'] ?= 'true'
    options.install['XAAUDIT.SOLR.ENABLE'] ?= 'true'
    options.install['XAAUDIT.SOLR.URL'] ?= service.deps.ranger_admin.options.install['audit_solr_urls']
    options.install['XAAUDIT.SOLR.USER'] ?= service.deps.ranger_admin.options.install['audit_solr_user']
    options.install['XAAUDIT.SOLR.ZOOKEEPER'] ?= service.deps.ranger_admin.options.install['audit_solr_zookeepers']
    options.install['XAAUDIT.SOLR.PASSWORD'] ?= service.deps.ranger_admin.options.install['audit_solr_password']
    options.install['XAAUDIT.SOLR.FILE_SPOOL_DIR'] ?= "#{service.deps.hive_server2.options.log_dir}/audit/solr/spool"
    options.audit['xasecure.audit.destination.solr.force.use.inmemory.jaas.config'] ?= 'true'
    options.audit['xasecure.audit.jaas.inmemory.loginModuleName'] ?= 'com.sun.security.auth.module.Krb5LoginModule'
    options.audit['xasecure.audit.jaas.inmemory.loginModuleControlFlag'] ?= 'required'
    options.audit['xasecure.audit.jaas.inmemory.Client.option.useKeyTab'] ?= 'true'
    options.audit['xasecure.audit.jaas.inmemory.Client.option.debug'] ?= 'true'
    options.audit['xasecure.audit.jaas.inmemory.Client.option.doNotPrompt'] ?= 'yes'
    options.audit['xasecure.audit.jaas.inmemory.Client.option.storeKey'] ?= 'yes'
    options.audit['xasecure.audit.jaas.inmemory.Client.option.serviceName'] ?= 'solr'
    options.audit['xasecure.audit.jaas.inmemory.Client.option.principal'] = service.deps.hive_server2.options.hive_site['hive.server2.authentication.kerberos.principal'].replace '_HOST', service.node.fqdn
    options.audit['xasecure.audit.jaas.inmemory.Client.option.keyTab'] ?= service.deps.hive_server2.options.hive_site['hive.server2.authentication.kerberos.keytab']

Database storage

Show Source Code
  #Deprecated
  options.install['XAAUDIT.DB.IS_ENABLED'] ?= 'false'
  if options.install['XAAUDIT.DB.IS_ENABLED'] is 'true'
    options.install['XAAUDIT.DB.FLAVOUR'] ?= 'MYSQL'
    switch options.install['XAAUDIT.DB.FLAVOUR']
      when 'MYSQL'
        options.install['SQL_CONNECTOR_JAR'] ?= '/usr/share/java/mysql-connector-java.jar'
        options.install['XAAUDIT.DB.HOSTNAME'] ?= service.deps.ranger_admin.options.install['db_host']
        options.install['XAAUDIT.DB.DATABASE_NAME'] ?= service.deps.ranger_admin.options.install['audit_db_name']
        options.install['XAAUDIT.DB.USER_NAME'] ?= service.deps.ranger_admin.options.install['audit_db_user']
        options.install['XAAUDIT.DB.PASSWORD'] ?= service.deps.ranger_admin.options.install['audit_db_password']
      when 'ORACLE'
        throw Error 'Ryba does not support ORACLE Based Ranger Installation'
      else
        throw Error "Apache Ranger does not support chosen DB FLAVOUR"
  else
      options.install['XAAUDIT.DB.HOSTNAME'] ?= 'NONE'
      options.install['XAAUDIT.DB.DATABASE_NAME'] ?= 'NONE'
      options.install['XAAUDIT.DB.USER_NAME'] ?= 'NONE'
      options.install['XAAUDIT.DB.PASSWORD'] ?= 'NONE'

Wait

Show Source Code
  options.wait_ranger_admin = service.deps.ranger_admin.options.wait

Enrich configuration

Show Source Code
  # Hive HCatalog
  for srv in service.deps.hive_hcatalog
    srv.options.warehouse_mode = '0000'
  # Hive Server2
  service.deps.hive_server2.options.hive_site['hive.security.authorization.manager'] = 'org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory'
  service.deps.hive_server2.options.hive_site['hive.security.authenticator.manager'] = 'org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator'
  service.deps.hive_server2.options.opts ?= ''
  service.deps.hive_server2.options.opts += " -Djavax.net.ssl.trustStore=#{service.deps.hadoop_core.options.ssl_client['ssl.client.truststore.location']} "
  service.deps.hive_server2.options.opts += " -Djavax.net.ssl.trustStorePassword=#{service.deps.hadoop_core.options.ssl_client['ssl.client.truststore.password']}"

Dependencies

Show Source Code
{merge} = require '@nikitajs/core/lib/misc'