2015-01-23 16 views
5

Sto tentando di creare autorizzazioni IAM in modo che jgit possa accedere a una directory in uno dei miei bucket.Configurazione IAM per accedere a jgit su S3

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

Purtroppo genera un errore. Non sono sicuro di quali altre azioni consentite debbano accadere perché funzioni. (Un po 'nuovo allo IAM).

Caused by: java.io.IOException: Reading of '<mydir>/packed-refs' failed: 403 Forbidden 
    at org.eclipse.jgit.transport.AmazonS3.error(AmazonS3.java:519) 
    at org.eclipse.jgit.transport.AmazonS3.get(AmazonS3.java:289) 
    at org.eclipse.jgit.transport.TransportAmazonS3$DatabaseS3.open(TransportAmazonS3.java:284) 
    at org.eclipse.jgit.transport.WalkRemoteObjectDatabase.openReader(WalkRemoteObjectDatabase.java:365) 
    at org.eclipse.jgit.transport.WalkRemoteObjectDatabase.readPackedRefs(WalkRemoteObjectDatabase.java:423) 
    ... 13 more 
Caused by: java.io.IOException: 
<?xml version="1.0" encoding="UTF-8"?> 
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>...</RequestId><HostId>...</HostId></Error> 
    at org.eclipse.jgit.transport.AmazonS3.error(AmazonS3.java:538) 
    ... 17 more 

Il 403 Forbidden è ovviamente l'errore, ma non è sicuro di quello che deve essere aggiunto al IAM. Qualche idea?

[avrebbe dovuto aggiungere, anche, che ho provato questo fuori nel simulatore della politica e sembrava di lavorare lì.]

risposta

1

Il "403" errore può significare semplicemente che la chiave <mydir>/packed-refs non esiste. Secondo https://forums.aws.amazon.com/thread.jspa?threadID=56531:

Amazon S3 restituirà un errore AccessDenied quando viene richiesta una chiave inesistente e il richiedente non è permesso di elencare il contenuto del secchio.

Se si sta spingendo per la prima volta, tale cartella non potrebbe esistere, e sto cercando di indovinare che avrebbe bisogno ListBucket privilegi sulla directory genitore per ottenere la corretta NoSuchKey risposta. Prova a cambiare che prima dichiarazione a:

{ 
    "Effect": "Allow", 
    "Action": ["s3:ListBucket"], 
    "Resource": ["arn:aws:s3:::<mybucket>/*"] 
} 

Ho anche notato che jgit push s3 refs/heads/master funzionato quando jgit push s3 master no.

per il futuro popolare: se tutto quello che volete fare è di creare un secchio git pronti contro termine con il proprio utente, la seguente politica di sicurezza sembra essere abbastanza buono:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::<bucketname>" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject", 
       "s3:GetObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::<bucketname>/*" 
      ] 
     } 
    ] 
} 
Problemi correlati