<?xml version="1.0"?>
<!--
  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.
-->
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
	<property>
		<name>xasecure.audit.is.enabled</name>
		<value>true</value>
	</property>	

    <!-- Solr audit provider configuration -->

	<property>
		<name>xasecure.audit.destination.solr</name>
		<value>false</value>
	</property>	

	<property>
		<name>xasecure.audit.destination.solr.urls</name>
		<value>NONE</value>
	</property>	
	
	<property>
		<name>xasecure.audit.destination.solr.zookeepers</name>
		<value></value>
	</property>	
	
	<property>
		<name>xasecure.audit.destination.solr.collection</name>
		<value>NONE</value>
	</property>

	<!-- HDFS audit provider configuration -->
	<property>
		<name>xasecure.audit.destination.hdfs</name>
		<value>false</value>
	</property>	

	<property>
		<name>xasecure.audit.destination.hdfs.dir</name>
		<value>hdfs://__REPLACE__NAME_NODE_HOST:8020/ranger/audit</value>
	</property>	
	
	<property>
		<name>xasecure.audit.destination.hdfs.subdir</name>
		<value>%app-type%/%time:yyyyMMdd%</value>
	</property>	
	
	<property>
		<name>xasecure.audit.destination.hdfs.filename.format</name>
		<value>%app-type%_ranger_audit_%hostname%.log</value>
	</property>	
	
	<property>
		<name>xasecure.audit.destination.hdfs.file.rollover.sec</name>
		<value>86400</value>
	</property>	

	<!-- Audit to HDFS on Azure Datastore (WASB) requires v3 style settings.  Comment the above and uncomment only the
	following to audit to Azure Blob Datastore via hdfs' WASB schema.

	NOTE: If you specify one audit destination in v3 style then other destinations, if any, must also be specified in v3 style
	====

	<property>
		<name>xasecure.audit.destination.hdfs</name>
		<value>enabled</value>
	</property>

	<property>
		<name>xasecure.audit.destination.hdfs.dir</name>
		<value>wasb://ranger-audit1@youraccount.blob.core.windows.net</value>
	</property>

	the following 3 correspond to the properties with similar name in core-site.xml, i.e.
	- fs.azure.account.key.youraccount.blob.core.windows.net => xasecure.audit.destination.hdfs.config.fs.azure.account.key.youraccount.blob.core.windows.net and
	- fs.azure.account.keyprovider.youraccount.blob.core.windows.net => xasecure.audit.destination.hdfs.config.fs.azure.account.keyprovider.youraccount.blob.core.windows.net,
	- fs.azure.shellkeyprovider.script => xasecure.audit.destination.hdfs.config.fs.azure.shellkeyprovider.script,

	<property>
		<name>xasecure.audit.destination.hdfs.config.fs.azure.account.key.youraccount.blob.core.windows.net</name>
		<value>YOUR ENCRYPTED ACCESS KEY</value>
	</property>

	<property>
		<name>xasecure.audit.destination.hdfs.config.fs.azure.account.keyprovider.youraccount.blob.core.windows.net</name>
		<value>org.apache.hadoop.fs.azure.ShellDecryptionKeyProvider</value>
	</property>

	<property>
		<name>xasecure.audit.destination.hdfs.config.fs.azure.shellkeyprovider.script</name>
		<value>/usr/lib/python2.7/dist-packages/hdinsight_common/decrypt.sh</value>
	</property>
	-->

	<!-- Log4j audit provider configuration -->
	<property>
		<name>xasecure.audit.destination.log4j</name>
		<value>false</value>
	</property>	

	<property>
		<name>xasecure.audit.destination.log4j.logger</name>
		<value></value>
	</property>	
	
</configuration>
