>> Apresentação e considerações
O controle de acesso baseado em função (RBAC - Role-based access control)
é um requisito de segurança importante para clusters Hadoop multi-tenant. Aplicar isso através de clusters sempre e transitórios pode ser difícil de configurar e manter.
Imagine uma organização que possui uma matriz RBAC usando usuários e grupos do Active Directory. Eles gostariam de gerenciá-lo em um servidor de política de segurança central e aplicá-lo em todos os clusters Hadoop que são ativados. Este servidor de políticas também deve armazenar informações de acesso e auditoria para as necessidades de conformidade.
Nesse artigo vamos falar da instalação inicial do serviço do Apache Ranger em um servidor Stand Alone, aqui veremos todo o setup até a abertura da interface, em outros artigos iremos abordar um pouco a sua utilização e configuração.
>> O que é o Apache Ranger
O Apache Ranger é uma estrutura para habilitar, monitorar e gerenciar a segurança de dados abrangente em toda a plataforma Hadoop. Os recursos incluem uma administração de segurança centralizada, uma autorização de grãos finos em muitos componentes Hadoop (Hadoop, Hive, HBase, Storm, Knox, Solr, Kafka e YARN)
e auditoria central. Ele usa agentes para sincronizar políticas e usuários e plugins que são executados dentro do mesmo processo que o componente Hadoop, por exemplo, NameNode.
Segue um exemplo da arquitetura interna de autorização do Ranger:
Em qual situação vou usar o Ranger?
No Cloudera Hadoop o Sentry é o nome do serviço que faz essa parte de Autorização e auditoria em um cluster.
Quando usamos o HortonWorks com o Ambari, temos a possibilidade de instalar o Apache Ranger por pacote do repositório HPD e fazer o seu setup pela interface do Ambari.
O cenário que entendo para a instalação de um Ranger da forma que iremos fazer nesse artigo é para suprir uma necessidade de adicionar autorização e auditoria em um cluster EMR da AWS, como o Ranger ainda não é um componente default para ser instalado como serviço no EMR precisamos fazer o setup em uma EC2 por exemplo para depois integrá-lo ao cluster.
Vamos a parte prática!
>> Realizando o Build do código fonte
Mais preciso fazer build do projeto para poder instalá-lo?
A resposta é SIIIMMMMM…bizarro né?! …
Por padrão não é necessária nenhuma alteração antes do build, mais já que é assim…OK! …
Como sugestão caso você precisar testar e validar a instalação várias vezes é guardar os artefatos gerados em algum local para que você não precise fazer o processo de compilação diversas vezes, sendo que a cada compilação você deve esperar por cerca de 1 hora para finalizar.
Outro detalhe, tentei fazer a compilação em um CentOs 7, Linux Mint e Ubuntu 17.04, incrivelmente perdi várias horas tentando compilar e não consegui de forma alguma, quando fiz no meu macbook funcionou lindo e de primeira, deve faltar alguma dependência que ainda não descobri.
Ambiente que o build foi realizado:
- Sistema Operacional: macOS High Sierra
- Versão: 10.13.1 (17B1003)
- Java JDK Version: 8u161-b12
- Maven: 3.5.2
É preciso ter o JAVA JDK 8 para a compilação.
Link de download do JK8 – Última versão
Instalando o Maven
wget http://mirror.nbtelecom.com.br/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.zip unzip apache-maven-3.5.2-bin.zip mv apache-maven-3.5.2 /opt/ export PATH=$PATH:/opt/apache-maven-3.5.2/bin
Realizando o download e o build do projeto
wget http://mirror.nbtelecom.com.br/apache/ranger/0.7.1/apache-ranger-0.7.1.tar.gz tar zxf apache-ranger-0.7.1.tar.gz && cd apache-ranger-0.7.1 mvn clean mvn -DskipTests=false clean compile package install assembly:assembly
Cerca de 1 hora depois, o resultado do build deve ser este:
Após a compilação verifique o diretório target
ls apache-ranger-0.7.1/target
Deverá a seguinte saída com os artefatos gerados no build:
>> Instalando o Apache Ranger
Ambiente que a instalação foi validada:
- Sistema Operacional: CentOS 7.4
hostnamectl set-hostname apache-ranger yum update -y && yum install wget -y
Instalando ORACLE JDK 8
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm" && rpm -ivh jdk-8u161-linux-x64.rpm echo "export JAVA_HOME=/usr/java/jdk1.8.0_161" >> ~/.bash_profile source ~/.bash_profile
Instalando o MySQL connector
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.42.tar.gz tar xf mysql-connector-java-5.1.42.tar.gz mkdir -p /usr/share/java/ cp mysql-connector-java-5.1.42/mysql-connector-java-5.1.42-bin.jar /usr/share/java/ ln -s /usr/share/java/mysql-connector-java-5.1.42-bin.jar /usr/share/java/mysql-connector-java.jar rm -rfv mysql-connector-java-5.1.42
MariaDB – Instalando e configurando o Banco de Dadados
Aqui estou considerando a instalação do banco de dados do Ranger na mesma máquina em que estamos instalando a aplicação.
Todas as configurações de metadados, de autorização de quem pode acessar o que, entre outras são armazenadas nesse banco, o backup é importante…
Se você possui um cluster já com um banco mariadb/mysql você pode criar as bases lá e depois fazer o devido apontamento.
NOTA: Altere os itens de
password
para uma senha segura de sua preferência, e guarde-a pois iremos usá-las em seguida.
yum install mariadb-server -y systemctl start mariadb; systemctl enable mariadb mysql_secure_installation
mysql -uroot -p > CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password'; > GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION; > CREATE USER 'ranger'@'localhost' IDENTIFIED BY 'password'; > CREATE USER 'rangerlogger'@'localhost' IDENTIFIED BY 'password'; > FLUSH PRIVILEGES;
FINALMENTE instalando o Apache Ranger
Vamos criar o nosso diretório ranger_home
que será o diretório que vamos utilizar para instalar o ranger.
mkdir /usr/lib/ranger/
Copie os artefatos gerados no build para a máquina em que estamos realizando a instalação, vamos copiar o arquivos “*.tar.gz” para o ranger_home
que criamos, e vamos começar pelo ranger-0.7.1-admin.tar.gz
tar zxf ranger-0.7.1-admin.tar.gz cd /usr/lib/ranger/ranger-0.7.1-admin/
Editando o arquivos install.properties
, basicamente vamos configurar os parâmetros de banco de dados para a instalação.
vim install.properties
Inicialmente vamos focar em alterar os seguintes parâmetros abaixo considerando os dados que foram criados na criação do banco de dados.
DB_FLAVOR=MYSQL SQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar db_root_user=root db_root_password=ranger db_host=localhost db_name=ranger db_user=ranger db_password=password audit_store=db audit_db_name=rangerlogger audit_db_user=rangerlogger audit_db_password=password
Vamos executar o script de setup.sh
que irá definitivamente instalar o Ranger Admin.
./setup.sh
Iniciando o serviço
ranger-admin start
>> Acessando o Ranger via browser
URL: http://ip-do-ranger:6080/
Login: admin
Senha: admin
Aqui estamos na tela inicial!
>> Conclusão
Esse artigo contempla somente o primeiro passo rumo segurança do seu cluster, ainda precisam ser instalados os demais módulos que são os que de fato permitem que sejam criadas as regras de autorização de cada serviço, a Kerberização de um ambiente Hadoop é extremamente importante para a gerência e segurança dos dados do Cluster.
Por enquanto ficamos por aqui.
Abraço!
>> Referências
https://ranger.apache.org/quick_start_guide.html
http://coheigea.blogspot.com.br/2016/07/installing-apache-ranger-admin-ui.html
https://www.talend.com/blog/2016/07/28/syncing-users-groups-ldap-apache-ranger/
Deixe um comentário