Qual é uma maneira segura e fácil de fornecer a apenas alguns usuários acesso ao aplicativo web no Amazon EC2?

Qual é uma maneira segura e fácil de fornecer a apenas alguns usuários acesso ao aplicativo web no Amazon EC2?

Situação

Temos um aplicativo web hospedado no Amazon EC2. Destina-se a ser usado apenas por alguns usuários em uma empresa.

Como estamos lidando com isso

  • Compartilhamos o endereço IP (Elastic) da instância com os usuários.
  • Adicionamos o endereço IP de cada usuário ao grupo de segurança da instância conforme e quando necessário.

Quando eu digocomo e quando necessário, quero dizer e-mails de usuários reclamando que o portal está mostrando uma página de erro. Eles esquecem que esta etapa de incluir o IP no grupo de segurança é necessária (e não os culpo; eles são usuários finais).

Para fins desta questão, vamos supor que temos um total de 5 usuários em uma empresa que precisam desse acesso. Os endereços IP do Usuário-1 e Usuário-2 já foram adicionados ao grupo de segurança.

Problemas

  1. O usuário-3 vai diretamente para o endereço IP, mas não consegue acessá-lo porque o endereço IP do usuário não foi adicionado ao grupo de segurança.
  2. Se o Usuário-1 ou Usuário-2 reiniciar sua Internet, seu endereço IP provavelmente mudará (IP dinâmico fornecido pelo ISP) e o novo endereço IP terá que ser adicionado ao grupo de segurança (e o antigo terá que ser revogado para evitar o acesso de terceiros).

Outras opções que estou considerando

  1. Forneça acesso apenas à VPN do escritório e peça a todos os usuários que se conectem por meio dela.
  2. (Muito complicado para o usuário) Peça aos usuários para fazerem login no console de gerenciamento da AWS, irem para o serviço EC2, irem para a seção Grupos de segurança e adicionarem seus endereços IP manualmente (os usuários já possuem usuários AWS IAM e permissões apropriadas para realizar isso) .
  3. Criar um script que adicione o IP atual do usuário ao grupo de segurança (usando AWS CLI/SDK) - parece muito perigoso e inapropriado, pois teremos que incluir as credenciais de API de alguém no script.

Responder1

Opção 4 - pare de controlar o acesso através de grupos de segurança e, em vez disso, implemente algum mecanismo de autenticação decente.

Por exemplo coloque umBalanceador de carga de aplicativosna frente do aplicativo da web e configure o ALB para exigirAutenticação cognitiva. Somente usuários autenticados passarão pelo ALB até seu aplicativo da web - problema resolvido. O Cognito pode ter usuários locais ou pode ser usado em conjunto com seu Azure AD ou se você usa o Office365 em sua organização. Esta é uma forma bastante transparente que não requer nenhuma alteração no aplicativo.

Alternativamente, se o seu aplicativo da web for compatível, você deve configurá-lo para exigir autenticação SAML em qualquer diretório de usuário que sua organização esteja usando - Office365, G-Suite, etc.

Espero que ajude :)

Responder2

Opção 5 - parar de gerenciar grupos de segurança (essencialmente firewalls baseados em IP) e usar certificados de cliente TLS.

Se estiver a utilizar sistemas modernos de gestão de utilizadores como Azure AD ou LDAP, já tem a ferramenta certa para emitir e distribuir os certificados. Você configurará uma CA privada e configurará o servidor HTTP (Nginx, Apache2 ou AWS ALB) para autenticar por certificados. Quem estiver sem certificado, ou com certificado inválido (inclusive expirados) não conseguirá passar pelo servidor HTTP. Isto exigezeromude para o próprio aplicativo da web e você pode até descartar qualquer autenticação no aplicativo, pois os certificados podem servir a essa finalidade, além do controle de acesso.

Um ponto bônus é que isso funcionaem todos os lugares- seja AWS, Azure ou sua infraestrutura local. Você pode até reutilizar exatamente a mesma pilha de credenciais e configuração (exceto AWS ALB) perfeitamente.

informação relacionada