NIFIREG-186: Adding Ranger authorizer

- Ranger Authorizer is deployed as Registry extension.
- Added /config REST endpoint to expose Registry configuration for UI to
determine if user, group and policies can be edited.
- Added 'include-ranger' maven build profile and refactored project
structure to control ranger extension build.
- Added README.md to illustrate how to use this extension.
- Added default configuration files.
- Remove javax.ws.rs package in jersey-bundle jar to avoid rs version conflict.
- Added example conf to audit to Kerberized Solr.
- Updated hadoop version to 3.0.0
- Added ExtensionCloseable to use extension class loader when
  configuring authorizer. Without this, Hadoop Configuration class uses
  WebApp class loader that is set to current thread context class loader
  which does not have extension classes.
- Refactored anonymous inner classes at AuthorizerFactory to expose
  underlying authorizer instance, to use its extension class loader.
- Confirmed NiFi Registry can:
  - download policies from Kerbelized Ranger
  - send audit logs to Kerbelized Solr
  - send audit logs to Kerbelized HDFS
- Refactored project structures and updated L&N.

This closes #131.

Signed-off-by: Kevin Doran <kdoran@apache.org>
42 files changed
tree: 28b2d324ed85928e9041d1f6ebe9bd0807e013bd
  1. nifi-registry-assembly/
  2. nifi-registry-bootstrap/
  3. nifi-registry-client/
  4. nifi-registry-data-model/
  5. nifi-registry-docker/
  6. nifi-registry-docs/
  7. nifi-registry-extensions/
  8. nifi-registry-flow-diff/
  9. nifi-registry-framework/
  10. nifi-registry-jetty/
  11. nifi-registry-properties/
  12. nifi-registry-provider-api/
  13. nifi-registry-resources/
  14. nifi-registry-runtime/
  15. nifi-registry-security-api/
  16. nifi-registry-security-utils/
  17. nifi-registry-utils/
  18. nifi-registry-web-api/
  19. nifi-registry-web-docs/
  20. nifi-registry-web-ui/
  21. .gitignore
  22. .travis.yml
  23. build-and-run.sh
  24. LICENSE
  25. NOTICE
  26. pom.xml
  27. README.md
  28. stop.sh
README.md

Apache NiFi Registry Build Status

Registry—a subproject of Apache NiFi—is a complementary application that provides a central location for storage and management of shared resources across one or more instances of NiFi and/or MiNiFi.

Table of Contents

Getting Started

Requirements

  • Java 1.8 (above 1.8.0_45)
  • Maven 3.1.0, or newer
  • Recent git client
  1. Clone the repo

     git clone https://git-wip-us.apache.org/repos/asf/nifi-registry.git
     git checkout master
    
  2. Build the project

     cd nifi-registry
     mvn clean install
    

    If you wish to enable style and license checks, specify the contrib-check profile:

     mvn clean install -Pcontrib-check
    

    If you wish to run integration tests and contrib-check, specify both profiles:

     mvn clean install -Pcontrib-check,integration-tests
    
  3. Start the application

     cd nifi-registry-assembly/target/nifi-registry-<VERSION>-bin/nifi-registry-<VERSION>/
     ./bin/nifi-registry.sh start
    

    Note that the application web server can take a while to load before it is accessible.

  4. Accessing the application web UI

    With the default settings, the application UI will be available at http://localhost:18080/nifi-registry

  5. Accessing the application REST API

    If you wish to test against the application REST API, you can access the REST API directly. With the default settings, the base URL of the REST API will be at http://localhost:18080/nifi-registry-api. A UI for testing the REST API will be available at http://localhost:18080/nifi-registry-api/swagger/ui.html

  6. Accessing the application logs

    Logs will be available in logs/nifi-registry-app.log

License

Except as otherwise noted this software is licensed under the Apache License, Version 2.0

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