# Apache Ranger™ e Ranger KMS

Este manual é um guia de instalação do Apache Ranger™ e Ranger KMS.

{% hint style="warning" %}
Este procedimento se aplica ao ambiente GHDP.
{% endhint %}

## Pré-requisitos

Instale os pré-requisitos para o procedimento de [build do Ranger](#builddoranger).

### Maven

1. Faça o download da última versão do Maven em [Downloading Apache Maven](https://maven.apache.org/download.cgi) ou:

   ```sh
   cd /usr/local
   wget https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz
   tar -xvf apache-maven-<Version>-bin.tar.gz
   ```
2. Edite o arquivo que carrega as variáveis de ambiente do GHDP:

   ```sh
   vim /etc/profile.d/hadoop_setup.sh
   ```

   ```sh
   ...
   # MAVEN (to Ranger)
   export M2_VERSION=$(ls -A /usr/local/ | grep apache-maven- | grep -v .gz | awk -F '-' '{print $3}')
   export M2_HOME=/usr/local/apache-maven-$M2_VERSION
   export M2=$M2_HOME/bin
   ...
   ```
3. Verifique se a instalação ocorreu corretamente:

   ```sh
   mvn -version
   ```

### Outros requisitos

Instale os outros requisitos necessários:

```sh
yum -y install git
yum -y install gcc
yum -y install g++
yum install bzip2 -y
yum -y install java-1.8.0-openjdk-devel
yum -y install python3
```

## Build do Ranger

1. Baixe o *source* do Ranger mais atualizado que se adeque à versão do seu OS e Java, no [site oficial do Ranger](https://ranger.apache.org/download.html) ou:

   ```sh
   wget https://dlcdn.apache.org/ranger/2.3.0/apache-ranger-2.3.0.tar.gz
   tar -xvf apache-ranger-2.3.0.tar.gz
   cd ./apache-ranger-2.3.0
   ```
2. Faça o *build* do Ranger utilizando o Maven:

   ```sh
   mvn clean compile package install
   ```
3. Caso ocorra erro de acesso inseguro, por conta de certificado vencido em algum link de repositório, execute o *build* da seguinte forma:

   ```sh
   mvn clean compile package install -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
   ```
4. Finalize o procedimento de *build* com o seguinte comando:

   ```sh
   mvn eclipse:eclipse
   ```
5. Ao final, será gerada uma pasta chamada `target` com todos os componentes do Ranger.

   ```sh
   cd ./target
   ls -l

   total 1328820
   drwxr-xr-x. 2 root root      4096 Dec 15 14:34 antrun
   -rw-r--r--. 1 root root        87 Dec 15 14:34 checkstyle-cachefile
   -rw-r--r--. 1 root root      9216 Dec 15 14:34 checkstyle-checker.xml
   -rw-r--r--. 1 root root     20369 Dec 15 14:34 checkstyle-header.txt
   -rw-r--r--. 1 root root        81 Dec 15 14:34 checkstyle-result.xml
   -rw-r--r--. 1 root root      1144 Dec 15 14:34 checkstyle-suppressions.xml
   drwxr-xr-x. 3 root root      4096 Dec 15 14:34 maven-shared-archive-resources
   -rw-r--r--. 1 root root 518758611 Dec 15 14:34 ranger-2.3.0-admin.tar.gz
   -rw-r--r--. 1 root root  41566842 Dec 15 14:34 ranger-2.3.0-atlas-plugin.tar.gz
   -rw-r--r--. 1 root root  36041635 Dec 15 14:34 ranger-2.3.0-elasticsearch-plugin.tar.gz
   -rw-r--r--. 1 root root  36975553 Dec 15 14:34 ranger-2.3.0-hbase-plugin.tar.gz
   -rw-r--r--. 1 root root  35537921 Dec 15 14:34 ranger-2.3.0-hdfs-plugin.tar.gz
   -rw-r--r--. 1 root root  35327622 Dec 15 14:34 ranger-2.3.0-hive-plugin.tar.gz
   -rw-r--r--. 1 root root  54580246 Dec 15 14:34 ranger-2.3.0-kafka-plugin.tar.gz
   drwxr-xr-x. 7 root root      4096 Dec 15 14:34 ranger-2.3.0-kms
   -rw-r--r--. 1 root root 195191513 Dec 15 14:34 ranger-2.3.0-kms.tar.gz
   -rw-r--r--. 1 root root  49243221 Dec 15 14:34 ranger-2.3.0-knox-plugin.tar.gz
   -rw-r--r--. 1 root root  34477047 Dec 15 14:34 ranger-2.3.0-kylin-plugin.tar.gz
   -rw-r--r--. 1 root root     34007 Dec 15 14:34 ranger-2.3.0-migration-util.tar.gz
   -rw-r--r--. 1 root root  41233187 Dec 15 14:34 ranger-2.3.0-ozone-plugin.tar.gz
   -rw-r--r--. 1 root root  55205632 Dec 15 14:34 ranger-2.3.0-presto-plugin.tar.gz
   -rw-r--r--. 1 root root  15803444 Dec 15 14:34 ranger-2.3.0-ranger-tools.tar.gz
   -rw-r--r--. 1 root root    905882 Dec 15 14:34 ranger-2.3.0-schema-registry-plugin.jar
   -rw-r--r--. 1 root root     37302 Dec 15 14:34 ranger-2.3.0-solr_audit_conf.tar.gz
   -rw-r--r--. 1 root root     40595 Dec 15 14:34 ranger-2.3.0-solr_audit_conf.zip
   -rw-r--r--. 1 root root  36130187 Dec 15 14:34 ranger-2.3.0-solr-plugin.tar.gz
   -rw-r--r--. 1 root root  34715214 Dec 15 14:34 ranger-2.3.0-sqoop-plugin.tar.gz
   -rw-r--r--. 1 root root   6315989 Dec 15 14:34 ranger-2.3.0-src.tar.gz
   -rw-r--r--. 1 root root  49575156 Dec 15 14:34 ranger-2.3.0-storm-plugin.tar.gz
   -rw-r--r--. 1 root root  30112906 Dec 15 14:34 ranger-2.3.0-tagsync.tar.gz
   -rw-r--r--. 1 root root  19205167 Dec 15 14:34 ranger-2.3.0-usersync.tar.gz
   -rw-r--r--. 1 root root  33381584 Dec 15 14:34 ranger-2.3.0-yarn-plugin.tar.gz
   -rw-r--r--. 1 root root    196038 Dec 15 14:34 rat.txt
   -rw-r--r--. 1 root root         5 Dec 15 14:34 version
   ```

## Instalação do Solr

{% hint style="info" %}
Consulte no [Site Oficial do Solr](https://solr.apache.org/downloads.html) qual a melhor versão do Solr para seu sistema.
{% endhint %}

1. Acesse a pasta de *build* do Ranger, conforme efetuado no [tópico anterior](#builddoranger).\ <br>
2. Dentro dessa pasta, acesse a pasta do instalador do Solr, em que ele será pré-configurado para uso do Ranger:

   ```sh
   cd ~/apache-ranger-2.3.0
   cd ./security-admin/contrib/solr_for_audit_setup/
   ```
3. Crie a pasta do Solr conforme a versão escolhida:

   ```sh
   mkdir -p /usr/gdp/hadoop/solr/8.11.2/
   ```
4. Edite o arquivo `install.properties`:

   ```sh
   vim install.properties
   ```

   ```properties
   ...
   SOLR_INSTALL=true
   SOLR_DOWNLOAD_URL=https://dlcdn.apache.org/lucene/solr/8.11.2/solr-8.11.2.tgz
   SOLR_LOG_FOLDER=/var/log/hadoop/solr/ranger_audits
   ...

   :wq
   ```

   ```sh
   sed -i 's/\/opt\/solr/\/usr\/gdp\/hadoop\/solr\/8.11.2/g' install.properties
   ```
5. Execute o script `setup.sh` e verifique os procedimentos de *start* conforme indicado pelo *log* de instalação:

   ```sh
   chmod +x setup.sh
   ./setup.sh

   less /usr/gdp/hadoop/solr/8.11.2/ranger_audit_server/install_notes.txt
   ```
6. Inicie o Solr:

   ```sh
   /usr/gdp/hadoop/solr/8.11.2/ranger_audit_server/scripts/start_solr.sh
   ```

## Instalação e configuração do Ranger Admin

1. Crie a pasta do Ranger Admin:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-admin
   ```
2. Acesse a pasta `target`, gerada no procedimento de [build](#builddoranger), e descompacte o arquivo `ranger-2.3.0-admin.tar.gz`:

   ```sh
   cd ./apache-ranger-2.3.0/target
   tar -xvf ranger-2.3.0-admin.tar.gz
   ```
3. Copie todos os arquivos dentro da pasta descompactada para a pasta `ranger-admin`.

   ```sh
   cd ranger-2.3.0-admin
   cp -R * /usr/gdp/hadoop/ranger/2.3.0/ranger-admin/
   ```
4. No banco de dados, crie o usuário `rangerdba` da seguinte forma:

   ```sh
   mysql -uroot -p
   ```

   ```sql
   SET GLOBAL validate_password_policy=LOW;

   CREATE USER 'rangerdba'@'localhost' IDENTIFIED BY 'rangerdba';

   GRANT ALL PRIVILEGES ON *.* TO 'rangerdba'@'localhost';

   CREATE USER 'rangerdba'@'%' IDENTIFIED BY 'rangerdba';

   GRANT ALL PRIVILEGES ON *.* TO 'rangerdba'@'%';

   GRANT ALL PRIVILEGES ON *.* TO 'rangerdba'@'localhost' WITH GRANT OPTION;

   GRANT ALL PRIVILEGES ON *.* TO 'rangerdba'@'%' WITH GRANT OPTION;

   FLUSH PRIVILEGES;
   ```
5. Caso não esteja instalado, instale o `mysql-connector-java` e verifique se o arquivo `mysql-connector-java.jar` está na pasta correta:

   ```sh
   yum install mysql-connector-java
   ls /usr/share/java/mysql-connector-java.jar
   ```
6. Crie a pasta de *logs* para o Ranger Admin:

   ```sh
   mkdir -p /var/log/hadoop/ranger/ranger-admin
   ```
7. Na pasta do Ranger Admin, edit o arquivo `install.properties`:

   ```sh
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-admin/
   vim install.properties
   ```

   ```properties
   ...
   db_root_user=rangerdba
   db_root_password=rangerdba
   db_host=localhost

   db_name=ranger
   db_user=rangerdba
   db_password=rangerdba

   rangerAdmin_password=Griaule.123
   rangerTagsync_password=Griaule.123
   rangerUsersync_password=Griaule.123
   keyadmin_password=Griaule.123

   audit_solr_urls=http://localhost:6083/solr/ranger_audits

   policymgr_supportedcomponents=hbase,hdfs,kafka,kms

   authentication_method=UNIX
   remoteLoginEnabled=true
   authServiceHostName=localhost
   authServicePort=5151

   hadoop_conf=/etc/hadoop/hdfs/conf/

   RANGER_ADMIN_LOG_DIR=/var/log/hadoop/ranger/ranger-admin
   ...
   ```
8. Execute o script de *setup*:

   ```sh
   ./setup.sh
   ```
9. Adicione permissões para as pastas do Ranger e *logs* e adicione o usuário `ranger` no grupo `hadoop`.

   ```sh
   chown -R ranger: /usr/gdp/hadoop/ranger/
   chown -R ranger: /var/log/hadoop/ranger/
   usermod -a -G hadoop ranger
   ```
10. Para inicializar o Ranger Admin utilize o comando:

    ```sh
    ranger-admin start
    ```
11. Acesse o link e digite o usuário `admin` e a senha pré-configurada.

    ```html
    http://<my_ip>:6080/
    ```

{% hint style="info" %}
Nesse contexto, a senha pré-configurada sempre será `Griaule.123`.
{% endhint %}

## Instalação do Ranger UserSync

1. Na pasta de *build* do Ranger, crie uma pasta para o Ranger UserSync chamada `ranger-usersync`, descompacte o arquivo `tar.gz` referente à aplicação e copie todos os arquivos para a pasta criada:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-usersync
   tar -xvf ranger-2.3.0-usersync.tar.gz
   cd ranger-2.3.0-usersync
   cp -R * /usr/gdp/hadoop/ranger/2.3.0/ranger-usersync
   ```
2. Crie a pasta de *logs* e conceda acesso ao usuário `ranger` às pastas `/usr/gdp/hadoop/ranger/` e `/var/log/hadoop/ranger/`:

   ```sh
   mkdir -p /var/log/hadoop/ranger/ranger-usersync
   chown -R ranger: /usr/gdp/hadoop/ranger/
   chown -R ranger: /var/log/hadoop/ranger/
   ```
3. Na pasta `ranger-usersync`, edite o arquivo `install.properties` da seguinte forma:

   ```sh
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-usersync
   vim install.properties
   ```

   ```properties
   ...
   POLICY_MGR_URL = http://<ip_addr>:6080

   SYNC_SOURCE = unix

   SYNC_INTERVAL = 5

   rangerUsersync_password=Griaule.123 # mesma senha que foi definida pra ele no ranger-admin

   hadoop_conf=/etc/hadoop/hdfs/conf

   logdir=/var/log/hadoop/ranger/ranger-usersync
   ...
   ```
4. Altere o *path* padrão da aplicação de `/etc/ranger` para `/usr/gdp/hadoop/ranger/2.3.0/ranger-usersync/ranger`:

   ```sh
   sed -i 's/\/etc\/ranger/\/usr\/gdp\/hadoop\/ranger\/2.3.0\/ranger-usersync\/ranger/g' install.properties
   ```
5. Execute o script `setup.sh`:

   ```sh
   ./setup.sh
   ```
6. Altere a configuração para habilitar a sincronização do UserSync:

   ```sh
   vim /usr/gdp/hadoop/ranger/2.3.0/ranger-usersync/conf/ranger-ugsync-site.xml
   ```

   ```xml
   <property>
     <name>ranger.usersync.enabled</name>
     <value>true</value>
   </property>
   ```
7. Após a instalação com resultado **successfully**, inicialize o serviço utilizando o script `ranger-usersync-services.sh`:

   ```sh
   # Inicialização:
   ./ranger-usersync-services.sh start

   # Paralisação:
   ./ranger-usersync-services.sh stop
   ```

## Instalação de Plugins

{% hint style="info" %}
Os plugins **não são** necessários para o funcionamento do Ranger KMS. São apenas recursos disponíveis para auditoria dos recursos do Hadoop.
{% endhint %}

### HDFS Plugin

{% hint style="warning" %}
O HDFS Plugin deve ser instalado em **todos** os *NameNodes*.
{% endhint %}

1. Crie a pasta `ranger-hdfs-plugin` conforme a estrutura do GHDP:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-hdfs-plugin
   ```
2. Na pasta de *build* do Ranger, descompacte o arquivo `ranger-2.3.0-hdfs-plugin.tar.gz` e copie todos os arquivos para a pasta criada anteriormente:

   ```sh
   cd ./apache-ranger-2.3.0/target/
   tar -xvf ranger-2.3.0-hdfs-plugin.tar.gz
   cd ranger-2.3.0-hdfs-plugin
   cp -R * /usr/gdp/hadoop/ranger/2.3.0/ranger-hdfs-plugin
   ```
3. Na pasta do plugin, edite o arquivo `install.properties`:

   ```sh
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-hdfs-plugin
   vim install.properties
   ```

   ```properties
   ...
   POLICY_MGR_URL=http://<host_addrs>:6080

   REPOSITORY_NAME=hadoopdev

   COMPONENT_INSTALL_DIR_NAME=/usr/gdp/hadoop/hdfs/3.2.4/

   XAAUDIT.SOLR.ENABLE = true
   XAAUDIT.SOLR.URL = http://<host_addrs>:6083/solr/ranger_audits
   XAAUDIT.SOLR.USER = NONE
   XAAUDIT.SOLR.PASSWORD = NONE
   XAAUDIT.SOLR.ZOOKEEPER = NONE
   XAAUDIT.SOLR.FILE_SPOOL_DIR = /var/log/hadoop/hdfs/audit/solr/spool
   ...
   ```
4. Caso exista mais de um *NameNode*, crie a mesma estrutura de pastas e copie todo o conteúdo para os demais *NameNodes* com `scp`:

   > Esse procedimento deve ser realizado **antes** da habilitação do *plugin*.

   ```sh
   # NameNode2
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-hdfs-plugin

   # NameNode1
   scp -r * root@localhost:/usr/gdp/hadoop/ranger/2.3.0/ranger-hdfs-plugin/

   # NameNode2
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-hdfs-plugin
   ls -l
   ```
5. Habilite o *plugin* executando o script `enable-hdfs-plugin.sh`:

   ```sh
   ./enable-hdfs-plugin.sh
   ```
6. Conecte no **Ranger Admin UI**. Na tela principal, em HDFS, clique no botão + e preencha os campos com as seguintes informações:
   * *Service Name*: `hadoopdev`
   * *Display Name*: `hadoopdev`
   * *Username*: `hadoop` (Usuário UNIX)
   * *Password*: `<senha criada para o usuário hadoop no UNIX>`
   * *NameNode URL*: `hdfs://localhost:50070`
   * *Authentication Type*: `Simple`\ <br>
7. Mantenha o restante das configurações inalteradas e clique no botão Add.\ <br>
8. Reinicie o *cluster*.

### HBase Plugin

{% hint style="warning" %}
O HBase Plugin deve ser instalado em **todos** os hosts com *Master* e *Regional*.
{% endhint %}

1. Crie a pasta `ranger-hbase-plugin` conforme a estrutura do GHDP.

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-hbase-plugin
   ```
2. Na pasta de *build* do Ranger, descompacte o arquivo `ranger-2.3.0-hbase-plugin.tar.gz` e copie todos os arquivos para a pasta criada anteriormente:

   ```sh
   cd ./apache-ranger-2.3.0/target/
   tar -xvf ranger-2.3.0-hbase-plugin.tar.gz
   cd ranger-2.3.0-hbase-plugin
   cp -R * /usr/gdp/hadoop/ranger/2.3.0/ranger-hbase-plugin
   ```
3. Na pasta do plugin, edite o arquivo `install.properties`:

   ```sh
   vim install.properties
   ```

   ```properties
   ...
   POLICY_MGR_URL=http://localhost:6080

   REPOSITORY_NAME=hbasedev

   COMPONENT_INSTALL_DIR_NAME=/usr/gdp/hadoop/hbase/2.5.1

   XAAUDIT.SOLR.ENABLE=true
   XAAUDIT.SOLR.URL=http://localhost:6083/solr/ranger_audits
   XAAUDIT.SOLR.USER=NONE
   XAAUDIT.SOLR.PASSWORD=NONE
   XAAUDIT.SOLR.ZOOKEEPER=NONE
   XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hadoop/hbase/audit/solr/spool

   XAAUDIT.SOLR.IS_ENABLED=true
   XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
   XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
   XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits
   ...
   ```
4. Crie a mesma estrutura de pastas e copie todo o conteúdo para o *Master* e *Regional*:

   > Esse procedimento deve ser realizado **antes** da habilitação do *plugin*.

   ```sh
   # node2 & node3
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-hbase-plugin

   # node1
   scp -r * root@localhost:/usr/gdp/hadoop/ranger/2.3.0/ranger-hbase-plugin/
   scp -r * root@localhost:/usr/gdp/hadoop/ranger/2.3.0/ranger-hbase-plugin/

   # node2 & node3
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-hbase-plugin
   ls -l
   ```
5. Crie um usuário `hbase` e habilite o *plugin* executando o script `enable-hbase-plugin.sh`:

   ```sh
   useradd hbase
   passwd hbase
   ./enable-hbase-plugin.sh
   ```
6. Conecte no **Ranger Admin UI**. Na tela principal, em HDFS, clique no botão + e preencha os campos com as seguintes informações:
   * *Service Name*: `hadoopdev`
   * *Display Name*: `hadoopdev`
   * *Username*: `hbase` (Usuário UNIX)
   * *Password*: `<senha criada para o usuário hbase no UNIX>`
   * *hadoop.security.authentication*: `Simple`
   * *hbase.security.authentication*: `Simple`
   * *hbase.zookeeper.property.clientPort*: `2181`
   * *hbase.zookeeper.quorum*: `,,`
   * *zookeeper.znode.parent*: `/hbase-unsecure`\ <br>
7. Mantenha o restante das configurações inalteradas e clique no botão Add.\ <br>
8. Reinicie o *cluster*.

### Kafka Plugin

{% hint style="warning" %}
O Kafka Plugin deve ser instalado em **todos** os hosts que possuem o componente instalado.
{% endhint %}

1. Crie a pasta `ranger-kafka-plugin` conforme a estrutura do GHDP:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-kafka-plugin
   ```
2. Na pasta de *build* do Ranger, descompacte o arquivo `ranger-2.3.0-kafka-plugin.tar.gz` e copie todos os arquivos para a pasta criada anteriormente:

   ```sh
   cd ./apache-ranger-2.3.0/target/
   tar -xvf ranger-2.3.0-kafka-plugin.tar.gz
   cd ranger-2.3.0-kafka-plugin
   cp -R * /usr/gdp/hadoop/ranger/2.3.0/ranger-kafka-plugin
   ```
3. Na pasta do plugin, edite o arquivo `install.properties`:

   ```sh
   vim install.properties
   ```

   ```properties
   ...
   COMPONENT_INSTALL_DIR_NAME=/usr/gdp/hadoop/kafka/3.3.1/

   POLICY_MGR_URL=http://localhost:6080

   REPOSITORY_NAME=kafkadev

   XAAUDIT.SOLR.ENABLE=true
   XAAUDIT.SOLR.URL=http://localhost:6083/solr/ranger_audits
   XAAUDIT.SOLR.USER=NONE
   XAAUDIT.SOLR.PASSWORD=NONE
   XAAUDIT.SOLR.ZOOKEEPER=NONE
   XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hadoop/kafka/audit/solr/spool

   XAAUDIT.SOLR.IS_ENABLED=true
   XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
   XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
   XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits
   ...
   ```
4. Crie a mesma estrutura de pastas e copie todo o conteúdo para os demais *nodes*:

   > Esse procedimento deve ser realizado **antes** da habilitação do *plugin*.

   ```sh
   # node2 & node3
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-kafka-plugin

   # node1
   scp -r * root@localhost:/usr/gdp/hadoop/ranger/2.3.0/ranger-kafka-plugin
   scp -r * root@localhost:/usr/gdp/hadoop/ranger/2.3.0/ranger-kafka-plugin

   # node2 & node3
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-kafka-plugin
   ls -l
   ```
5. Crie um usuário `kafka` e habilite o *plugin* executando o script `enable-kafka-plugin.sh`:

   ```sh
   useradd kafka
   passwd kafka
   ./enable-kafka-plugin.sh
   ```
6. Conecte no **Ranger Admin UI**. Na tela principal, em HDFS, clique no botão + e preencha os campos com as seguintes informações:
   * *Service Name*: `hadoopdev`
   * *Display Name*: `hadoopdev`
   * *Username*: `hbase` (Usuário UNIX)
   * *Password*: `<senha criado para o usuário hbase no UNIX>`
   * *hadoop.security.authentication*: `Simple`
   * *hbase.security.authentication*: `Simple`
   * *hbase.zookeeper.property.clientPort*: `2181`
   * *hbase.zookeeper.quorum*: `,,`
   * *zookeeper.znode.parent*: `/hbase-unsecure`\ <br>
7. Mantenha o restante das configurações inalteradas e clique no botão Add.\ <br>
8. Reinicie o *cluster*.

## Instalação e Configuração do Ranger KMS

### Instalação do Ranger KMS

1. Crie a pasta `ranger-kms` conforme a estrutura do GHDP:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-kms
   ```
2. No servidor do MySQL, crie um usuário `rangerkms` para o gerenciamento da base feito pela a aplicação:

   ```sh
   mysql -uroot -p
   ```

   ```sql
   CREATE USER 'rangerkms'@'localhost' IDENTIFIED BY 'rangerkms';

   GRANT ALL PRIVILEGES ON *.* TO 'rangerkms'@'localhost';

   CREATE USER 'rangerkms'@'%' IDENTIFIED BY 'rangerkms';

   GRANT ALL PRIVILEGES ON *.* TO 'rangerkms'@'%';

   GRANT ALL PRIVILEGES ON *.* TO 'rangerkms'@'localhost' WITH GRANT OPTION;

   GRANT ALL PRIVILEGES ON *.* TO 'rangerkms'@'%' WITH GRANT OPTION;

   FLUSH PRIVILEGES;
   ```
3. Na pasta de *build* do Ranger, descompacte o Ranger KMS e copie todos os arquivos para a pasta criada anteriormente:

   ```sh
   cd ./apache-ranger-2.3.0/target/
   tar -xvf ranger-2.3.0-kms.tar.gz
   cd ranger-2.3.0-kms
   cp -R * /usr/gdp/hadoop/ranger/2.3.0/ranger-kms/
   ```
4. Crie a pasta de *logs* para o Ranger KMS:

   ```sh
   mkdir -p /var/log/hadoop/ranger/ranger-kms/
   ```
5. Utilizando um gerador de senhas, crie uma senha com os seguintes parâmetros e guarde-a em um local confiável (ela será utilizada no passo seguinte):
   * 16 caracteres
   * Letras maiúsculas
   * Letras minúsculas
   * Caracteres especiais.\ <br>
6. Na pasta do Ranger KMS, edite o arquivo `install.properties` adicionando configuração para Java Key Store (arquiva a master key em um arquivo no próprio servidor):

   > Utilize a senha de 16 caracteres gerada no passo anterior como `KMS_MASTER_KEY_PASSWD`. Por exemplo: `$ZH1$Q8&ExUaTku8`.

   ```sh
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-kms/
   vim install.properties
   ```

   ```properties
   ...
   db_root_user=rangerkms
   db_root_password=rangerkms
   db_host=localhost

   db_name=rangerkms
   db_user=rangerkms
   db_password=rangerkms

   COMPONENT_INSTALL_DIR_NAME=/usr/gdp/hadoop/ranger/2.3.0/ranger-kms

   KMS_MASTER_KEY_PASSWD=<senha de 16 caracteres gerada anteriormente>

   hadoop_conf=/etc/hadoop/hdfs/conf

   POLICY_MGR_URL=http://localhost:6080

   REPOSITORY_NAME=kmsdev

   XAAUDIT.SOLR.ENABLE=true
   XAAUDIT.SOLR.URL=http://localhost:6083/solr/ranger_audits
   XAAUDIT.SOLR.USER=NONE
   XAAUDIT.SOLR.PASSWORD=NONE
   XAAUDIT.SOLR.ZOOKEEPER=NONE
   XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hadoop/ranger/ranger-kms/audit/solr/spool

   XAAUDIT.SOLR.IS_ENABLED=true
   XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
   XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
   XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits

   RANGER_KMS_LOG_DIR=/var/log/hadoop/ranger/ranger-kms
   ...
   ```

### Configuração do Ranger KMS com Luna Cloud HSM

1. Antes de efetuar o *setup* do Ranger KMS, é necessário adicionar o *LunaProvider* no arquivo `java.security`. Para isso, edite o arquivo `java.security`, que se encontra na pasta `<JDK_installation_directory>/jre/lib/security`, adicionando duas linhas no final: uma com o *LunaProvider* na sequência da lista de provedores, `security.provider.10=com.safenetinc.luna.provider.LunaProvider`, e uma com a configuração para que o Luna funcione, `com.safenetinc.luna.provider.createExtractableKeys=true`:

   ```sh
   vim /usr/lib/java/jre/lib/security/java.security
   ```

   ```properties
   #
   # List of providers and their preference orders (see above):
   #
   security.provider.1=sun.security.provider.Sun
   security.provider.2=sun.security.rsa.SunRsaSign
   security.provider.3=sun.security.ec.SunEC
   security.provider.4=com.sun.net.ssl.internal.ssl.Provider
   security.provider.5=com.sun.crypto.provider.SunJCE
   security.provider.6=sun.security.jgss.SunProvider
   security.provider.7=com.sun.security.sasl.Provider
   security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
   security.provider.9=sun.security.smartcardio.SunPCSC
   security.provider.10=com.safenetinc.luna.provider.LunaProvider

   com.safenetinc.luna.provider.createExtractableKeys=true
   ```
2. Copie os arquivos `LunaProvider.jar` e `libLunaAPI.so` para a pasta `<JDK_installation_directory/jre/lib/ext`.

   ```sh
   cp /usr/safenet/lunaclient/jsp/LunaProvider.jar /usr/lib/java/jre/lib/ext/
   cp /usr/safenet/lunaclient/jsp/64/libLunaAPI.so /usr/lib/java/jre/lib/ext/
   ```
3. Utilizando um gerador de senhas, crie uma senha com os seguintes parâmetros e guarde-a em um local confiável (ela será utilizada no passo seguinte):
   * 16 caracteres
   * Letras maiúsculas
   * Letras minúsculas
   * Caracteres especiais.\ <br>
4. Edite o arquivo `install.properties` para o *setup* do Ranger KMS com o Luna Cloud HSM:

   > Utilize a senha de 16 caracteres gerada no passo anterior como `KMS_MASTER_KEY_PASSWD`. Por exemplo: `$ZH1$Q8&ExUaTku8`.

   ```sh
   cd /usr/gdp/hadoop/ranger/2.3.0/ranger-kms/
   vim install.properties
   ```

   ```properties
   ...
   db_root_user=rangerkms
   db_root_password=rangerkms
   db_host=localhost

   db_name=rangerkms
   db_user=rangerkms
   db_password=rangerkms

   COMPONENT_INSTALL_DIR_NAME=/usr/gdp/hadoop/ranger/2.3.0/ranger-kms

   KMS_MASTER_KEY_PASSWD=<senha de 16 caracteres gerada anteriormente>

   hadoop_conf=/etc/hadoop/hdfs/conf

   #------------------------- Ranger KMS HSM CONFIG ------------------------------
   HSM_TYPE=LunaProvider
   HSM_ENABLED=true
   HSM_PARTITION_NAME=rangerkms
   HSM_PARTITION_PASSWORD=Griaule.123

   POLICY_MGR_URL=http://localhost:6080

   REPOSITORY_NAME=kmsdev

   XAAUDIT.SOLR.ENABLE=true
   XAAUDIT.SOLR.URL=http://localhost:6083/solr/ranger_audits
   XAAUDIT.SOLR.USER=NONE
   XAAUDIT.SOLR.PASSWORD=NONE
   XAAUDIT.SOLR.ZOOKEEPER=NONE
   XAAUDIT.SOLR.FILE_SPOOL_DIR=/var/log/hadoop/ranger/ranger-kms/audit/solr/spool

   XAAUDIT.SOLR.IS_ENABLED=true
   XAAUDIT.SOLR.MAX_QUEUE_SIZE=1
   XAAUDIT.SOLR.MAX_FLUSH_INTERVAL_MS=1000
   XAAUDIT.SOLR.SOLR_URL=http://localhost:6083/solr/ranger_audits

   RANGER_KMS_LOG_DIR=/var/log/hadoop/ranger/ranger-kms
   ...
   ```
5. Em todos o *nodes*, para que os *datanodes* acessem o KMS, edite o arquivo `core-site.xml` alterando o *value* da propriedade `hadoop.security.key.provider.path` para `kms://http@localhost:9292/kms`:

   ```sh
   vim /etc/hadoop/hdfs/conf/core-site.xml
   ```

   ```xml
   <property>
     <name>hadoop.security.key.provider.path</name>
     <value>kms://http@localhost:9292/kms</value>
   </property>
   ```
6. Reinicie o HDFS.

   ```sh
   dfsstop
   dfsstart
   ```
7. Conceda ao usuário `kms` as permissões para as pastas:

   ```sh
   chown -R kms: /var/log/hadoop/ranger/ranger-kms/
   chown -R kms: /usr/gdp/hadoop/ranger/2.3.0/ranger-kms/
   ```
8. Execute o *script* de *setup*, aguarde a finalização da instalação com a mensagem **successfully** e inicialize o Ranger KMS:

   ```sh
   ./setup.sh

   # Iniciar:
   ranger-kms start

   # Finalizar:
   ranger-kms stop
   ```
9. Se tudo ocorreu com sucesso, será possível acessar o painel do Ranger KMS por meio do endereço do Ranger Admin utilizando o usuário `keyadmin` e a senha definida no [procedimento de instalação do Ranger Admin](#instalacaorangeradmin).
   * *Link*: `http://<my_ip>:6080/`
   * *User*: `keyadmin`
   * *Password*: `<definida no install.properties durante o setup do Ranger Admin>`\ <br>
10. Entre no Ranger Admin UI com o usuário `admin`, acesse Settings > Users/Groups/Roles. Na aba Users, clique no botão Add New User e crie os usuários:
    * `hive`
    * `hdfs`
    * `om`
    * `hbase`\ <br>
11. Em seguida, faça logout e entre como `keyadmin` para acessar o painel do Ranger KMS UI no Service KMS. Clique no botão + para criar o repositório `kmsdev`, conforme as especificações abaixo:
    * *Service Name*: `kmsdev`
    * *KMS URL*: `kms://http@:9292/kms`
    * *Username*: `keyadmin`
    * *Password*: `<senha definida no procedimento de instalação do Ranger Admin>`\ <br>
12. Na mesma tela, em Audit Filter, clique no botão + para adicionar uma ACL com as seguintes especificações:
    * *Access Result*: `ALLOWED`
    * *Permissions*: `Select All`
    * *Users*: `keyadmin`\ <br>
13. Clique em Add. Em seguida, clique para editar o repositório `kmsdev` e clique no botão Test Connection, para confirmar se todo o procedimento ocorreu corretamente.\ <br>
14. Reinicie o Ranger KMS:

    ```sh
    ranger-kms stop
    ranger-kms start
    ```
15. Caso esteja utilizando o Luna Cloud HSM, verifique se houve a criação da *master key*. Para isso, execute o `lunacm`:

    ```sh
    lunacm
    ```

    Ou:

    ```sh
    cd /usr/safenet/lunaclient/
    ./bin/64/lunacm
    ```
16. Faça login com o role *crypto officer*:

    ```sh
    role login -name crypto officer
    ```
17. Liste o conteúdo da partição para verificar se a *master key* foi criada com sucesso:

    ```sh
    partition contents
    ```

    Exemplo de saída com a *master key* criada:

    ```
    lunacm:>partition contents

            The 'Crypto Officer' is currently logged in. Looking for objects
            accessible to the 'Crypto Officer'.

            Object list:

            Label:         RangerKMSKey
            Handle:        1
            Object Type:   Symmetric Key
            Usage Limit:   none
            Object UID:    9f1d00002d000001706c0800

            Number of objects:  1

    Command Result : No Error
    ```

{% hint style="success" %}
O arquivo de configuração do Ranger KMS, `dbks-site.xml`, se encontra em:

```sh
/usr/gdp/hadoop/ranger/2.3.0/ranger-kms/ews/webapp/WEB-INF/classes/conf/dbks-site.xml
```

{% endhint %}

## Ativar Load Balancer no Ranger KMS

1. Em um segundo servidor, realize todo o procedimento de [instalação do Ranger KMS](#instalacaorangerkms).

{% hint style="warning" %}
Caso esteja utilizando Luna Cloud HSM, siga as instruções do [guia de instalação do Luna Cloud HSM](https://docs.griaule.com/lunacloudhsm#lunacloudhsm-installguide-pt) contidas nos tópicos [1.1. Download do client](https://docs.griaule.com/lunacloudhsm#lunacloudhsm-downloaddoclient) e [1.2. Instalação do client no servidor](https://docs.griaule.com/lunacloudhsm#lunacloudhsm-instalacaodoclientnoservidor) para realizar a instalação do client. Não é necessário realizar os procedimentos de ativar slot, iniciar partição ou iniciar as roles, contidos nos tópicos posteriores do guia. Em seguida, siga rigorosamente as instruções de [instalação](#instalacaorangerkms) e [configuração](#configuracaorangerkms) do HSM com Ranger, porém tomando os cuidados descritos abaixo.
{% endhint %}

2. No **passo 5** da [configuração](#configuracaorangerkms), em que é preciso alterar o arquivo `core-site.xml` para que os *datanodes* acessem o KMS, prossiga da seguinte forma: abra o arquivo, encontre a propriedade `hadoop.security.key.provider.path` e altere seu *value* de `kms://http@localhost:9292/kms` para `kms://http@host1;host2:9292/kms`:\ <br>

   ```sh
   vim /etc/hadoop/hdfs/conf/core-site.xml
   ```

   Antes:

   ```xml
   <property>
     <name>hadoop.security.key.provider.path</name>
     <value>kms://http@localhost:9292/kms</value>
   </property>
   ```

   Depois:

   ```xml
   <property>
     <name>hadoop.security.key.provider.path</name>
     <value>kms://http@host1;host2:9292/kms</value>
   </property>
   ```
3. Reinicie o HDFS:

   ```sh
   dfsstop
   dfsstart
   ```
4. Siga com a finalização do procedimento de [configuração do Ranger KMS](#configuracaorangerkms), a partir do passo 6.

## Desinstalação do Ranger

Para desinstalar o Ranger, execute os seguintes comandos:

```bash
rm -rf /var/log/ranger /var/log/hadoop/ranger /usr/gdp/hadoop/solr/ /usr/gdp/hadoop/ranger/ /etc/ranger/ /var/log/hadoop/solr/ /var/lib/mysql/ranger/

rm -f /usr/gdp/hadoop/*/*/.ranger*
rm -f /usr/gdp/hadoop/*/*/*/.ranger*
rm -f /usr/gdp/hadoop/*/*/*/*/.ranger*

rm -f /usr/gdp/hadoop/hdfs/3.2.4/etc/hadoop/ranger*
rm -f /usr/gdp/hadoop/hdfs/3.2.4/share/hadoop/hdfs/lib/ranger*

rm -f /usr/bin/ranger*
rm -f /etc/rc.d/init.d/ranger*
rm -f /etc/rc.d/rc2.d/*ranger*
rm -f /etc/rc.d/rc3.d/*ranger*
```

```sql
mysql -uroot -p
show schemas;
drop database ranger;
drop database rangerkms;
```
