# 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](/ferramentas-auxiliares/lunacloudhsm.md#lunacloudhsm-installguide-pt) contidas nos tópicos [1.1. Download do client](/ferramentas-auxiliares/lunacloudhsm.md#lunacloudhsm-downloaddoclient) e [1.2. Instalação do client no servidor](/ferramentas-auxiliares/lunacloudhsm.md#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;
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/ferramentas-auxiliares/apacheranger.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
