2012-10-18 11 views
11

Come chiede la domanda, quali sono le autorizzazioni minime richieste per un utente di IAM s3 bloccato per utilizzare correttamente django-storages? Al momento ho usato qualcosa comeQuali autorizzazioni richiedono i django-storages per un utente I3 s3?

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

Che può essere effettivamente eccessivo. Altre idee?

+0

Una cosa che si può sicuramente Strip è la 's3: ListAllMyBuckets' azione. Il backend S3 di django-storages non otterrebbe mai la lista dei tuoi bucket. – vvd

risposta

8

La risposta di Fiver non è sufficiente per eseguire collecttatic negli archivi di django. Ho usato tutto ciò che ha fatto jvc26 ad eccezione di s3: ListAllMyBuckets. Prenderò s3: ListBucketVersions non è necessario neanche.

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

Non sono sicuro al 100% di django-storages, poiché utilizzo cuddly-buddly che si basa sulla porzione S3 di django-storages. Ho appena trovato più semplice da usare e lavorato meglio, più il nome è fantastico!

Comunque, ho un progetto che utilizza Django + S3 ed ho trovato la seguente politica di AWS come il minimo necessario per il mio progetto:

{ 
    "Version": "2008-10-17", 
    "Id": "Policy123", 
    "Statement": [ 
    { 
     "Sid": "Stmt123", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "arn:aws:iam::some-aws-user" 
     }, 
     "Action": "s3:ListBucket", 
     "Resource": "arn:aws:s3:::bucket-name" 
    }, 
    { 
     "Sid": "Stmt234", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "arn:aws:iam::some-aws-user" 
     }, 
     "Action": [ 
     "s3:DeleteObject", 
     "s3:GetObject", 
     "s3:PutObject" 
     ], 
     "Resource": "arn:aws:s3:::bucket-name/*" 
    } 
    ] 
} 

ho vista Django che hanno bisogno di caricare, recuperare ed eliminare così quelli le azioni corrispondenti possono essere usate/omesse in base alle proprie esigenze. Ovviamente, chiunque dovrà modificare il nome dell'utente e del bucket.

Inoltre, proprio per completezza in quanto non era ovvio per me, notare le seguenti limitazioni per quanto riguarda AWS policies:

  • La dimensione massima di una politica è di 20 KB

  • Il valore per Risorsa deve essere il prefisso con il nome del bucket o il nome del bucket e un percorso sotto di esso (bucket/). Se solo il nome del bucket è specificato, senza il trailing/, il criterio si applica al bucket.

  • Ogni criterio deve avere un ID politica univoco (Id)

  • Ogni istruzione in una politica deve avere un ID dichiarazione unica (SID)

  • Ogni politica deve coprire un solo secchio e risorse all'interno di tale secchio (durante la scrittura di una politica, non includere dichiarazioni che si riferiscono ad altre secchi o risorse in altri secchi)

Infine, a chiunque sia tentato di farlo, non modificare il valore della data nella chiave Version, Amazon utilizza questo valore per analizzare il formato della politica.

Spero che questo aiuti!

0

che funziona per me:

{ 
    "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/*" 
     } 
    ] 
} 
Problemi correlati