# Apache Ranger™ y Ranger KMS

Este manual es una guía de instalación de Apache Ranger™ y Ranger KMS.

{% hint style="warning" %}
Este procedimiento se aplica al entorno GHDP.
{% endhint %}

## Prerrequisitos

Instale los prerrequisitos para el procedimiento de [build de Ranger](#builddoranger).

### Maven

1. Descargue la última versión de Maven en [Downloading Apache Maven](https://maven.apache.org/download.cgi) o:

   ```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 el archivo que carga las variables de entorno del 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 si la instalación se realizó correctamente:

   ```sh
   mvn -version
   ```

### Otros requisitos

Instale los otros requisitos necesarios:

```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 de Ranger

1. Descargue el *source* de Ranger más actualizado que se adecue a la versión de su OS y Java, en el [sitio oficial de Ranger](https://ranger.apache.org/download.html) o:

   ```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. Haga el *build* de Ranger utilizando Maven:

   ```sh
   mvn clean compile package install
   ```
3. Si ocurre un error de acceso inseguro, debido a certificado vencido en algún enlace de repositorio, ejecute el *build* de la siguiente 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. Finalice el procedimiento de *build* con el siguiente comando:

   ```sh
   mvn eclipse:eclipse
   ```
5. Al final, se generará una carpeta llamada `target` con todos los componentes de 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
   ```

## Instalación de Solr

{% hint style="info" %}
Consulte en el [Sitio Oficial de Solr](https://solr.apache.org/downloads.html) cuál es la mejor versión de Solr para su sistema.
{% endhint %}

1. Acceda a la carpeta de *build* de Ranger, conforme realizado en el [tópico anterior](#builddoranger).\ <br>
2. Dentro de esa carpeta, acceda a la carpeta del instalador de Solr, en la que será preconfigurado para uso con Ranger:

   ```sh
   cd ~/apache-ranger-2.3.0
   cd ./security-admin/contrib/solr_for_audit_setup/
   ```
3. Cree la carpeta de Solr conforme la versión elegida:

   ```sh
   mkdir -p /usr/gdp/hadoop/solr/8.11.2/
   ```
4. Edite el archivo `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. Ejecute el script `setup.sh` y verifique los procedimientos de *start* según indicado por el *log* de instalación:

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

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

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

## Instalación y configuración de Ranger Admin

1. Cree la carpeta de Ranger Admin:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-admin
   ```
2. Acceda a la carpeta `target`, generada en el procedimiento de [build](#builddoranger), y descomprima el archivo `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 los archivos dentro de la carpeta descomprimida a la carpeta `ranger-admin`.

   ```sh
   cd ranger-2.3.0-admin
   cp -R * /usr/gdp/hadoop/ranger/2.3.0/ranger-admin/
   ```
4. En la base de datos, cree el usuario `rangerdba` de la siguiente 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. Si no está instalado, instale el `mysql-connector-java` y verifique si el archivo `mysql-connector-java.jar` está en la carpeta correcta:

   ```sh
   yum install mysql-connector-java
   ls /usr/share/java/mysql-connector-java.jar
   ```
6. Cree la carpeta de *registros* para Ranger Admin:

   ```sh
   mkdir -p /var/log/hadoop/ranger/ranger-admin
   ```
7. En la carpeta de Ranger Admin, edite el archivo `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. Ejecute el script de *setup*:

   ```sh
   ./setup.sh
   ```
9. Agregue permisos para las carpetas de Ranger y *registros* y agregue el usuario `ranger` al 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 Ranger Admin utilice el comando:

    ```sh
    ranger-admin start
    ```
11. Acceda al enlace e ingrese el usuario `admin` y la contraseña preconfigurada.

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

{% hint style="info" %}
En este contexto, la contraseña preconfigurada siempre será `Griaule.123`.
{% endhint %}

## Instalación de Ranger UserSync

1. En la carpeta de *build* de Ranger, cree una carpeta para Ranger UserSync llamada `ranger-usersync`, descomprima el archivo `tar.gz` correspondiente a la aplicación y copie todos los archivos a la carpeta creada:

   ```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. Cree la carpeta de *registros* y conceda acceso al usuario `ranger` a las carpetas `/usr/gdp/hadoop/ranger/` y `/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. En la carpeta `ranger-usersync`, edite el archivo `install.properties` de la siguiente 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 # misma contraseña que se definió para él en ranger-admin

   hadoop_conf=/etc/hadoop/hdfs/conf

   logdir=/var/log/hadoop/ranger/ranger-usersync
   ...
   ```
4. Cambie el *path* predeterminado de la aplicación de `/etc/ranger` a `/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. Ejecute el script `setup.sh`:

   ```sh
   ./setup.sh
   ```
6. Cambie la configuración para habilitar la sincronización del 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. Después de la instalación con resultado **successfully**, inicie el servicio utilizando el script `ranger-usersync-services.sh`:

   ```sh
   # Inicialización:
   ./ranger-usersync-services.sh start

   # Parada:
   ./ranger-usersync-services.sh stop
   ```

## Instalación de Plugins

{% hint style="info" %}
Los plugins **no son** necesarios para el funcionamiento de Ranger KMS. Son solo recursos disponibles para auditoría de los recursos de Hadoop.
{% endhint %}

### Plugin HDFS

{% hint style="warning" %}
El Plugin HDFS debe instalarse en **todos** los *NameNodes*.
{% endhint %}

1. Cree la carpeta `ranger-hdfs-plugin` conforme a la estructura del GHDP:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-hdfs-plugin
   ```
2. En la carpeta de *build* del Ranger, descomprima el archivo `ranger-2.3.0-hdfs-plugin.tar.gz` y copie todos los archivos a la carpeta creada 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. En la carpeta del plugin, edite el archivo `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. Si existe más de un *NameNode*, cree la misma estructura de carpetas y copie todo el contenido a los demás *NameNodes* con `scp`:

   > Este procedimiento debe realizarse **antes** de la habilitación del *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 el *plugin* ejecutando el script `enable-hdfs-plugin.sh`:

   ```sh
   ./enable-hdfs-plugin.sh
   ```
6. Conéctese al **Ranger Admin UI**. En la pantalla principal, en HDFS, haga clic en el botón + y rellene los campos con la siguiente información:
   * *Service Name*: `hadoopdev`
   * *Display Name*: `hadoopdev`
   * *Username*: `hadoop` (Usuario UNIX)
   * *Password*: `<contraseña creada para el usuario hadoop en UNIX>`
   * *NameNode URL*: `hdfs://localhost:50070`
   * *Authentication Type*: `Simple`\ <br>
7. Mantenga el resto de las configuraciones sin cambios y haga clic en el botón Add.\ <br>
8. Reinicie el *cluster*.

### Plugin HBase

{% hint style="warning" %}
El Plugin HBase debe instalarse en **todos** los hosts con *Master* y *Regional*.
{% endhint %}

1. Cree la carpeta `ranger-hbase-plugin` conforme a la estructura del GHDP.

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-hbase-plugin
   ```
2. En la carpeta de *build* del Ranger, descomprima el archivo `ranger-2.3.0-hbase-plugin.tar.gz` y copie todos los archivos a la carpeta creada 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. En la carpeta del plugin, edite el archivo `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. Cree la misma estructura de carpetas y copie todo el contenido a *Master* y *Regional*:

   > Este procedimiento debe realizarse **antes** de la habilitación del *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. Cree un usuario `hbase` y habilite el *plugin* ejecutando el script `enable-hbase-plugin.sh`:

   ```sh
   useradd hbase
   passwd hbase
   ./enable-hbase-plugin.sh
   ```
6. Conéctese al **Ranger Admin UI**. En la pantalla principal, en HDFS, haga clic en el botón + y rellene los campos con la siguiente información:
   * *Service Name*: `hadoopdev`
   * *Display Name*: `hadoopdev`
   * *Username*: `hbase` (Usuario UNIX)
   * *Password*: `<contraseña creada para el usuario hbase en UNIX>`
   * *hadoop.security.authentication*: `Simple`
   * *hbase.security.authentication*: `Simple`
   * *hbase.zookeeper.property.clientPort*: `2181`
   * *hbase.zookeeper.quorum*: `,,`
   * *zookeeper.znode.parent*: `/hbase-unsecure`\ <br>
7. Mantenga el resto de las configuraciones sin cambios y haga clic en el botón Add.\ <br>
8. Reinicie el *cluster*.

### Plugin Kafka

{% hint style="warning" %}
El Plugin Kafka debe instalarse en **todos** los hosts que tienen el componente instalado.
{% endhint %}

1. Cree la carpeta `ranger-kafka-plugin` conforme a la estructura del GHDP:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-kafka-plugin
   ```
2. En la carpeta de *build* del Ranger, descomprima el archivo `ranger-2.3.0-kafka-plugin.tar.gz` y copie todos los archivos a la carpeta creada 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. En la carpeta del plugin, edite el archivo `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. Cree la misma estructura de carpetas y copie todo el contenido a los demás *nodos*:

   > Este procedimiento debe realizarse **antes** de la habilitación del *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. Cree un usuario `kafka` y habilite el *plugin* ejecutando el script `enable-kafka-plugin.sh`:

   ```sh
   useradd kafka
   passwd kafka
   ./enable-kafka-plugin.sh
   ```
6. Conéctese al **Ranger Admin UI**. En la pantalla principal, en HDFS, haga clic en el botón + y rellene los campos con la siguiente información:
   * *Service Name*: `hadoopdev`
   * *Display Name*: `hadoopdev`
   * *Username*: `hbase` (Usuario UNIX)
   * *Password*: `<contraseña creada para el usuario hbase en UNIX>`
   * *hadoop.security.authentication*: `Simple`
   * *hbase.security.authentication*: `Simple`
   * *hbase.zookeeper.property.clientPort*: `2181`
   * *hbase.zookeeper.quorum*: `,,`
   * *zookeeper.znode.parent*: `/hbase-unsecure`\ <br>
7. Mantenga el resto de las configuraciones sin cambios y haga clic en el botón Add.\ <br>
8. Reinicie el *cluster*.

## Instalación y configuración de Ranger KMS

### Instalación de Ranger KMS

1. Cree la carpeta `ranger-kms` conforme a la estructura del GHDP:

   ```sh
   mkdir -p /usr/gdp/hadoop/ranger/2.3.0/ranger-kms
   ```
2. En el servidor MySQL, cree un usuario `rangerkms` para la gestión de la base hecha por la aplicación:

   ```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. En la carpeta de *build* del Ranger, descomprima Ranger KMS y copie todos los archivos a la carpeta creada 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. Cree la carpeta de *registros* para Ranger KMS:

   ```sh
   mkdir -p /var/log/hadoop/ranger/ranger-kms/
   ```
5. Usando un generador de contraseñas, cree una contraseña con los siguientes parámetros y guárdela en un lugar seguro (se usará en el paso siguiente):
   * 16 caracteres
   * Letras mayúsculas
   * Letras minúsculas
   * Caracteres especiales.\ <br>
6. En la carpeta de Ranger KMS, edite el archivo `install.properties` añadiendo configuración para Java Key Store (almacena la master key en un archivo en el propio servidor):

   > Use la contraseña de 16 caracteres generada en el paso anterior como `KMS_MASTER_KEY_PASSWD`. Por ejemplo: `$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=<contraseña de 16 caracteres generada 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
   ...
   ```

### Configuración del Ranger KMS con Luna Cloud HSM

1. Antes de efectuar el *setup* del Ranger KMS, es necesario añadir el *LunaProvider* en el archivo `java.security`. Para ello, edite el archivo `java.security`, que se encuentra en la carpeta `<JDK_installation_directory>/jre/lib/security`, añadiendo dos líneas al final: una con el *LunaProvider* en la secuencia de la lista de proveedores, `security.provider.10=com.safenetinc.luna.provider.LunaProvider`, y una con la configuración para que 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 los archivos `LunaProvider.jar` y `libLunaAPI.so` a la carpeta `<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. Usando un generador de contraseñas, cree una contraseña con los siguientes parámetros y guárdela en un lugar seguro (se usará en el paso siguiente):
   * 16 caracteres
   * Letras mayúsculas
   * Letras minúsculas
   * Caracteres especiales.\ <br>
4. Edite el archivo `install.properties` para el *setup* del Ranger KMS con el Luna Cloud HSM:

   > Use la contraseña de 16 caracteres generada en el paso anterior como `KMS_MASTER_KEY_PASSWD`. Por ejemplo: `$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=<contraseña de 16 caracteres generada 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. En todos el *nodos*, para que los *datanodes* accedan al KMS, edite el archivo `core-site.xml` modificando el *value* de la propiedad `hadoop.security.key.provider.path` a `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 el HDFS.

   ```sh
   dfsstop
   dfsstart
   ```
7. Conceda al usuario `kms` los permisos para las carpetas:

   ```sh
   chown -R kms: /var/log/hadoop/ranger/ranger-kms/
   chown -R kms: /usr/gdp/hadoop/ranger/2.3.0/ranger-kms/
   ```
8. Ejecute el *script* de *setup*, espere a la finalización de la instalación con el mensaje **successfully** e inicie el Ranger KMS:

   ```sh
   ./setup.sh

   # Iniciar:
   ranger-kms start

   # Finalizar:
   ranger-kms stop
   ```
9. Si todo ocurrió con éxito, será posible acceder al panel del Ranger KMS mediante la dirección del Ranger Admin utilizando el usuario `keyadmin` y la contraseña definida en el [procedimiento de instalación del Ranger Admin](#instalacaorangeradmin).
   * *Link*: `http://<my_ip>:6080/`
   * *User*: `keyadmin`
   * *Password*: `<definida no install.properties durante o setup do Ranger Admin>`\ <br>
10. Ingrese en el Ranger Admin UI con el usuario `admin`, acceda a Settings > Users/Groups/Roles. En la pestaña Users, haga clic en el botón Add New User y cree los usuarios:
    * `hive`
    * `hdfs`
    * `om`
    * `hbase`\ <br>
11. A continuación, cierre sesión e inicie como `keyadmin` para acceder al panel del Ranger KMS UI en el Service KMS. Haga clic en el botón + para crear el repositorio `kmsdev`, según las especificaciones abajo:
    * *Service Name*: `kmsdev`
    * *KMS URL*: `kms://http@:9292/kms`
    * *Username*: `keyadmin`
    * *Password*: `<contraseña definida en el procedimiento de instalación de Ranger Admin>`\ <br>
12. En la misma pantalla, en Audit Filter, haga clic en el botón + para añadir una ACL con las siguientes especificaciones:
    * *Access Result*: `ALLOWED`
    * *Permissions*: `Select All`
    * *Users*: `keyadmin`\ <br>
13. Haga clic en Add. Luego, haga clic para editar el repositorio `kmsdev` y haga clic en el botón Test Connection, para confirmar si todo el procedimiento se realizó correctamente.\ <br>
14. Reinicie el Ranger KMS:

    ```sh
    ranger-kms stop
    ranger-kms start
    ```
15. En caso de estar utilizando el Luna Cloud HSM, verifique si se creó la *master key*. Para ello, ejecute el `lunacm`:

    ```sh
    lunacm
    ```

    O:

    ```sh
    cd /usr/safenet/lunaclient/
    ./bin/64/lunacm
    ```
16. Inicie sesión con el role *crypto officer*:

    ```sh
    role login -name crypto officer
    ```
17. Liste el contenido de la partición para verificar si la *master key* fue creada con éxito:

    ```sh
    partition contents
    ```

    Ejemplo de salida con la *master key* creada:

    ```
    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" %}
El archivo de configuración del Ranger KMS, `dbks-site.xml`, se encuentra en:

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

{% endhint %}

## Activar Load Balancer en Ranger KMS

1. En un segundo servidor, realice todo el procedimiento de [instalación del Ranger KMS](#instalacaorangerkms).

{% hint style="warning" %}
En caso de estar utilizando Luna Cloud HSM, siga las instrucciones del [guía de instalación del Luna Cloud HSM](/gbs/es/herramientas-auxiliares/lunacloudhsm.md#lunacloudhsm-installguide-pt) contenidas en los tópicos [1.1. Download do client](/gbs/es/herramientas-auxiliares/lunacloudhsm.md#lunacloudhsm-downloaddoclient) y [1.2. Instalação do client no servidor](/gbs/es/herramientas-auxiliares/lunacloudhsm.md#lunacloudhsm-instalacaodoclientnoservidor) para realizar la instalación del client. No es necesario realizar los procedimientos de activar slot, iniciar partición o iniciar los roles, contenidos en los tópicos posteriores de la guía. A continuación, siga rigurosamente las instrucciones de [instalación](#instalacaorangerkms) y [configuración](#configuracaorangerkms) del HSM con Ranger, pero tomando las precauciones descritas abajo.
{% endhint %}

2. En el **paso 5** de la [configuración](#configuracaorangerkms), en la que es preciso modificar el archivo `core-site.xml` para que los *datanodes* accedan al KMS, proceda de la siguiente forma: abra el archivo, encuentre la propiedad `hadoop.security.key.provider.path` y cambie su *value* de `kms://http@localhost:9292/kms` a `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>
   ```

   Después:

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

   ```sh
   dfsstop
   dfsstart
   ```
4. Continúe con la finalización del procedimiento de [configuración del Ranger KMS](#configuracaorangerkms), a partir del paso 6.

## Desinstalación del Ranger

Para desinstalar el Ranger, ejecute los siguientes 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/gbs/es/herramientas-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.
