17

Estoy usando las herramientas de Amazon para crear una aplicación web. Estoy muy feliz con ellos, pero tengo una preocupación de seguridad.Impacto de los identificadores de cuenta AWS

En este momento, estoy usando varias instancias EC2, S3, SimpleDB y SQS. Para autenticar solicitudes a los diferentes servicios, incluya su Access Identifiers (se requiere iniciar sesión).

Por ejemplo, para cargar un archivo en S3 desde una instancia EC2, la instancia EC2 tiene que tener su ID de clave de acceso y su clave secreta de acceso.

Eso significa básicamente que su nombre de usuario y contraseña deben estar en sus instancias.

Si una de mis instancias se viera comprometida, todos mis activos de Amazon se verían comprometidos. Las claves se pueden usar para cargar/reemplazar datos S3 y SimpleDB, iniciar y detener instancias EC2, etc.

¿Cómo puedo minimizar el daño de un único host comprometido?

Lo primero que pienso es obtener múltiples identificadores por cuenta para poder hacer un seguimiento de los cambios realizados y revocar rápidamente la cuenta "pirateada". Amazon no admite más de un conjunto de credenciales por cuenta.

Mi segundo pensamiento fue crear varias cuentas y usar ACL para controlar el acceso. Lamentablemente, no todos los servicios admiten el otorgamiento de acceso a sus datos a otras cuentas. Además, el ancho de banda es más barato cuanto más se usa, por lo que tener todo pasar por una cuenta es ideal.

¿Alguien ha tratado, o al menos pensado sobre este problema?

Respuesta

5

Lo que puedes hacer es tener un único 'servidor de autenticación' súper bloqueado. La clave secreta solo existe en este único servidor, y todos los demás servidores necesitarán solicitar permiso. Puede asignar sus propias claves a los distintos servidores y también bloquearlas por dirección IP. De esta forma, si un servidor se ve comprometido, simplemente revoca su clave del "servidor de autenticación".

Esto es posible debido a la forma en que funciona la autenticación AWS. Supongamos que su servidor web necesita cargar un archivo en S3. En primer lugar, generará la solicitud de AWS y enviará esa solicitud junto con su clave de servidor personalizada al 'servidor de autenticación'. El servidor de autenticación autenticará la solicitud, haciendo las cosas criptogámicas y devolverá la cadena autenticada al servidor web. El servidor web puede usar esto para enviar la solicitud junto con el archivo para cargar en S3.

+0

"Rolando su propio" servidor de autenticación de este tipo es probable que resulte en fallas de seguridad inesperadas e inadvertidas. AWS ahora (pero no cuando se le preguntó por primera vez) tiene instalaciones para administrar los riesgos de la pregunta. En particular, los roles de IAM (como se describe en la respuesta de @ cudds) son una buena opción para este problema. –

1

AWS ofrece la "Facturación consolidada" que responde a su inquietud en el segundo momento.

https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=consolidated-billing

"facturación consolidada le permite consolidar el pago de múltiples Amazon Web Services (AWS) representa dentro de su empresa mediante la designación de una sola cuenta de pago. Se puede ver una vista combinada de los costos de AWS incurridos por todas las cuentas, así como obtener un informe de costos detallado para cada una de las cuentas AWS individuales asociadas con su cuenta de pago. La Facturación consolidada también puede reducir sus costos generales, ya que el uso acumulado en todas sus cuentas podría ayudarlo a alcanzar niveles de volumen de menor precio más rápidamente. "

5

AWS le permite crear varios usuarios con Identity and Access Management. Esto le permitirá implementar cualquiera de sus escenarios.

Sugeriría definir un usuario de IAM por instancia EC2, esto le permite revocar el acceso a un usuario específico (o solo sus claves de acceso) si la instancia EC2 correspondiente está en peligro y también usar permisos precisos para restringir qué API el usuario puede llamar y a qué recursos puede acceder (por ejemplo, solo le permite al usuario subir a un segmento específico).

+2

Sí, IAM es el camino a seguir. Los permisos de IAM se pueden refinar aún más para lo que necesita hacer la instancia exacta (cargar o leer datos de un segmento muy específico, etc.) –

+0

Gracias por los comentarios Daniel, he actualizado la respuesta para incorporar su sugerencia. – BenM

+2

Ahora que los roles están disponibles, son una mejor opción que los usuarios de IAM para este problema. –

Cuestiones relacionadas