¿Cuál es una forma segura y fácil de usar para proporcionar acceso a la aplicación web a solo unos pocos usuarios en Amazon EC2?

¿Cuál es una forma segura y fácil de usar para proporcionar acceso a la aplicación web a solo unos pocos usuarios en Amazon EC2?

Situación

Contamos con una aplicación web alojada en Amazon EC2. Está pensado para que lo utilicen sólo unos pocos usuarios de una empresa.

Cómo estamos lidiando con esto

  • Compartimos la dirección IP (elástica) de la instancia con los usuarios.
  • Agregamos la dirección IP de cada usuario al grupo de seguridad de la instancia cuando sea necesario.

Cuando yo digocomo y cuando sea necesario, me refiero a correos electrónicos de los usuarios quejándose de que el portal web muestra una página de error. Se les olvida que este paso de incluir la IP en el grupo de seguridad es obligatorio (y no los culpo; son usuarios finales).

Por el bien de esta pregunta, supongamos que tenemos un total de 5 usuarios en una empresa que necesitan este acceso. Las direcciones IP del Usuario-1 y del Usuario-2 ya se agregaron al grupo de seguridad.

Problemas

  1. El usuario 3 accede directamente a la dirección IP, pero no puede acceder a ella porque la dirección IP del usuario no se ha agregado al grupo de seguridad.
  2. Si el Usuario-1 o el Usuario-2 reinician su Internet, es probable que su dirección IP cambie (IP dinámica proporcionada por el ISP) y la nueva dirección IP deberá agregarse al grupo de seguridad (y la anterior deberá revocarse para evitar el acceso de otros).

Otras opciones que estoy considerando

  1. Proporcione acceso solo a la VPN de su oficina y solicite a todos los usuarios que se conecten a través de ella.
  2. (Muy engorroso para el usuario) Solicite a los usuarios que inicien sesión en la consola de administración de AWS, vayan al servicio EC2, vayan a la sección Grupos de seguridad y agreguen sus direcciones IP manualmente (los usuarios ya tienen usuarios de AWS IAM y los permisos adecuados para realizar esto) .
  3. Crear un script que agregue la IP actual del usuario al grupo de seguridad (usando AWS CLI/SDK); suena muy peligroso e inapropiado ya que tendremos que incluir las credenciales API de alguien en el script.

Respuesta1

Opción 4: dejar de controlar el acceso a través de grupos de seguridad y, en su lugar, implementar algún mecanismo de autenticación decente.

Por ejemplo poner unBalanceador de carga de aplicacionesfrente a la aplicación web y configure el ALB para que requieraAutenticación cognitiva. Solo los usuarios autenticados accederán a través del ALB a su aplicación web; problema resuelto. Cognito puede tener usuarios locales o puede usarse junto con su Azure AD o si usa Office365 en su organización. Esta es una forma bastante transparente que no requiere ningún cambio en la aplicación.

Alternativamente, si su aplicación web lo admite, debe configurarla para que requiera autenticación SAML en cualquier directorio de usuario que esté utilizando su organización: Office365, G-Suite, etc.

Espero que ayude :)

Respuesta2

Opción 5: dejar de administrar grupos de seguridad (esencialmente firewalls basados ​​en IP) y usar certificados de cliente TLS.

Si utiliza sistemas modernos de administración de usuarios como Azure AD o LDAP, ya tiene la herramienta adecuada para emitir y distribuir los certificados. Configurará una CA privada y configurará el servidor HTTP (Nginx, Apache2 o AWS ALB) para autenticarse mediante certificados. Quien no tenga un certificado o tenga un certificado no válido (incluidos los caducados) no podrá atravesar el servidor HTTP. Esto requierecerocambie a la aplicación web en sí, e incluso puede eliminar cualquier autenticación en la aplicación, ya que los certificados pueden servir para ese propósito además del control de acceso.

Un punto extra es que esto funciona.en todos lados- ya sea AWS, Azure o su infraestructura local. Incluso puede reutilizar exactamente la misma pila de credenciales y configuración (excepto AWS ALB) sin problemas.

información relacionada