Quiero crear o actualizar un archivo de imagen con protección de contraseña. El escenario es que nuestro equipo de infraestructura cargará un archivo de imagen en AWS S3. Más tarde queremos proteger este archivo de imagen con contraseña de java. La contraseña se generará automáticamente y no se divulgará a nadie. Si alguien intenta descargar la imagen directamente desde AWS S3, no debería abrirse. Server-Side encryption en AWS S3
CopyObjectRequest request = new CopyObjectRequest(bucket, key, bucket, key); ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setServerSideEncryption(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); request.setNewObjectMetadata(objectMetadata); s3client.copyObject(request)Pero todavía puedo abrirlo. Hay alguna otra forma de hacerlo.
El cifrado del lado del servidor simplemente cifra los datos almacenados en el disco. No es un método para proteger el acceso a los datos.
Más bien, parece que su requisito es:
La solución más adecuada sería utilizar una URL prefirmada de Amazon S3 .
De forma predeterminada, todos los objetos de Amazon S3 son privados. Luego puede agregar permisos para que las personas puedan acceder a sus objetos. Esto se puede hacer a través de:
Se puede usar una URL prefirmada para otorgar acceso a los objetos de S3 como una forma de "anular" los controles de acceso. Se puede acceder a un objeto normalmente privado a través de una URL añadiendo una hora de caducidad y una firma. Esta es una excelente manera de servir contenido privado sin necesidad de un servidor web.
Sería responsabilidad de su aplicación autenticar adecuadamente a los usuarios para determinar si se les permite el acceso a los objetos en S3. Si se les otorga acceso, su aplicación debe generar una URL prefirmada como un enlace autenticado a los objetos. La URL solo será válida durante un tiempo limitado .
La mejor manera de hacerlo es tener una aplicación de back-end (probablemente ejecutándose en Amazon EC2 o AWS Lambda) que realice la autenticación y luego genere la URL. Su usuario autenticado puede usar la URL prefirmada para descargar el objeto durante el período de tiempo asignado (por ejemplo, 5 minutos).
Este método tiene varios beneficios sobre el uso de una contraseña: