Esta es mi política de depósitos:
{ "Version": "2012-10-17", "Id": "Policy3451901640290", "Statement": [ { "Sid": "Stmt3451901619319", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucket1/*" } ] }Y este es mi corazón :
<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <ExposeHeader>ETag</ExposeHeader> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration>Todos los archivos dentro de mi cubo deben ser accesibles para lectura para todos, pero solo visibles a través de mi sitio web. ¿Existe una manera simple de denegar el acceso directo a S3?
ACTUALIZAR
Intenté agregar esto a mi política:
"Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} }De todos modos, puedo acceder a todos mis archivos fuera de mi sitio web directamente a través de S3. En su lugar, me gustaría algo como esto:
Supongamos que tengo este archivo en mi cubo:
https://s3-eu-west-1.amazonaws.com/bucket1/example.jpgSi un usuario va a ese enlace ahora puede ver esa imagen. En cambio, me gustaría ser accesible solo desde mi sitio web.
Digamos que en mi example.com tengo esto:
<img src="https://s3-eu-west-1.amazonaws.com/bucket1/example.jpg" />