<?xml version="1.0" encoding="ISO-8859-1"?>

<!--
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.
-->

<faqs xmlns="http://maven.apache.org/FML/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/FML/1.0 http://maven.apache.org/xsd/fml-1.0.xsd" id="FAQ" title="Frequently Asked Questions">
  <part id="General">
    <title>General</title>
    <faq id="What does Apache Ranger offer for Hadoop">
      <question>What does Apache Ranger offer for Apache Hadoop and related components?</question>
      <answer>
        <p>
            Apache Ranger offers a centralized security framework to manage fine grained access control over Hadoop and related components (Apache Hive, HBase etc.). Using the Apache Ranger administration console, users can easily manage policies around accessing a resource (file, folder, database, table, column etc) for a particular set of users and/or groups, and enforce the policies within Hadoop. They also can enable audit tracking and policy analytics for deeper control of the environment. Apache Ranger also provides ability to delegate administration of certain data to other group owners, with an aim of decentralizing data ownership
          </p>
    </answer>
    </faq>
    <faq id="What components does Apache Ranger support today">
    <question>What projects does Apache Ranger support today</question>
     <answer>
         <p>
             Apache Ranger supports fine grained authorization and auditing for following Apache projects:
         </p>
         <ul>
         <li>Apache Hadoop</li>
         <li>Apache Hive</li>
         <li>Apache HBase</li>
         <li>Apache Storm</li>
         <li>Apache Knox</li>
         <li>Apache Solr</li>
         <li>Apache Kafka</li>
         <li>YARN</li>
     </ul>
     </answer>
    </faq>
    
    <faq id="How does it work over Hadoop and related components">
      <question>How does it work over Hadoop and related components</question>
      <answer>
        <p>
        Apache Ranger at the core has a centralized web application, which consists of the policy administration, audit and reporting modules. Authorized users will be able to manage their security policies using the web tool or using REST APIs.  These security policies are enforced within Hadoop ecosystem using lightweight Ranger Java plugins, which run as part of the same process as the namenode (HDFS), Hive2Server(Hive), HBase server (Hbase), Nimbus server (Storm) and Knox server (Knox) respectively. Thus there is no additional OS level process to manage.
        </p>
      </answer>
    </faq>
    <faq id="Is there a single point of failure?">
      <question>Is there a single point of failure?</question>
      <answer>
        <p>
           No, Apache Ranger is not a Single Point of Failure. Apache Ranger's plugins run within the same process as the component, e.g. NameNode for HDFS.  These agents pull the policy-changes using REST API at a configured regular interval (e.g.: 30 second). The plugin is able to function even if the policy server is temporarily down and will provide the authorization enforcement. Also, the policy manager web application can be hosted on a HA infrastructure. (with multiple apache server, multiple tomcat servers and a standby database server w/o replication setup).
        </p>
    </answer>
    </faq>
  </part>
  
  <part id="Apache Hadoop">
    <title>Apache Hadoop</title>
    <faq id="How does Apache Ranger provide authorization in Apache Hadoop">
      <question>How does Apache Ranger provide authorization in Apache Hadoop?</question>
      <answer>
        <p>
          Apache Ranger provides a plugin for Apache Hadoop, specifically for the NameNode as part of the authorization method. The Apache Ranger plugin is in the path of the user request and is able to make a decision on whether the user request shoud be authorized. The plugin also collects access request details required for auditing
        </p>
        <p>
            Apache Ranger will enforce the security policies available in the policy database. Users can create a security policy for a specific set of resources (one or more folders and/or files) and assign specific set of permissions (e.g: read, write, execute) to a specific set of users and/or groups. The security policies are stored in the policy manager and are independent from native permissions.
            </p>
    </answer>
        </faq>
      <faq id="Does Apache Ranger emulate native unix level permissions?">
          <question>Does Apache Ranger emulated permissions at the unix level for Apache Hadoop?</question>
          <answer>
              <p>
                 No, Apache Ranger enforces authorization based on policies entered in the policy administration tool and does not emulate the permissions at the unix level.  Apache Ranger does provide a default feature to validate access using native hadoop file-level permissions if the Ranger policies do not cover the requested access
              </p>
              </answer>
          </faq>
  
  <faq id="Do we need an Apache Ranger plugin in each datanode?">
      <question>Does the Apache Ranger plugin need to be implemented in each datanode ?</question>
      <answer>
          <p>
              No, the Apache Ranger plugin for Hadoop is only needed in the NameNode.
              
          </p>
      </answer>
  </faq>

</part>
    <part id="Apache Hive">
        <title>Apache Hive</title>
        <faq id="How does Apache Ranger provide authorization in Apache Hive">
            <question>How does Apache Ranger provide authorization in Apache Hive?</question>
            <answer>
                <p>
                    The Apache Ranger plugin is enabled in Hiveserver2 as part of the authorization
                </p>
            </answer>
            </faq>
        
        <faq id="How does Apache Ranger authorization compare to SQL standard authorization">
            <question>How does Apache Ranger authorization compare to SQL standard authorization?</question>
            <answer>
                <p>
                    Apache Hive currently provides two methods of authorization, Storage based authorization and SQL standard authorization, which was introduced in Hive 13. SQL standard authorization provides grant/revoke functionality at database, table level. The commands would be familiar to a DBA admin. Apache Ranger provides a centralized authorization interface for Hive and provides more granular access control at column level through the Hive plugin. Ranger also provides ability to use wildcard in resource names within the policy.
                </p>
            </answer>
        </faq>
        
</part>

<part id="Apache HBase">
    <title>Apache HBase</title>
    <faq id="How does Apache Ranger provide authorization in Apache HBase">
        <question>How does Apache Ranger provide authorization in Apache Hbase?</question>
        <answer>
            <p>
                Apache Ranger provides a coprocessor which is added to HBase, and includes the logic to perform authorization check and collect audit data.
            </p>
        </answer>
    </faq>
</part>
<part id="Apache Knox">
    <title>Apache Knox</title>
    <faq id="How does Apache Ranger provide authorization in Apache Knox">
        <question>How does Apache Ranger provide authorization in Apache Knox?</question>
        <answer>
            <p>
                Apache Knox currently provides a service level authorization for users/groups. These acls are stored locally in a file. Apache Ranger has built a plugin for Knox to enable administration of these policies through central UI/REST APIs as well as detailed auditing of Knox user access.
            </p>
        </answer>
    </faq>
</part>
<part id="Apache Kafka">
    <title>Apache Kafka</title>
    <faq id="How does Apache Ranger provide authorization in Apache Kafka">
        <question>How does Apache Ranger provide authorization in Apache Kafka?</question>
        <answer>
            <p>
                Security was introduced in Apache Kafka 0.9. Apache Ranger can manage the Kafka ACLs per topic. Users can use Ranger to control who can write to a topic or read from a topic. In addition to providing policies by users and groups, Apache Ranger also supports IP address based permissions to publish or subscribe.
            </p>
        </answer>
    </faq>
</part>
<part id="Apache Solr">
    <title>Apache Solr</title>
    <faq id="How does Apache Ranger provide authorization in Apache Solr">
        <question>How does Apache Ranger provide authorization in Apache Solr?</question>
        <answer>
            <p>
                Similar to Apache Kafka, security in Apache Solr was introduced recently by the community. Through Apache Ranger, users can build policies for users/groups to query a particular collections in Solr. Efforts are underway in Solr community to provide more granular index level permissions.
            </p>
        </answer>
    </faq>
</part>
<part id="Yarn">
    <title>YARN</title>
    <faq id="How does Apache Ranger provide authorization in YARN">
        <question>How does Apache Ranger provide authorization in YARN?</question>
        <answer>
            <p>
               YARN is widely used in the Hadoop ecosystem as resource management layer for applications. Adminstrators can use YARN to setup queues with a certain capacity and applications can be given permissions to write to a certain queue. Using Apache Ranger, administrators can manage the policies for who can write to a particular queue
            </p>
        </answer>
    </faq>
</part>
</faqs>
