5 etapas para criar controle de acesso no nível da NSA para seu aplicativo

Views: 434
0 0
Read Time:11 Minute, 57 Second

O controle de acesso tornou-se uma preocupação principal quando se trata de desenvolver aplicativos web seguros, e a NSA tem muito a dizer sobre isso. Especialmente quando se trata da maior armadilha de gerenciamento de acesso que os desenvolvedores fazem.

controle de acesso ao aplicativo

Em 2021, a OWASP listou o ‘Controle de Acesso Quebrado’ como seu item A01 na lista dos 10 principais riscos de segurança de aplicativos da Web. O relatório de investigações de violação de dados da Verizon de 2020 afirma que “Pelo menos dois terços dos ataques cibernéticos agora estão focados em se passar por usuários e sistemas confiáveis para acessar dados vitais ou sistemas críticos”.

Para ajudar a resolver essas preocupações, a Agência de Segurança Nacional dos Estados Unidos (NSA) emitiu uma folha de informações de segurança cibernética (CSI) intitulada “Avançando a maturidade de confiança zero em todo o pilar do usuário”.

O objetivo do CSI é fornecer recomendações para fortalecer os recursos de gerenciamento de identidade, credenciais e acesso (ICAM) para mitigar efetivamente esses ataques cibernéticos. Ele discute ainda como esses recursos podem ser integrados em uma estrutura abrangente de confiança zero.

Essas práticas recomendadas testadas em batalha são uma mina de ouro de conhecimento para todos os desenvolvedores. Desenvolver sistemas seguros é um desafio para todos os desenvolvedores, especialmente para aqueles que lidam com questões de segurança nacional. Esses desenvolvedores lidam diariamente com as ameaças cibernéticas mais sofisticadas. Para realmente se destacar como desenvolvedores, devemos aprender com eles e nos esforçar para aprimorar nossos conhecimentos e habilidades. Só então podemos garantir que os sistemas que construímos sejam robustos, resilientes e confiáveis.

Neste artigo, vamos nos concentrar e elaborar sobre as melhores práticas oferecidas pela NSA para a criação de gerenciamento de acesso seguro e como elas podem ser implementadas no nível do aplicativo. Para resumir, estes são os cinco passos mais importantes:

  • Adote uma mentalidade e design de confiança zero
  • O foco do pilar do usuário
  • Gerenciamento de acesso
  • ABAC orientado a eventos
  • Controle de acesso acessível

Introdução: confiança zero, o pilar do usuário e gerenciamento de acesso

Vamos começar com algum contexto – O CSI fornece recomendações para fortalecer os recursos de gerenciamento de identidade, credenciais e acesso de sua organização e como eles podem ser integrados a uma rede de confiança zero. O CSI explica a arquitetura de confiança zero como sendo composta por sete pilares, sendo um deles o pilar do usuário. Não vamos mergulhar na profundidade de cada um desses conceitos, mas faremos uma rápida visão geral deles.

O que é confiança zero?

O modelo de segurança de confiança zero é uma abordagem à segurança cibernética que requer uma verificação de identidade rigorosa para cada pessoa e dispositivo que tenta acessar uma rede, aplicativo ou dados. O modelo assume que todos os usuários, dispositivos e redes são potenciais riscos de segurança e, portanto, limita o acesso apenas aos recursos e dados necessários para cada usuário.

A NSA incentiva a implementação de um modelo de confiança zero para reduzir o risco de violações de dados, ameaças internas e ataques cibernéticos, limitando o acesso a informações e recursos confidenciais apenas a usuários que tenham a autenticação e autorização adequadas e monitorando e verificando constantemente suas identidades e comportamento.

Algumas técnicas comuns usadas em modelos de segurança de confiança zero incluem autenticação multifator, controles de acesso granulares, segmentação de rede e monitoramento contínuo da atividade do usuário.

Em um modelo de confiança zero, as decisões de controle de acesso são baseadas em vários fatores, incluindo a identidade do usuário, o dispositivo que está sendo usado, a localização do usuário e a sensibilidade dos dados ou recursos que estão sendo acessados. Esses fatores são avaliados em tempo real e o acesso só é concedido se todos os critérios forem atendidos. Vamos mergulhar mais fundo nisso em um momento.

Os sete pilares da confiança zero

A implementação de um modelo de confiança zero requer a integração de cada sistema com os controles definidos para cada um dos sete pilares da confiança zero:

  • Utilizador: Autentique e autorize continuamente o acesso a recursos.
  • Dispositivo: Esteja ciente da integridade e do status do dispositivo e mantenha a inspeção, a avaliação e a aplicação de patches em tempo real.
  • Dados: A transparência e a visibilidade dos dados são habilitadas e protegidas pela infraestrutura corporativa, aplicativos, padrões, criptografia robusta de ponta a ponta e marcação de dados.
  • Aplicativo/carga de trabalho: Proteja tudo, de aplicativos a hipervisores, incluindo contêineres e máquinas virtuais.
  • Rede/ambiente: Segmente, isole e controle (física e logicamente) o ambiente de rede com políticas granulares e controles de acesso.
  • Visibilidade e análise: Analise eventos, atividades e comportamentos para obter um modelo que melhore o tempo de detecção e reação ao tomar decisões de acesso.
  • Automação e orquestração: Automatize as respostas de segurança com base em processos e políticas de segurança definidos.

O CSI continua a elaborar cada um dos sete pilares da confiança zero. Neste blog, vamos nos concentrar no pilar do usuário, que lida com o gerenciamento do acesso do usuário em um ambiente de risco dinâmico.

Adotando uma mentalidade de confiança zero

A confiança zero não é um patch que você pode simplesmente aplicar a uma solução existente – é um princípio de segurança por design. No Permit, por exemplo, tivemos que alcançar um modelo de confiança zero para fornecer nossa solução de autorização SaaS.

Projetamos nossa arquitetura para ser dividida em duas partes – o plano de controle e o plano de dados. O plano de controle através do qual nossos clientes gerenciam sua autorização está hospedado em nossa solução em nuvem, mas os dados de nossos clientes nunca são expostos a nós e permanecem hospedados do lado deles.

Dessa forma, nossos clientes podem utilizar plenamente nosso serviço SaaS sem expor nenhum dado, segurança ou fatores de desempenho a ele.

O pilar do usuário

O pilar do usuário é uma expansão do framework FIM, que consiste em várias partes:

  • Gerenciamento de identidade: Criação, manutenção e verificação de identidades digitais.
  • Gerenciamento de credenciais: Emissão, revogação e gerenciamento de credenciais digitais que verificam a identidade de um indivíduo, como cartões inteligentes, tokens e certificados digitais.
  • Gerenciamento de acesso: Autorizar e controlar o acesso a recursos com base na identidade e permissões de um usuário, aplicando políticas e controles para gerenciar o acesso a esses recursos.
  • Federação: Compartilhamento de informações de identidade e acesso entre diferentes organizações ou sistemas para permitir a colaboração interorganizacional e o compartilhamento de recursos.
  • Governança: Estabelecer políticas, procedimentos e controles para garantir a conformidade com leis, regulamentos e padrões do setor.

Você pode aprender mais sobre os sete pilares da confiança zero e seus aspectos no CSI completo disponível aqui. Neste artigo, vamos nos concentrar no gerenciamento de acesso.

Gerenciamento de acesso

O gerenciamento de acesso tem tudo a ver com garantir que apenas as pessoas certas (usuários ou entidades autenticados) possam executar as ações certas nos recursos certos.

As estruturas de controle de acesso fornecem decisões de acesso em vários níveis de granularidade, com sistemas mais avançados capazes de oferecer suporte a um nível mais alto de granularidade.

A maior armadilha do gerenciamento de acesso

Há muitas maneiras de implementar esses controles de acesso. Muitas implementações usam soluções de logon único (SSO) que validam as credenciais de um usuário, atribuem-lhes propriedades específicas (como funções) e, em seguida, gerenciam o acesso com base nos privilégios dessas propriedades.

Essas soluções tendem a usar regras de acesso amplo, estático e baseado em função (RBAC) que regem o acesso a todos os recursos em um sistema. Mas isso não é suficiente.

Os mecanismos de controle de acesso devem considerar granularidade, confiabilidade, disponibilidade e riscos potenciais para o recurso. Uma solução baseada em autenticação e RBAC simples (ou ainda pior – um sistema Admin / Non-Admin) carece de flexibilidade e granularidade cruciais para lidar adequadamente não apenas com dados confidenciais, mas também com os requisitos de quase qualquer aplicativo moderno.

No contexto da NSA, conceder acesso a recursos com base em funções dadas aos usuários (mesmo que eles estejam autenticados) está fora de questão. Atributos como classificação, folga, geolocalização, tempo de acesso e muitos outros são cruciais para que seus sistemas permaneçam seguros. A necessidade de atributos não se limita a organizações governamentais altamente sensíveis:

Considere este exemplo de política de acesso – Somente usuários autenticados que tenham uma assinatura paga ativa e estejam localizados na UE podem acessar uma parte específica do seu aplicativo.

Esse é um tipo de política que você provavelmente encontra todos os dias em quase todos os aplicativos modernos. Não só requer vários atributos para os usuários e recursos, mas também a capacidade de ser atualizado instantaneamente em tempo real.

A solução? Práticas recomendadas testadas em batalha

O NSA CSI oferece algumas práticas recomendadas quando se trata de criar uma camada de controle de acesso granular, confiável e flexível. As práticas recomendadas enfatizam, em primeiro lugar, o uso de um modelo de controle de acesso baseado em atributos (ABAC), que fornece a flexibilidade necessária para atender às nossas metas de gerenciamento de acesso.

Implementar um modelo baseado em ABAC

ABAC é um modelo de autorização que determina o acesso com base em atributos condicionais. Esse modelo permite a criação de políticas altamente granulares, com a capacidade de levar em consideração um grande número de variáveis para decidir sobre o intervalo de acesso de um usuário. De acordo com o CSI, é um dos pré-requisitos mais básicos para a construção de um gerenciamento de acesso seguro.

Por onde começar? Mapeie o controle de acesso do aplicativo

Uma das primeiras e mais básicas etapas para aprimorar seu controle de acesso é mapear os requisitos do aplicativo para determinar quais atributos de usuário e recurso ele requer. Um “inventário e caracterização abrangentes de usuários, recursos e a capacidade dos usuários de proteger os dados” é a primeira etapa necessária para saber exatamente como o controle de acesso do seu aplicativo deve ser projetado.

Devo me mudar para a ABAC completamente?

A implementação do ABAC não significa que tenhamos que deixar de usar o RBAC completamente – o RBAC e o ABAC podem ser usados juntos hierarquicamente, com amplo acesso imposto pelos protocolos RBAC e acesso mais complexo gerenciado pelo ABAC.

Construa um sistema flexível

Implementar e manter a autorização pode, por si só, ser bastante desafiador. Criar uma estrutura que permita mudar de um modelo para outro ou usá-los juntos é ainda mais complicado. A melhor solução é usar uma solução de autorização que permita essa flexibilidade.

Criar um microsserviço separado para autorização

É altamente recomendável criar uma “interface de gerenciamento centralizada para atribuir privilégios refinados”. Cada serviço em seu aplicativo terá que ser configurado com seu próprio conjunto de políticas manualmente. Isso pode ser um processo bastante demorado e, mais importante, inseguro. À medida que o número de políticas, usuários e serviços cresce, a atualização das políticas em cada serviço relevante se tornará tediosa, demorada e uma enorme fonte de erro potencial.

Sobre o mesmo tema –

Não misture código de aplicativo com lógica de autorização

Misturar o código da camada de autorização no código do aplicativo é uma má ideia por vários motivos. Cada atualização ou recurso adicional exigiria que refatorássemos grandes áreas de código que apenas se afastam umas das outras.

Uma solução que permite criar um microsserviço separado para autorização e desacoplar a política e o código é o Open Policy Agent (OPA), que você pode usar para gerenciar a autorização em um serviço separado.

Utilize a autorização orientada a eventos

Além das regras de acesso granulares, manter sua camada de autorização atualizada em tempo real é uma obrigação para todos os aplicativos modernos. OPAL (Open Policy Administration Layer), por exemplo, é um projeto de código aberto que torna o OPA orientado a eventos. Isso permite que você responda a alterações de políticas e dados instantaneamente à medida que elas acontecem, envie atualizações em tempo real para seus agentes e eleve a política aberta à velocidade necessária para os aplicativos em tempo real.

Não pare por aí – Torne o controle de acesso acessível

“Modelos baseados em atributos exigem uma fonte autoritativa para atributos e processos para que os usuários sejam provisionados com atributos”. Embora ferramentas como OPA e OPAL nos permitam unificar todas as políticas em um servidor, assumir o papel de tomada de decisão e aplicação de políticas a partir do serviço e gerenciar a política como código, elas não têm um recurso principal:

Criar, gerenciar e aplicar políticas ABAC de uma maneira que qualquer pessoa em sua organização possa usar.

Normalmente, a criação e o gerenciamento da camada de autorização do seu aplicativo só são feitos por meio de um trabalho complexo de P&D e curvas de aprendizado íngremes. Isso cria uma situação em que os desenvolvedores se tornam gargalos no gerenciamento de permissões do seu aplicativo, enquanto outras partes interessadas são bloqueadas da conversa e seus clientes ficam sem a flexibilidade de que precisam. Isso resulta em um fluxo interminável de solicitações de recursos.

A resposta é fornecer interfaces low-code orientadas para o ser humano, que todas as partes interessadas relevantes, incluindo os usuários finais, possam usar. Isso permite que os desenvolvedores deleguem parte do trabalho sem que eles se tornem gargalos.

Na Permit.io, assumimos o desafio da acessibilidade de frente, ao mesmo tempo em que fomos inflexíveis em manter todo o poder da política como código.

O editor de políticas do Permit implementa e gerencia suas políticas RBAC e ABAC com uma interface do usuário simples sem código que torna o gerenciamento de permissões acessível a outras partes interessadas.

O Permit fornece aos desenvolvedores uma solução de gerenciamento de permissões que torna a política como código tão fácil quanto marcar uma caixa de seleção – gerando o código necessário para você e envolvendo-o bem em interfaces Git e API / UI.

Nunca pare de aprender

“A adoção dos princípios da ZT não é realizada da noite para o dia. A implementação é alcançada através de um planejamento cuidadoso e deliberado e melhorias incrementais contínuas”.

Quer saber mais sobre Autorização e controle de acesso? Junte-se à Comunidade Slack da Permit, onde especialistas em autorização de classe mundial e centenas de desenvolvedores estão discutindo, construindo e implementando a autorização juntos.

FONTE: HELPNET SECURITY

POSTS RELACIONADOS