2015-01-23 16 views
5

Próbuję utworzyć uprawnienia IAM, aby jgit mógł uzyskać dostęp do katalogu w jednym z moich segmentów.Konfiguracja IAM do uzyskiwania dostępu do jgit na 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>"] 
    } 
    ] 
} 

Niestety to powoduje błąd. Nie jestem pewien, jakie inne działania, które trzeba podjąć, aby to zadziałało. (Trochę nowe w 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 

Zakazany jest oczywiście błąd, ale nie wiem, co należy dodać do IAM. Jakieś pomysły?

[Gdyby dodali też, że próbowałem to w symulatorze polityki i wydawało się, że nie działa.]

Odpowiedz

1

W „403” Błąd może po prostu oznaczać, że kluczem <mydir>/packed-refs nie istnieje. Według https://forums.aws.amazon.com/thread.jspa?threadID=56531:

Amazon S3 zwróci AccessDenied błąd, gdy klucz nie istnieje jest wymagana, a wnioskodawca nie może wyświetlić zawartość wiadra.

Jeśli popychanie po raz pierwszy, że folder nie może istnieć, a zgaduję musisz ListBucket przywileje na dominującej katalogu, aby uzyskać prawidłowe NoSuchKey odpowiedzi. Spróbuj zmienić to pierwsze oświadczenie:

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

Zauważyłem również, że gdy pracował jgit push s3 refs/heads/masterjgit push s3 master nie.

dla przyszłych ludowej: jeśli wszystko, co chcesz zrobić, to założyć wiadro git repos z własnym użytkownika, po polityka bezpieczeństwa wydaje się być wystarczająco dobre: ​​

{ 
    "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>/*" 
      ] 
     } 
    ] 
} 
Powiązane problemy