Korzystam z polecenia „aws ec2 run-instances” (z interfejsu wiersza poleceń AWS (CLI) ), aby uruchomić instancję Amazon EC2 . Chcę ustawić rolę IAM dla instancji EC2, którą uruchamiam. Rola IAM jest skonfigurowana i mogę z powodzeniem jej używać podczas uruchamiania instancji z internetowego interfejsu użytkownika AWS. Ale kiedy próbuję to zrobić za pomocą tego polecenia i opcji „--iam-instance-profile”, to się nie udało. Wykonanie „pomocy dla aws ec2 run-instance” pokazuje pola Arn = i Name = dla wartości. Kiedy próbuję wyszukać Arn przy użyciu „aws iam list-instance-profile”, pojawia się następujący komunikat o błędzie:
Wystąpił błąd klienta (AccessDenied): Użytkownik: arn: aws: sts :: xxxxxxxxxxxx: przejęta rola / shell / i-15c2766d nie jest autoryzowany do wykonywania: iam: ListInstanceProfiles w zasobie: arn: aws: iam :: xxxxxxxxxxxx: instancja -profil/
(gdzie xxxxxxxxxxxx to mój 12-cyfrowy numer konta AWS)
Poszukałem ciągu Arn za pośrednictwem internetowego interfejsu użytkownika i użyłem go poprzez „--iam-instance-profile Arn = arn: aws: iam :: xxxxxxxxxxxx: instance-profile / shell” w poleceniu run-instances, i to nie powiodło się z :
Wystąpił błąd klienta (UnauthorizedOperation): Nie masz uprawnień do wykonania tej operacji.
Jeśli całkowicie zrezygnuję z opcji „--iam-instance-profile”, instancja uruchomi się, ale nie będzie miała potrzebnego ustawienia roli IAM. Wydaje się, że to uprawnienie ma coś wspólnego z używaniem „--iam-instance-profile” lub dostępem do danych IAM. Powtórzyłem kilka razy w przypadku usterki AWS (zdarzają się czasem) i bez powodzenia.
Podejrzewałem, że być może istnieje ograniczenie, że instancja z rolą IAM nie może uruchomić instancji z silniejszą rolą IAM. Ale w tym przypadku instancja, w której wykonuję polecenie, ma tę samą rolę IAM, z której próbuję skorzystać. o nazwie „shell” (chociaż próbowałem też użyć innego, bez powodzenia).
Czy ustawienie roli IAM nie jest nawet dozwolone z poziomu instancji (poprzez poświadczenia roli IAM)?
Czy do korzystania z ról IAM potrzebne jest jakieś wyższe uprawnienie do roli IAM, niż jest to potrzebne do uruchomienia zwykłej instancji?
Czy „--iam-instance-profile” jest właściwym sposobem na określenie roli IAM?
Czy muszę użyć podzbioru ciągu Arn lub sformatować go w inny sposób?
Czy jest możliwe skonfigurowanie roli IAM, która może wykonywać dostęp do dowolnej roli IAM (może „Super Root IAM” ... tworzą tę nazwę)?
Do Twojej wiadomości, wszystko dotyczy Linuksa działającego w instancjach. Ponadto uruchamiam to wszystko z instancji, ponieważ nie mogłem zainstalować tych narzędzi na pulpicie. To i nie chcę umieszczać moich poświadczeń użytkownika IAM na żadnej pamięci AWS, zgodnie z zaleceniami AWS tutaj .
po odpowiedzi:
Nie wspomniałem o zezwoleniu na instancję uruchamiania „PowerUserAccess” (w porównaniu z „AdministratorAccess”), ponieważ nie zdawałem sobie sprawy, że w momencie zadawania pytania potrzebowałem dodatkowego dostępu. Zakładałem, że rolą IAM były „informacje” dołączone do premiery. Ale tak naprawdę to coś więcej. To jest udzielenie pozwolenia.
źródło
Uruchomienie instancji EC2 z rolą IAM wymaga dostępu administracyjnego do narzędzia IAM. Ma to zastosowanie nawet wtedy, gdy nowa instancja ma mieć dokładnie taką samą rolę jak instancja wykonująca uruchomienie. Instancja, z której uruchamiam, miała uprawnienia „PowerUserAccess”, które pozwalały na uruchomienie instancji, ale nie miały dostępu do roli IAM. Gdy podniosłem uprawnienia w instancji uruchamiania do „AdministratorAccess”, to zadziałało.
Ponieważ role IAM udzielają uprawnień, należy wyraźnie rozwiązać problem bezpieczeństwa. Nie chcesz, aby role IAM były środkiem umożliwiającym eskalację uprawnień. Ale oznacza to również, że w celu przyznania dowolnej roli IAM instancja uruchamiająca musi mieć „AdministratorAccess” lub korzystać z dostępu / tajnych kluczy użytkownika (za takim pozwoleniem) z poziomu instancji (niezalecane), co pozwoliłoby na przyznanie dowolnej roli IAM.
Przydałaby się możliwość uruchomienia instancji z tym samym zezwoleniem (ta sama rola IAM), co posiadanie przez instancję wykonującą uruchomienie, ale EC2 lub IAM albo nie mają tego poziomu szczegółowości, albo nie mają środków, aby bezpiecznie to zweryfikować .
źródło