3 votos

¿Restringir el acceso a las carpetas de S3 a usuarios de sitios web específicos? (no utiliza usuarios de IAM)

Tengo un sitio web donde los usuarios deben iniciar sesión en. Se puede subir y borrar sus propias fotos, PERO estas fotos se supone que para ser privado de modo que las imágenes no están en el público que cualquiera puede ver.

Sé que podemos usar IAM políticas para restringir el acceso a carpetas diferentes en un S3 a los diferentes usuarios de IAM. Sin embargo, los usuarios de la web son sólo normal de los usuarios registrados en la base de datos (probablemente MySQL), que no son Usuarios de IAM.

¿Cuál sería la lógica para hacer esto sin necesidad de un usuario de IAM para cada usuario del sitio web? Hay buenos ejemplos que usted puede sugerir? O me estoy pensando muy mucho de que no hay manera más fácil de configurar este tipo de restricciones?

Gracias de antemano por cualquier sugerencia.

2voto

MLu Puntos 439

Ciertamente, usted no necesitará un Usuario de IAM para cada usuario del sitio web, que no es manejable.

La forma recomendada es utilizar AWS Cognito para la autenticación de usuario en contra de su Usuario de la Piscina (es decir, la lista de usuarios en su base de datos). Cognito manejará el inicio de sesión, cierre de sesión, reinicio de contraseña, etc en su nombre y una vez autenticado el usuario será expedido un conjunto de credenciales temporales de AWS que le dará acceso a los recursos definidos, en su caso a ciertas carpetas en S3.

Los detalles están muy bien descritas en Permitir Cognito a los Usuarios el Acceso a los Objetos en Su S3 - probablemente eso sea exactamente lo que usted necesita.

Como un bono cuando se utiliza Cognito es muy fácil para habilitar el inicio de sesión con cuentas de medios sociales - Facebook, Google, etc inicios de sesión. Consulte Adición de la Identidad Social de los Proveedores a un Usuario de la Piscina.

Espero que ayude :)

2voto

MLu Puntos 439

Otra opción es salir sin las funciones de IAM y credenciales por completo y utilizar S3 Pre-firmado Url. Con pre-firmado direcciones Url puede crear un seguro, limitado en el tiempo la imagen de enlaces que permitan el acceso no autenticado a lo contrario de objetos privados en el S3. En otras palabras:

  • El S3 objetos son todos privados, nadie más que el servidor web tenga acceso a ellos.
  • Cuando el usuario inicia sesión en generar pre-firmado direcciones Url de sus imágenes. Estas direcciones Url dará al usuario el acceso temporal a su contenido (por ejemplo, con 1 hora de validez).
  • Cuando el enlace caduca (por ejemplo, después de 1 hora) ya no ofrece el acceso a la imagen del usuario.

De esta manera usted puede conseguir lejos sin ningún tipo de usuarios de IAM o de las funciones de IAM para los usuarios de la web.

Aquí es una simple demostración de cómo llevarlo a cabo: S3 Pre-firmado URL de la demo

También puede utilizar pre-firmado Url de la imagen de carga, pero eso es un poco más complicado. Puede ser más fácil de subir las imágenes a su servidor utilizando el estándar de métodos de carga y el servidor carga en S3.

Este es un enfoque más limitado que el uso de Cognito, pero puede ser más fácil de implementar.

Espero que ayude :)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: