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 disponibiliza um único ponto de acesso para todas as interações REST e 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 disponibiliza 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 dum 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 shell 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, disponibilizando SSL/TLS out-of-the-box (pronto para uso).
O Knox enviará solicitações externas dos clientes Hadoop aos serviços correspondentes e, antes de enviar, disponibiliza todos os serviços de segurança configurados no Cluster:
-
Controlo 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.
-
Registo de auditoria.
Arquitetura do Apache Knox
O Apache Knox age como um ponto único de contacto 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 dum perímetro de segurança para APIs REST Hadoop, restringindo o número de endpoints de rede requeridos para aceder 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.
Numa solução empresarial que emprega Clusters protegidos por Kerberos, provê segurança que integra-se bem com soluções de gerenciamento 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 todas 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 disponibiliza ao Gateway Knox o layout do Cluster para o propósito 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 escrita 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, disponibilizando 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 método 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 num 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 empresa, o Knox pode ser configurado para federar a identidade autenticada dum 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 disponibiliza um mecanismo de autenticação baseado em formulário que aproveita a autenticação Shiro para autenticar no LDAP/AD com credenciais coletadas dum 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 use cases 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 navegador 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. -
Auditoria: A auditoria permite determinar quais ações foram executadas por quem durante um determinado período de tempo.
A instalação é construída numa extensibilidade 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 usuários que desejam aceder 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 ficheiro 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 |
TDP v2 - Knox - Serviços Suportados pelo Knox com Proxy e SSO (Clusters Kerberizados ou não)
Detalhes do Projeto Apache Knox
O Apache Knox foi desenvolvido em Java.

Fontes: