Apache Knox
Segurança de Perímetro
A Segurança de perímetro refere-se às barreiras naturais ou "construídas" para manter intrusos fora ou cativos dentro dos limites de nossas soluções.
Auxilia na proteção dos recursos do Cluster e fornece um único ponto de acesso para todos os REST e interações HTTP, simplificando a interação com o cliente.
Dentre seus principais benefícios, podemos citar:
-
"Oculta" URL/portas específicas, agindo como um proxy.
-
Simplifica a autenticação de vários serviços e UIs.
-
Habilita terminação SSL no perímetro.
-
Facilita o gerenciamento de endpoints
-
Fornece logs de acesso detalhados.
A segurança de perímetro típica inclui tecnologias como proxies, firewalls, sistemas de detecção de intrusão(IDS) e servidores virtuais de rede privada (VPN). Uma combinação disso tudo fornece uma segurança reforçada.
Características do Knox
O Apache Knox atua como um tipo de proxy de aplicativo, dentro da camada de perímetro, onde recebe requisições destinadas a outro servidor e atua em nome do cliente para obter o recurso solicitado.
É um sistema criado para estender e simplificar o alcance dos serviços Apache Hadoop a usuários fora do Cluster, sem reduzir a segurança do Ecossistema. Foi projetado como um proxy reverso (servidor que reside na frente de um ou mais servidores web, interceptando solicitações dos clientes, com o objetivo de aumentar a segurança, confiabilidade e desempenho).
Apache Knox integra-se aos sistemas de gerenciamento de identidade e SSO(login único) e permite que a identidade desses sistemas seja usada para acesso aos Clusters Hadoop.
Knox entrega três grupos de serviços voltados ao usuário:
-
Serviços de Proxy: Por meio de proxy de recursos HTTP.
-
Serviços de Autenticação: Autenticando para acesso à API REST, assim como fluxo WebSSO para UIs. LDAP/AD, PreAuth baseado em cabeçalho, Kerberos, SAML e OAuth são opções.
-
Serviços de Cliente: Usando scripts por meio de DSL ou classes do Knox Shell diretamente como SDK. O ambiente de script interativo KnoxShell combina o shel interativo do Groovy Shell com as Classes Knox Shell SDK para uma interação com os dados do Cluster Hadoop implantado.
Benefícios do Knox
As principais vantagens do Gateway Knox são:
-
Acesso simplificado: O Knox estende os serviços REST/HTTP do Hadoop ao encapsular o Kerberos dentro do Cluster.
-
Segurança aumentada: Expõe os serviços REST/HTTP do Hadoop sem revelar os detalhes da rede, fornecendo SSL/TLS out-of-the-box (pronto para uso).
O Knox delegará solicitações externas dos clientes Hadoop aos serviços correspondentes e, antes de delegar, fornece todos os serviços de segurança configurados no Cluster:
-
Controle centralizado: Reforça a segurança da API REST "centralizadamente", roteando solicitações para vários Clusters Hadoop.
-
Integração corporativa: Suporta LDAP, Active Directory, SSO, SAML e outros sistemas de autenticação.
-
LDAP de demonstração: Disponível por padrão no Apache Knox.
-
Registro de auditoria.
Arquitetura do Apache Knox
O Apache Knox age como um ponto único de contato para serviços do Apache Hadoop no Cluster.
É executado como um Cluster servidor, na zona DMZ (zona desmilitarizada - situada entre uma rede confiável e uma rede não confiável, provendo isolamento físico entre as duas), isolando o Cluster Hadoop do resto da rede corporativa.
Sua principal característica é o provimento de um perimetro de segurança para APIs REST Hadoop, restringindo o número de endpoints de rede requeridos para acessar o Cluster Hadoop.
Como resultado, ele "esconde" a topologia do Cluster Hadoop. No perímetro da rede, provê um ponto único de autenticação e verificação de tokens.
Knox pode ser usado tanto com Clusters Kerberizados(protegidos por Kerberos) quanto não Kerberizados.
Em uma solução empresarial que emprega Clusters protegidos por Kerberos, provê segurança que integra-se bem com soluções de gestão de identidade da empresa, e, como já dito anteriormente, protegendo os detalhes da implementação do Cluster Hadoop e simplificando o número de serviços com os quais um cliente precisa interagir.
A arquitetura de implantação do Gateway Knox pode ser entendida no seguinte diagrama:
Como funciona o Apache Knox
O Gateway apache Knox é um Gateway aplicativo para interação com as APIs REST e as UIs das implantações Apache Hadoop.
Fornece um único ponto de acesso para interações REST e HTTP com Clusters Apache Hadoop. Para isto, oferece três grupos de serviços voltados ao usuário:
-
Serviços de Proxy: Fornece acesso ao Apache Hadoop por meio de proxy de recursos HTTP.
-
Serviços de Autenticação: Autenticação para acesso à API REST, bem como fluxo WebSSO para UIs. LDAP/AD, Header based PreAuth, Kerberos, SAML, OAuth são todos opções disponíveis.
-
Serviços Cliente DSL/SDK: O desenvolvimento cliente pode ser feito com scripting por meio de DSL ou classes Knox Shell diretamente como SDK. O ambiente de script interativo KnoxShell combina o Shell interativo do groovy shell com as classes Knox Shell SDK para uma interação com dados a partir do Cluster Hadoop implantado.
O Gateway Knox foi projetado como um proxy reverso com consideração para plugabilidade nas áreas de _policy enforcement)(imposição de políticas), por meio dos provedores e serviços de back-end para os quais ele faz proxy de solicitações.
A imposição de políticas abrange regras de autenticação/federação, autorização, auditoria, despacho, mapeamento de host e reescrita de conteúdo. A política é aplicada por meio de uma cadeia de provedores que são definidos no topology deployment descriptor (descritor de implementação de topologias) para cada Cluster Hadoop controlado pelo Knox. A definição de Cluster também é feita no descritor de implantação de topologia e fornece ao Gateway Knox o layout do Cluster para o proposito de roteamento e conversão entre URLs voltados ao usuário e internos do Cluster.
Cada Cluster Hadoop protegido pelo Knox tem seu conjunto de API REST representado por um único caminho de contexto de aplicativo específico do Cluster. Isso permite que o Knox proteja vários Clusters e apresente ao consumidor da API REST um único endpoint para acesso.
Com a gravação do descritor de implantação de topologia no diretório de topologias da instalação Knox, uma nova definição de Cluster Hadoop é processada, os provedores de imposição de política são configurados e o caminho de contexto do aplicativo é disponibilizado para uso pelos consumidores de APIs.
O Apache Knox também complementa muito bem a proteção de Clusters feita por Kerberos, fornecendo o isolamento de rede adequado e ainda:
-
integrando-se bem com soluções de gerenciamento de identidade empresarial.
-
protegendo os detalhes da implantação do Cluster(hosts, portas).
-
simplificando o número de serviços com os quais os clientes precisam interagir.
Recursos do Apache Knox
-
Configuração para novos serviços e UIs: Apache Knox provê um metodo direcionado de configuração para adicionar novos serviços de roteamento. Isto habilita para que novas API RESt Hadoop sejam incorporadas rapidamente e facilmente. Esta funcionalidade foi adicionada na release 0.6.0.
-
Homepage: O Apache Knox provê uma HomePage que pode ser usada como "front-door" de implementações e recursos que sejam publicados para acesso por meio dele. É uma boa alternativa para distribuir um link para a interface administrativa e obter Quick Links.
-
Autenticação: Os provedores com função de autenticação são responsáveis por coletar as credenciais apresentadas pelo consumidor da API, validá-las e comunicar o sucesso ou falha da autenticação ao cliente ou ao restante da cadeia de provedores. O Knox traz consigo o provedor de autenticação Shiro, que aproveita o projeto Apache Shiro para autenticar credenciais BASIC em um repositório de usuários LDAP. Há suporte para OpenLDAP, Apache DS e Microsoft Active Directory.
-
Federação/SSO: Para clientes que exigem que as credenciais sejam apresentadas a um conjunto limitado de entidades confiáveis dentro da emprsea, o KInox pode ser configurado para federar a identidade autenticada de um evento de autenticação externa. Isto é feito por meio de provedores com a função de federação. O conjunto de provedores de federação prontos para uso incluem:
-
IDP baseado em formulário padrão KnoxSSO: A configuração padrão do KnoxSSO fornece um mecanismo de autenticação baseado em formulário que aproveita a autenticaçã Shiro para autenticar no LDAP/AD com credenciais coletadas de um desafio form-based.
-
PAC4J: O provedor pac4j adiciona recursos de autenticação e federação como SAML, CAS, OpenID Connect, Google, Twitter, etc.
-
HeaderPreAuth: Um mecanismo de propagação da identidade por meio de Headers HTTP que especifica o username e grupo para o usuário autenticado. Isto tem sido usado por usecases como SiteMinder e IBM Tivoli Access Manager.
-
-
Knox SSO: O serviço Knox SSO é um serviço de integração que provê um token SSO normalizado para representar o usuário autenticado.
Este token é geralmente usado para recursos WebSSO para UIs participantes e seu consumo de REST APIs Hadoop.
O Knox SSO abstrai a integração real do provedor de identidade dos aplicativos participantes para que estes precisem apenas estar "cientes" do cookie KnoxSSO.
O token é apresentado pelo navedor como um cookie e os aplicativos que participam da integração KnoxSSO podem validar criptograficamente o token apresentado e permanecer independentes da integração SSO subjacente.
-
Autorização: A função de autorização é usada por provedores que tomam decisões de acesso para recursos solicitados com base no contexto de identidade do usuário efetivo.
Este contexto de identidade é determinado pelo provedor de autenticação e pelas regras de mapeamento do provedor de asserção de identidade.
A avaliação do usuário de contexto de identidade e group principals em relação a um conjunto de políticas de acesso é feita pelo provedor de autorização para determinar se o acesso deve ser concedido ao usuário para o recurso solicitado.
O Knox traz consigo um provedor de autorização baseado em ACL que avalia regras que incluem nome de usuário, grupos e endereços IP. Essas ACLs são vinculadas e protegem os recursos no nível de serviço. Ou seja, protegem o acesso aos próprios serviços do Hadoop, com base no usuário, grupo e endereço IP remoto.
-
Auditoria: A auditoria permite determinar quais ações foram executadas por quem durante um determinado período de tempo.
A instalação é construída em uma extensção da estrutura Log4j e pode ser estendida substituindo a implementação "pronta para uso" por outra.
Recomendações e Boas práticas
-
A integração do Knox com Apache Ranger é recomendada para checar as permissões dos usuarios que desejam acessar os recursos do Cluster.
-
Habilitar SSL é altamente recomendável. No caso de conexões Hive desconectadas via Apache Knox, recomendamos modificar o tempo limite da conexão e o número máximo de conexões no arquivo de configurações do site do gateway.
-
Para melhorar os tempos de resposta por meio da configuração do Apache Knox, configure as propriedades abaixo, no gateway.site: gateway.metrics.enabled=false, gateway.jmx.metrics.reporting.enabled=false, gateway.graphite.metrics.reporting.enabled=false.
Serviços Suportados pelo Knox
Os seguintes serviços do Ecossistema Hadoop possuem integração com o Gateway Knox: (estes serviços podem ser consultados na página da comunidade - item "Supported Apache Hadoop Services" / "Supported Apache Hadoop ecosystem UIs")
Componentes suportados por Knox
Componente | SSO | Proxy (API) | Proxy (UI) |
---|---|---|---|
Ambari |
SIM |
SIM |
SIM |
Métricas Ambari/Grafana |
|||
Atlas |
SIM |
SIM |
SIM |
HBase |
SIM |
||
HDFS |
SIM |
||
Hive(via JDBC) |
SIM |
||
Hive(via WebHCat) |
SIM |
||
MapReduce2 |
SIM |
SIM |
|
Zookeeper |
SIM |
SIM |
SIM |
Spark2/Spark History Server |
SIM |
SIM |
|
WebHCat |
SIM |
||
WebHDFS |
SIM |
||
YARN |
SIM |
SIM |
SIM |
Zeppelin |
SIM |
SIM |
SIM |