2013-10-17 26 views
6

Próbowałem przesyłanie do S3 i kiedy widzę dzienniki z wiadra s3 rejestruje to, co jest napisane:Access Denied przesyłanie do 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" - 

Mam odmowa dostępu. Skąd to wskazuje, myślę, że jedyną rzeczą, której mi brakuje, jest dodawanie zasad dotyczących kubełków. Więc idzie.

Za pomocą mojego e-maila mogłem zalogować się do mojej aplikacji i załadować awatar. Nazwa kubełka, w której chcę umieścić mój awatar, to mybucket-me, a także, że ma on awatar dodatkowy.

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

Jak dodać politykę łyżki więc mogę przyznać federacyjnych, takich jak ja, aby przesłać w s3 lub co jest słuszne jest stwierdzenie, że dodam na mojej polityki wiadro więc może udzielić ja pozwolenie na przesłanie do naszego wiadra?

Odpowiedz

3

można dołączyć następujące zasady do wiadra:

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

udzielenia użytkownika federacyjnego [email protected] tylko do odczytu uprawnienia 'my.bucket.

Ta zasada nie jest łatwa w utrzymaniu, ponieważ w szczególności nazywa tego użytkownika. Aby umożliwić dostęp tylko do niektórych użytkowników stowarzyszonych w bardziej skalowalny sposób, byłoby lepiej zrobić to, gdy wywołasz GetFederationToken. Jeśli opublikujesz swój kod STS, pomogę ci w przypisaniu tej zasady, ale jest bardzo podobny do powyższego.

+0

Cześć, przepraszam za późną odpowiedź. Korzystam z wysyłania przeglądarki s3, mamy interfejs API, który nazywamy, który daje nam dane uwierzytelniające. Oto link, w którym opublikowany jest prawie cały odpowiedni kod. [link] (http://stackoverflow.com/questions/19401936/signaturedoesnotmatch-browser-based-upload-to-s3?noredirect=1#comment28781719_19401936) –

+0

Czy to będzie w porządku, akcje to tylko "List & Get"? Co próbuję zrobić, to metoda przesyłania lub publikowania. Również twój poprawny, czego potrzebuję, to skalowalny sposób, inny użytkownik będzie przesyłać na wiadrze. Proszę pomóż. –

+0

Musisz zmienić akcje na wszystko, czego potrzebujesz, po prostu "s3: *" da ci dostęp do wszystkich działań S3. W jakim języku się posługujesz? Opublikuj dotychczasowy kod – prestomation

1

Aby przesłać do S3 wiadra, trzeba dodać/IAM/Tworzenie zasad grupy, na przykład:

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

Gdzie arn:aws:s3:::test to nazwa Amazon zasobów (ARN).

Źródło: Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket

pokrewne: