subir que name como aws archivos acceso amazon-s3 amazon-web-services user-permissions amazon-iam

amazon-s3 - que - s3 aws url



Necesito un usuario de Amazon S3 con acceso completo a un solo cubo (7)

Tengo un usuario foo con los siguientes privilegios (no es miembro de ningún grupo):

{ "Statement": [ { "Sid": "Stmt1308813201865", "Action": "s3:*", "Effect": "Allow", "Resource": "arn:aws:s3:::bar" } ] }

Sin embargo, ese usuario parece incapaz de cargar o hacer gran cosa hasta que otorgue acceso completo a los usuarios autenticados (que pueden aplicarse a cualquier persona). Esto todavía no le permite al usuario cambiar el permiso ya que boto está lanzando un error después de una carga cuando intenta hacer hacer key.set_acl(''public-read'') .

Lo ideal sería que este usuario tuviera acceso completo a la bar herramientas y nada más, ¿qué estoy haciendo mal?



Existe una documentación oficial de AWS en Escribir políticas de IAM: Cómo otorgar acceso a un cubo de Amazon S3

Simplemente copie y pegue la regla apropiada y cambie la clave de "Recurso" al ARN de su depósito en todas las Declaraciones.

Para el acceso programático, la política debe ser:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::bar"] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::bar/*"] } ] }

Y para el acceso de consola, el acceso debe ser:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::bar*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::bar"] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::bar/*"] } ] }


Funciona para mi:

{ "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads", "s3:ListBucketVersions" ], "Resource": "arn:aws:s3:::bucket_name_here" }, { "Effect": "Allow", "Action": [ "s3:*Object*", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name_here/*" } ] }


La respuesta de @ cloudberryman es correcta, pero me gusta hacer las cosas lo más cortas posible. Esta respuesta se puede reducir a:

{ "Statement":[ { "Effect":"Allow", "Action":"S3:*", "Resource":[ "arn:aws:s3:::bar", "arn:aws:s3:::bar/*" ] } ] }



Si te has estado tirando de los pelos porque no puedes entender por qué Cyberduck no puede establecer las ACL de los objetos, pero funciona con otro cliente (como Transmisión de pánico), aquí está la solución:

Necesita agregar s3:GetBucketAcl a su lista de Acciones, por ejemplo:

{ "Statement": [ { "Sid": "Stmt1", "Action": [ "s3:GetBucketAcl", "s3:ListBucket", "s3:DeleteObject", "s3:GetObject", "s3:GetObjectAcl", "s3:PutObject", "s3:PutObjectAcl" ], "Effect": "Allow", "Resource": "arn:aws:s3:::your-bucket-name" } ] }

Por supuesto, no necesita hacer esto si es menos restrictivo con s3:* pero creo que es bueno saberlo.


Debe otorgar el permiso s3: ListBucket al propio depósito. Pruebe la política a continuación.

{ "Statement": [ { "Effect": "Allow", "Action": "S3:*", "Resource": "arn:aws:s3:::bar/*", "Condition": {} }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": "arn:aws:s3:::bar", "Condition": {} } ] }