Algunos archivos en mi categoría están configurados en public-read
(ACL). Así que leí en alguna parte que establecer una política de depósito puede establecer automáticamente todos los archivos de un segmento en privado.¿Hay conflicto entre las políticas de depósito y las URL firmadas?
bucketname
es un marcador de posición para el nombre del cubo real. Mi política de cubo es:
{
"Version": "2008-10-17",
"Id": "Policy1331182170360",
"Statement": [
{
"Sid": "Stmt1331182162671",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucketname/*"
}
]
}
En una de mis reguladores, que tengo:
s3 = Aws::S3.new(APP_CONFIG['amazon_access_key_id'], APP_CONFIG['amazon_secret_access_key'])
bucket_gen = Aws::S3Generator::Bucket.create(s3, APP_CONFIG['amazon_bucket_name'])
signed_url = bucket_gen.get("#{URI.unescape(URI.parse(URI.escape(@song.encoded_file_url)).path[1..-1])}", 10.minute)
redirect_to signed_url and return
estoy re-dirigido, pero me siguen dando acceso denegado. Sin embargo, si elimino la política de depósito, me vuelven a dirigir a una URL firmada y todo funciona bien.
Inicialmente, pensé que había un problema con la forma en que estaba firmando mis URL. Así que abrí Amazon Web Console y configuré manualmente los permisos del archivo en privado. Para esta prueba, eliminé la política de cubos. Navegado a la URL del archivo (no firmado) y no se pudo acceder. Que es normal En la segunda prueba, firmé la URL y pude acceder al archivo. Lo que significa que no hay nada malo con la forma en que estaba firmando.
¿Hay un conflicto entre las políticas de depósito y las URL firmadas?
Buen punto. En este caso, ¿qué necesita cambiar en mi política para resaltar su punto? –
Esto sería mucho más sencillo si Amazon Web Console nos permitiera cambiar por lotes la lista de control de acceso de todos los archivos a archivos privados –