
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
- 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.
- 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
- Forneça acesso apenas à VPN do escritório e peça a todos os usuários que se conectem por meio dela.
- (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) .
- 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.