2012-02-22 32 views

risposta

17

I permessi che state vedendo nel AWS Management Console direttamente si basano sulla iniziale e relativamente semplice Access Control Lists (ACL) disponibile per S3, che essenzialmente differenziata LEGGERE e WRITE autorizzazioni, vedere Specifying a Permission:

  • LEGGI - Consente al concessionario di elencare gli oggetti nel secchio
  • WRITE - Consente concessionario per creare, sovrascrivere ed eliminare qualsiasi oggetto nel secchio

Queste limitazioni sono state affrontate con l'aggiunta di Bucket Policies (autorizzazioni applicate a livello benna) e IAM Policies (autorizzazioni applicate a livello utente), e tutti e tre possono essere utilizzati insieme (che può diventare piuttosto complesso, come indicato di seguito), vedere Access Control per l'intera immagine.

Il tuo caso d'uso probabilmente richiede una rispettiva politica bucket, che puoi aggiungere direttamente dalla console S3. Facendo clic su Aggiungi politica bucket si apre Editor criteri Bucket, che presenta collegamenti a un paio di campioni nonché il raccomandatissimo AWS Policy Generator, che consente di assemblare una politica che si riferisce al caso d'uso.

Per un secchio altrimenti bloccato, la forma più semplice potrebbe essere simile in modo (si prega di assicurare per regolare Principal e Resource alle proprie esigenze):

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

A seconda del caso d'uso, è possibile comporre facilmente politiche piuttosto complesse combinando varie Consenti e Denina azioni, ecc. - questo può ovviamente produrre anche permessi involontari, quindi un test corretto è fondamentale come al solito; di conseguenza, si prega di prendersi cura delle implicazioni quando si utilizza Using ACLs and Bucket Policies Together o IAM and Bucket Policies Together.

Infine, si potrebbe dare un'occhiata alla mia risposta allo Problems specifying a single bucket in a simple AWS user policy, che affronta un altro trabocchetto comunemente riscontrato con le politiche.

5

È possibile allegare una politica di non eliminazione al proprio bucket s3.Per esempio, se non si desidera che l'utente IAM di eseguire qualsiasi operazione di eliminazione di eventuali secchi o altri oggetti, è possibile impostare qualcosa di simile:

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

Inoltre, è possibile controllare la vostra politica con il simulatore di politica https://policysim.aws.amazon.com per controllare se il tuo set up è quello che ti aspettavi o no.

Spero che questo aiuti!

2

Questo ha funzionato perfettamente. Grazie a Pung Worathiti Manosroi. combinato la sua politica citata come di seguito:

{  

"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": {}  

    } 
] 
}