Co obejmiemy?
W tym przewodniku zobaczymy, jak użyć zgody „IAM PassRole”. Jako konkretny przykład zobaczymy, jak połączyć instancję EC2 z wiadrem S3 za pomocą zgody PASSROLE.
Ważne terminy i koncepcje
Rola usług AWS: Jest to rola przyjęta przez usługę, aby mogła wykonywać zadania w imieniu użytkownika lub posiadacza konta.
Rola usługi AWS dla instancji EC2: Jest to rola przyjęta przez aplikację działającą w instancji Amazon EC2 w celu wykonywania zadań na koncie użytkownika, które są dozwolone przez tę rolę.
Rola powiązana z usługą AWS: Jest to rola, która jest wstępnie zdefiniowana i bezpośrednio dołączona do usługi AWS, takiej jak rola RDS usługi dla uruchomienia RDS DB.
Korzystanie z zgody PASSRole na podłączenie instancji EC2 z S3
Wiele usług AWS potrzebuje roli w konfiguracji, a ta rola jest przekazywana/administrowana przez użytkownika. W ten sposób usługi zakładają/przyjmują rolę i wykonują zadania w imieniu użytkownika. W przypadku większości usług rola musi zostać przekazana raz podczas konfigurowania tej usługi. Użytkownik wymaga uprawnień do przekazania roli do usługi AWS. To dobra rzecz z punktu widzenia bezpieczeństwa, ponieważ administratorzy mogą kontrolować, które użytkownicy mogą przekazać rolę do usługi. Zezwolenie „PassRole” jest przyznawane przez użytkownika dla jego użytkownika, roli lub grupy IAM w celu przekazania roli usługi AWS.
Aby opracować poprzednią koncepcję, rozważ przypadek, gdy aplikacja działająca w instancji EC2 wymaga dostępu do wiadra S3. W tym celu możemy dołączyć rolę IAM w tym przypadku, aby ta aplikacja uzyskała zgodę S3 zdefiniowaną w roli. Ta aplikacja będzie wymagała tymczasowych poświadczeń do celów uwierzytelniania i autoryzacji. EC2 otrzymuje tymczasowe poświadczenia bezpieczeństwa, gdy rola kojarzy się z instancją uruchamiającą naszą aplikację. Te poświadczenia są następnie udostępniane naszemu aplikacji w celu uzyskania dostępu do S3.
Aby przyznać użytkownikowi IAM możliwość przekazania roli usługi EC2 w momencie uruchomienia instancji, potrzebujemy trzech rzeczy:
Zróbmy to w bardziej pragmatyczny sposób. Mamy użytkownika IAM o ograniczonym pozwoleniu. Następnie załączamy zasady wbudowane, aby uruchomić instancje EC2 i pozwolenie na przekazanie roli IAM do usługi. Następnie tworzymy rolę dostępu S3; Nazwijmy to „S3Access”. I dołącz do tego politykę IAM. W tej roli zezwalamy jedynie na odczyt danych S3 za pomocą zasady zarządzanej AWS „Amazons3ReadonlyAccess”.
Kroki, aby stworzyć rolę
Krok 1. Z konsoli IAM administratora (root) kliknij „Rola”, a następnie wybierz „Utwórz rolę”.
Krok 2. Na stronie „Wybierz encji zaufanej” wybierz „Usługę AWS” w ramach „typu encji zaufanej”.
Krok 3. W „Case użycia” wybierz przycisk opcji odpowiadający „EC2” dla „Przypadki użycia innych usług AWS”:
Krok 4. Na następnej stronie przypisz zasadę „Amazons3ReadOnlyAccess”:
Krok 5. Podaj nazwę swojej roli (w naszym przypadku „S3Access”). Dodaj opis tej roli. Poniższa polityka zaufania jest tworzona automatycznie za pomocą tej roli:
„Wersja”: „2012-10-17”,
"Oświadczenie": [
„Efekt”: „Pozwól”,
"Działanie": [
„STS: Zakład”
],
"Główny":
"Praca": [
„EC2.Amazonaws.com "
]
]
Krok 6. Kliknij „Utwórz rolę”, aby stworzyć rolę:
Polityka IAM dla użytkownika
Niniejsza polityka zapewnia pełne uprawnienia EC2 i pozwolenia na powiązanie roli „S3Access” z instancją.
Krok 1. Z konsoli IAM kliknij zasady, a następnie „Utwórz zasady”.
Krok 2. Na nowej stronie wybierz kartę JSON i wklej następujący kod:
„Wersja”: „2012-10-17”,
"Oświadczenie": [
„Efekt”: „Pozwól”,
„Action”: [„EC2:*”],
"Ratunek":"*"
,
„Efekt”: „Pozwól”,
„Action”: „IAM: PASSROLE”,
„Zasób”: „ARN: AWS: IAM :: Account_ID: Rola/S3Access”
]
Wymień pogrubiony tekst „ID konta”Z identyfikatorem konta użytkownika.
Krok 3. (Opcjonalnie) Podaj tagi do swojej polityki.
Krok 4. Umieść odpowiednią nazwę dla zasad (w naszym przypadku „IAM-User-Policy”) i kliknij przycisk „Utwórz zasady” i załącz tę zasadę do użytkownika IAM.
Dołączanie roli „S3Access” do instancji EC2
Teraz przywiązujemy tę rolę do naszego instancji. Wybierz swoją instancję z konsoli EC2 i przejdź do „Action> Security> Modyfikuj rolę IAM”. Na nowej stronie wybierz rolę „S3Access” z menu rozwijanego i zapisz ją.
Weryfikacja konfiguracji
Teraz sprawdzimy, czy nasza instancja EC2 jest w stanie uzyskać dostęp do naszego wiadra S3 utworzonego przez administratora. Zaloguj się do instancji EC2 i zainstaluj aplikację AWS CLI. Teraz uruchom następujące polecenie w tej instancji EC2:
$ AWS S3 LS
Ponownie uruchom poprzednie polecenie z konta IAM skonfigurowane na komputerze lokalnym. Zauważysz, że polecenie jest pomyślnie wykonywane w instancji EC2, ale na komputerze lokalnym otrzymaliśmy błąd „Odmówionego dostępu”:
Błąd jest oczywisty, ponieważ udzieliliśmy jedynie zgody S3 dostępu do instancji EC2, ale nie użytkownikowi IAM i jakiejkolwiek innej usłudze AWS. Kolejną ważną rzeczą, na którą należy zwrócić uwagę, jest to, że nie udało nam się publicznie dostępne wiadro i jego obiekty.
Wniosek
W tym przewodniku pokazaliśmy, jak używać zgody PassRole w AWS. Udało nam się połączyć EC2 z S3. Jest to bardzo ważna koncepcja, jeśli zależy Ci na przyznaniu najmniejszych przywilejów użytkownikom IAM.