2013-10-17 17 views
6

ho cercato di caricare s3 e quando vedo i log dal secchio s3 registra questo è quello che dice:Accesso negato caricati a S3

mybucket-me [17/Oct/2013:08:18:57 +0000] 120.28.112.39 
arn:aws:sts::778671367984:federated-user/[email protected] BB3AA9C408C0D26F 
REST.POST.BUCKET avatars/dean%2540player.com/4.png "POST/HTTP/1.1" 403 
AccessDenied 231 - 132 - "http://localhost:8080/ajaxupload/test.html" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17" - 

ho ottenuto un accesso negato. Da dove punta penso che l'unica cosa che mi manca è l'aggiunta della politica del bucket. Quindi ecco qui.

Utilizzando la mia e-mail potrei accedere alla mia app e caricare un avatar. Il nome del bucket in cui voglio mettere il mio avatar è mybucket-me e in quanto ha un sub bucket chiamato avatar.

-mybucket-me 
-avatars 
    [email protected] //dynamic based on who are logged in 
    -myavatar.png //image uploaded 

Come faccio ad aggiungere una politica secchio così ho potuto concedere una federata come me di caricare in s3 o qual è l'affermazione corretta che vorrei aggiungere la mia politica secchio in modo che possa concedere ho il permesso di caricare nel nostro secchio?

risposta

3

È possibile allegare la seguente politica per il secchio:

{ 
    "Version": "2008-10-17", 
    "Id": "Policy1358656005371", 
    "Statement": [ 
     { 
      "Sid": "Stmt1354655992561", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:sts::778671367984:federated-user/[email protected]"     
       ] 
      }, 
      "Action": [ 
       "s3:List*", 
       "s3:Get*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::my.bucket", 
       "arn:aws:s3:::my.bucket/*" 
      ] 
     } 
    ] 
} 

di conferire al utente federato [email protected] read-only autorizzazioni per 'my.bucket'.

Questa politica non è molto gestibile in quanto specifica in particolare questo utente. Per dare accesso solo a determinati utenti federati in un modo più scalabile, sarebbe meglio farlo quando chiami GetFederationToken. Se pubblichi il tuo codice STS posso aiutarti ad assegnare la politica lì, ma è molto simile a quanto sopra.

+0

ciao, scusa per il ritardo di risposta. Sto usando il caricamento del browser s3, abbiamo un'API che chiamiamo che ci fornisce le credenziali. Ecco un link in cui sono pubblicati quasi tutti i codici rilevanti. [collegamento] (http://stackoverflow.com/questions/19401936/signaturedoesnotmatch-browser-based-upload-to-s3?noredirect=1#comment28781719_19401936) –

+0

Questo va bene le azioni sono solo "List & Get"? Quello che sto cercando di fare è un metodo di upload o post. Anche il tuo corretto ciò di cui ho bisogno è il modo scalabile, diversi utenti caricheranno sul secchio. Per favore aiuto. –

+0

Devi modificare le azioni in base alle tue esigenze, solo "s3: *" ti darà accesso a tutte le azioni S3. Che lingua stai usando? Inserisci il codice che hai finora – prestomation

1

caricare su S3 secchio, è necessario aggiungere/Crea criterio di IAM/di gruppo, ad esempio:

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

Dove arn:aws:s3:::test è il tuo nome Amazon Resource (ARN).

Fonte: Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket

correlati: