2012-02-22 16 views

Respuesta

17

Los permisos que está viendo en la AWS Management Console directamente se basan en la inicial y comparativamente simple Access Control Lists (ACL) disponible para S3, que esencialmente diferenciada LEA y WRITE permisos, consulte Specifying a Permission:

  • LEER - Permite al concesionario enumerar los objetos en el cubo
  • ESCRIBIR - permite concesionario para crear, sobrescribir, y eliminar cualquier objeto en el cubo

Estas limitaciones se han abordado mediante la adición de Bucket Policies (permisos aplicados en el nivel de cubo) y IAM Policies (permisos aplican sobre el nivel de usuario), y los tres también se pueden usar juntos (lo que puede volverse bastante complejo, como se explica a continuación), ver Access Control para ver la imagen completa.

Su caso de uso probablemente solicite una política de cubeta respectiva, que también puede agregar directamente desde la consola S3. Al hacer clic en Agregar política de segmento, se abre el Editor de política de cubo, que presenta enlaces a un par de muestras, así como la muy recomendada AWS Policy Generator, que le permite ensamblar una política que aborde su caso de uso.

Para un cubo de otro modo bloqueado, la forma más simple podría ser similar (por favor, asegúrese de ajustar principal y Recursos a sus necesidades):

{ 
    "Statement": [ 
    { 
     "Action": [ 
     "s3:PutObject" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::<bucket_name>/<key_name>", 
     "Principal": { 
     "AWS": [ 
      "*" 
     ] 
     } 
    } 
    ] 
} 

Dependiendo de su caso de uso, se puede Componga fácilmente políticas bastante complejas combinando varias Permitir y Denegar acciones, etc., esto obviamente también puede dar lugar a permisos inadvertidos, por lo que las pruebas adecuadas son la clave habitual; en consecuencia, tenga en cuenta las implicaciones al usar Using ACLs and Bucket Policies Together o IAM and Bucket Policies Together.

Finalmente, es posible que desee echar un vistazo a mi respuesta al Problems specifying a single bucket in a simple AWS user policy también, que aborda otro inconveniente comúnmente encontrado con las políticas.

5

Puede adjuntar una política de no eliminación a su depósito s3.Por ejemplo, si no desea que este usuario de IAM para llevar a cabo cualquier operación de eliminación de los cubos o cualquier objeto, se puede establecer algo como esto:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1480692207000", 
      "Effect": "Deny", 
      "Action": [ 
       "s3:DeleteBucket", 
       "s3:DeleteBucketPolicy", 
       "s3:DeleteBucketWebsite", 
       "s3:DeleteObject", 
       "s3:DeleteObjectVersion" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::*" 
      ] 
     } 
    ] 
} 

Además, puede revisar su política con el simulador de la política https://policysim.aws.amazon.com para comprobar si su configuración es lo que esperaba o no.

Espero que esto ayude!

2

Esto funcionó perfecto. Gracias a Pung Worathiti Manosroi. combinó su política mencionada como por debajo:

{  

"Statement": [  

    { 
     "Effect": "Allow", 
     "Action": [ 
      "s3:GetObject", 
      "s3:PutObject", 
      "s3:GetObjectAcl", 
      "s3:PutObjectAcl", 
      "s3:ListBucket", 
      "s3:GetBucketAcl", 
      "s3:PutBucketAcl", 
      "s3:GetBucketLocation" 
     ], 
     "Resource": "arn:aws:s3:::mybucketname/*", 
     "Condition": {} 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "*", 
     "Condition": {} 
    }, 
    { 
     "Effect": "Deny", 
     "Action": [ 
      "s3:DeleteBucket", 
      "s3:DeleteBucketPolicy", 
      "s3:DeleteBucketWebsite", 
      "s3:DeleteObject", 
      "s3:DeleteObjectVersion" 
     ], 
     "Resource": "arn:aws:s3:::mybucketname/*",  

     "Condition": {}  

    } 
] 
}