2013-07-20 12 views
8

Szukam zabezpieczenia blokady wiadra S3 ze względów bezpieczeństwa - przechowuję obrazy wdrażania w wiadrze.Zasady dotyczące zasobników na Amazon S3: Jak zablokować dostęp tylko do EC2 Instancje

Co chcę zrobić, to utworzyć zasadę wiadro, która obsługuje anonimowe pobieranie przez http tylko z instancji EC2 na moim koncie.

Czy istnieje sposób, aby to zrobić?

Przykładem polityki, który próbuję użyć (nie pozwoli sobie być stosowane):

{ 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::[my bucket name]", 
     "Condition": { 
     "ArnEquals": { 
      "aws:SourceArn": "arn:aws:ec2:us-east-1:[my account id]:instance/*" 
     } 
     } 
    } 
    ] 
} 
+0

Dlaczego dostęp anonimowy? –

+0

Ponieważ jest to łatwiejsze do wdrożenia w PowerShellu lub skryptach wsadowych. Rozwiązałem to już przez użycie naprawdę długiej UserAgent w żądaniu i zablokowanie tego w ten sposób. – Doug

+0

Czy możesz napisać, jak to zrobiłeś? – David

Odpowiedz

3

Wystarczy, aby wyjaśnić, jak to się zwykle odbywa. Tworzysz zasadę IAM, dołączasz ją do nowej lub istniejącej roli i dekorujesz instancję EC2 rolą.

Szczegóły poniżej:

  1. S3 wiadra domyślnego blokowania wyjątkiem mojego właściciela. Tworzysz więc swoje wiadro i przesyłasz dane. Za pomocą przeglądarki można zweryfikować, że pliki nie są dostępne, próbując https://s3.amazonaws.com/MyBucketName/file.ext. Powinien wrócić z kodem błędu "Odmowa dostępu" w xml. Jeśli pojawi się kod błędu "NoSuchBucket", adres URL jest nieprawidłowy.

  2. Utwórz zasadę IAM na podstawie arn: aws: iam :: aws: policy/AmazonS3ReadOnlyAccess. Zaczyna wyglądać jak wycinek poniżej. Spójrz na klawisz "Zasób" i zauważ, że jest ustawiony na dziką kartę. Wystarczy zmodyfikować to być ARN swojego wiadra, więc linia staje się ex: "zasób": "ARN AWS: s3 ::: MyBucketName/*"

  3. Teraz masz politykę, co chcesz udekorować swoje instancje rolą IAM, która automatycznie przyznaje tę zasadę. Wszystko bez kluczy uwierzytelniających, które muszą znajdować się w instancji. Przejdź do Role, stwórz nową rolę, stwórz rolę Amazon EC2, znajdź stworzone zasady, a Twoja rola jest gotowa.

  4. Na koniec utwórz swoją instancję i dodaj utworzoną właśnie rolę IAM. Jeśli maszyna ma już własną rolę, musisz po prostu połączyć dwie role w nową dla maszyny. Jeśli urządzenie jest już uruchomione, nie otrzyma nowej roli do czasu ponownego uruchomienia.

  5. Teraz powinieneś być dobry. Maszyna ma prawa dostępu do udziału s3. Teraz możesz użyć poniższego polecenia, aby skopiować pliki do instancji. Uwaga trzeba określić regiony

    AWS S3 cp --region nam-wschodniej-1 s3: //MyBucketName/MyFileName.tgz/home/ubuntu

Należy pamiętać, że termin "Bezpieczeństwo przez zaciemnienie" jest tylko rzeczą w filmach. Albo coś jest bezpieczne, albo jest niepewne.

Powiązane problemy