Saltar para o conteúdo principal

Apache Knox

Segurança de Perímetro

Apache Knox icon

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.

Segurança do Perímetro
Segurança do Perímetro

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:

Arquitetura Knox
Arquitetura Knox

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.
Serviços do Knox
Serviços do Knox

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​

ComponenteSSOProxy (API)Proxy (UI)
AmbariSIMSIMSIM
Métricas Ambari/Grafana
AtlasSIMSIMSIM
HBaseSIM
HDFSSIM
Hive(via JDBC)SIM
Hive(via WebHCat)SIM
MapReduce2SIMSIM
ZookeeperSIMSIMSIM
Spark2/Spark History ServerSIMSIM
WebHCatSIM
WebHDFSSIM
YARNSIMSIMSIM
ZeppelinSIMSIMSIM

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.

Linguagens do Knox
Linguagens do Knox

Fontes: