Generator polityki AWS IAM
Zbuduj dokument JSON z akcjami, zasobami i warunkiem – zgodnie z zasadą najmniejszych uprawnień.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Format usługa:Akcja, np. s3:GetObject; gwiazdka działa jako wzorzec (ec2:Describe*).
Puste pole = * (wszystkie zasoby). Ściąga formatów ARN jest pod wynikiem.
Warunek (Condition), opcjonalny
Kilka wartości oddziel przecinkiem.
Dane zmienione. Kliknij „Generuj politykę”, aby odświeżyć wynik.
Polityka IAM
Allow · 2 akcje · 2 zasoby · bez warunku. Wklej JSON w konsoli IAM (Policies → Create policy → JSON) albo użyj polecenia AWS CLI poniżej.
Efekt
zezwolenie
Akcje
Zasoby
Rozmiar
bez białych znaków; limit polityki zarządzanej: 6 144
Polityka IAM (JSON)
AWS CLI: utwórz i przypnij do roli
Zamień NAZWA_ROLI i ID_KONTA na własne. Plik polityka-iam.json pobierzesz przyciskiem wyżej. Przetestuj politykę poza produkcją, np. w IAM Policy Simulator.
Ściąga: akcje i formaty ARN popularnych usług
| Usługa | Typowe akcje | Format ARN zasobu |
|---|---|---|
| S3 (obiekty) | s3:GetObject, s3:PutObject, s3:DeleteObject | arn:aws:s3:::nazwa-bucketa/* |
| S3 (bucket) | s3:ListBucket, s3:GetBucketLocation | arn:aws:s3:::nazwa-bucketa |
| Lambda | lambda:InvokeFunction | arn:aws:lambda:region:konto:function:nazwa |
| DynamoDB | dynamodb:GetItem, dynamodb:Query, dynamodb:PutItem | arn:aws:dynamodb:region:konto:table/nazwa |
| SQS | sqs:SendMessage, sqs:ReceiveMessage, sqs:DeleteMessage | arn:aws:sqs:region:konto:nazwa-kolejki |
| SNS | sns:Publish | arn:aws:sns:region:konto:nazwa-tematu |
| CloudWatch Logs | logs:CreateLogStream, logs:PutLogEvents | arn:aws:logs:region:konto:log-group:nazwa:* |
| IAM | iam:PassRole | arn:aws:iam::konto:role/nazwa |
| EC2 (podgląd) | ec2:Describe* | * (akcje Describe nie obsługują ARN) |
Operatory warunków (Condition)
| Operator | Znaczenie | Przykładowy klucz i wartość |
|---|---|---|
| StringEquals | tekst równy wartości | aws:RequestedRegion = eu-central-1 |
| StringNotEquals | tekst różny od wartości (też gdy klucza brak) | aws:RequestedRegion = eu-central-1 |
| StringLike | wzorzec z * i ? | s3:prefix = raporty/* |
| ArnLike | ARN pasuje do wzorca | aws:SourceArn = arn:aws:sns:eu-central-1:123456789012:* |
| Bool | true / false | aws:SecureTransport = true (tylko HTTPS) |
| IpAddress / NotIpAddress | adres IP w zakresie CIDR / poza nim | aws:SourceIp = 203.0.113.0/24 |
| Null | true = klucza nie ma w żądaniu | s3:x-amz-server-side-encryption = true |
Allow, Deny i domyślna odmowa
Bez żadnej polityki wszystko jest zabronione (niejawna odmowa). Allow otwiera dostęp, a jawny Deny zawsze wygrywa z Allow, także z innej polityki. Dlatego Deny z warunkiem nadaje się do twardych zakazów, np. odrzucania przesyłania obiektów bez nagłówka szyfrowania.
Gdzie wkleić politykę
Konsola IAM → Policies → Create policy → zakładka JSON, albo polecenie AWS CLI z wyniku. Ten generator tworzy politykę tożsamościową (bez Principal): przypinasz ją do użytkownika, grupy lub roli. Polityka bucketa S3 wymaga dodatkowo elementu Principal.
Typowe pułapki
s3:ListBucket działa na ARN bucketa, a s3:GetObject na ARN z „/*”, więc zwykle potrzebne są oba zasoby. Gwiazdka w akcji (s3:*) daje też usuwanie. Version zostaw „2012-10-17”: to wersja języka polityk, nie data utworzenia; starsza 2008-10-17 nie obsługuje zmiennych.
Limity rozmiaru
Według limitów AWS IAM polityka zarządzana może mieć 6 144 znaków, a białe znaki się nie liczą. Polityki inline mają łączne limity: użytkownik 2 048, grupa 5 120, rola 10 240 znaków. Przy przekroczeniu podziel uprawnienia na kilka polityk. Limity mogą się zmienić, sprawdź dokumentację AWS.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator polityki AWS IAM – dokument JSON zgodny z zasadą najmniejszych uprawnień
Generator polityki AWS IAM składa poprawny dokument JSON z pól Effect, Action, Resource i opcjonalnego Condition. Wpisz akcje i ARN-y zasobów, a narzędzie doda właściwą wersję języka polityki, sformatuje wynik do wklejenia w konsoli AWS lub w Terraformie i przygotuje polecenia AWS CLI, które tworzą politykę i przypinają ją do roli.
Co dokładnie robi to narzędzie
Formularz przyjmuje listę akcji (po jednej w linii), listę zasobów w postaci ARN-ów, przełącznik Allow/Deny, opcjonalny identyfikator Sid oraz opcjonalny warunek złożony z operatora, klucza i wartości. Puste linie są pomijane, powtórzenia usuwane, a wynik zawsze przechodzi przez json_encode, więc jest składniowo poprawnym JSON-em – nie zbudujesz tu dokumentu z niedomkniętym nawiasem czy zbędnym przecinkiem w tablicy.
Przed zbudowaniem dokumentu pola są sprawdzane. Akcja musi mieć format usługa:Akcja (np. s3:GetObject albo wzorzec ec2:Describe*) lub być samą gwiazdką. Zasób to pełny ARN z sześcioma członami albo *, a Sid może zawierać tylko litery A–Z i cyfry. Puste pole zasobów oznacza "Resource": "*", o czym generator osobno ostrzega.
Jedna akcja trafia do Action jako pojedynczy ciąg, kilka – jako tablica; tak samo z Resource. Oba warianty AWS akceptuje. Siedem szablonów startowych (odczyt S3, odczyt i zapis S3, wywołanie Lambdy, odczyt DynamoDB, zapis do CloudWatch Logs, podgląd EC2 oraz Deny wymuszający szyfrowanie w S3) pokazuje typowe kształty polityki i jest dobrym punktem wyjścia.
Gotowy dokument skopiujesz w wersji sformatowanej albo w jednej linii lub pobierzesz jako plik polityka-iam.json. Pod wynikiem są dwa polecenia: aws iam create-policy (nazwą polityki zostaje Sid) i aws iam attach-role-policy. Wystarczy podmienić NAZWA_ROLI i ID_KONTA na własne wartości.
Przykład: polityka tylko do odczytu bucketa S3
Szablon „S3: odczyt” ma dwie akcje (s3:GetObject, s3:ListBucket) i dwa zasoby (arn:aws:s3:::my-bucket, arn:aws:s3:::my-bucket/*). Generator zwraca z nich taki dokument, tu w wersji jednowierszowej:
{"Version":"2012-10-17","Statement":[{"Sid":"S3ReadOnly","Effect":"Allow","Action":["s3:GetObject","s3:ListBucket"],"Resource":["arn:aws:s3:::my-bucket","arn:aws:s3:::my-bucket/*"]}]}
Bez białych znaków ma 183 znaki, więc mieści się z dużym zapasem w limicie 6 144 znaków dla polityki zarządzanej. Rozmiar jest pokazywany przy każdym wyniku, a po przekroczeniu limitu narzędzie podpowiada podział na kilka polityk.
Struktura polityki IAM
Polityka to dokument JSON o ustalonym szkielecie. Najważniejsze pola:
| Pole | Za co odpowiada | Przykład |
|---|---|---|
| Version | Wersja języka polityki – używaj najnowszej | 2012-10-17 |
| Statement | Lista instrukcji; każda opisuje jedno uprawnienie | [ … ] |
| Sid | Opcjonalna etykieta instrukcji (dla czytelności) | S3ReadOnly |
| Effect | Czy instrukcja przyznaje czy odbiera dostęp | Allow / Deny |
| Action | Operacje usługi, których dotyczy | s3:GetObject |
| Resource | ARN zasobu, którego dotyczy zezwolenie lub odmowa | arn:aws:s3:::my-bucket/* |
| Condition | Dodatkowy warunek zawężający regułę | StringEquals, aws:RequestedRegion |
Pole Version to nie wersja Twojej polityki, tylko wersja gramatyki AWS. Wartość 2012-10-17 jest obowiązująca dla wszystkich nowych dokumentów – starsza 2008-10-17 nie obsługuje między innymi zmiennych w politykach. Statement może zawierać wiele instrukcji, a każda z osobna łączy jeden Effect z listami akcji i zasobów. Generator buduje jedną instrukcję na dokument; kolejne wygenerujesz osobno i dopiszesz do tablicy Statement albo utworzysz z nich oddzielne polityki.
Zasada najmniejszych uprawnień w praktyce
Najmniejsze uprawnienia to dawanie dokładnie tego, co potrzebne – ani akcji więcej, ani szerszego zakresu zasobów. Zamiast s3:* wypisz konkretne operacje: s3:GetObject i s3:ListBucket dla dostępu tylko do odczytu. Zamiast "Resource": "*" wskaż ARN bucketa i jego zawartości. Dzięki temu skradziony klucz albo błąd w kodzie nie zamieniają się w pełny dostęp do konta.
- Zacznij od jednej akcji i jednego zasobu, potem dokładaj tylko to, co realnie się pojawia w logach odmów.
- Rozdzielaj uprawnienia na osobne instrukcje
Statementlub osobne polityki, gdy dotyczą różnych usług – łatwiej je później czytać i wycofywać. - Dodaj
Condition, gdy chcesz ograniczyć regułę: do jednego regionu (StringEqualsiaws:RequestedRegion), do adresów firmowych (IpAddressiaws:SourceIp) albo do żądań po HTTPS (Booliaws:SecureTransport). Kilka wartości oddzielonych przecinkiem trafia do tablicy, a warunek jest spełniony, gdy pasuje którakolwiek z nich. - Przetestuj dokument w IAM Policy Simulator, zanim podepniesz go do roli produkcyjnej.
Dlaczego "Action": "*" na "Resource": "*" jest niebezpieczne
Instrukcja Allow z gwiazdką w obu polach przyznaje każdą operację każdej usługi na każdym zasobie – to odpowiednik roli administratora. Wystarczy jeden wyciek takiego klucza, by ktoś usunął bazy, uruchomił maszyny do kopania kryptowalut albo wyprowadził dane. Narzędzie wykrywa ten układ i wyświetla ostrzeżenie tuż nad wynikiem, żeby taki dokument nie powstał przez przypadek.
Osobne uwagi generator pokazuje też przy akcji obejmującej całą usługę (np. s3:*, która daje także usuwanie) oraz przy "Resource": "*" dla akcji innych niż Describe i List. Jeśli naprawdę potrzebujesz szerokiego dostępu, ogranicz go choćby do jednej usługi i wskaż ARN-y zamiast gwiazdki w zasobach.
Podobną kontrolę składni znajdziesz w generatorze nagłówka CSP, gdzie ostrzegamy przed 'unsafe-inline' – w obu przypadkach domyślnie „wszystko wolno” jest wygodne, ale kosztuje bezpieczeństwem.
ARN, czyli jak nazywa się zasób
ARN (Amazon Resource Name) jednoznacznie wskazuje zasób i ma stały wzór arn:aws:usługa:region:konto:zasób. Dla S3 region i konto są puste (arn:aws:s3:::my-bucket), bo nazwy bucketów są globalne. Zwróć uwagę na dwa różne ARN-y: arn:aws:s3:::my-bucket to sam bucket (dla s3:ListBucket), a arn:aws:s3:::my-bucket/* to obiekty w nim (dla s3:GetObject). Pomylenie ich to najczęstsza przyczyna „AccessDenied” mimo pozornie poprawnej polityki. Generator wyłapuje obie pomyłki: ostrzega, gdy akcje na obiektach nie mają zasobu z /*, i gdy s3:ListBucket nie ma ARN-u samego bucketa.
Polityki zarządzane a wbudowane (inline)
Ten sam dokument JSON możesz podpiąć na dwa sposoby. Polityka zarządzana istnieje samodzielnie i przypina się do wielu tożsamości – łatwo ją wersjonować i wielokrotnie użyć. Polityka wbudowana (inline) żyje wewnątrz jednej tożsamości i znika razem z nią. Do współdzielonych uprawnień wybieraj zarządzane, do jednorazowych wyjątków – inline.
Różnią się też limitem rozmiaru: polityka zarządzana może mieć 6 144 znaków bez białych znaków, a polityki inline mają limity łączne dla tożsamości (użytkownik 2 048, grupa 5 120, rola 10 240 znaków). Aktualne wartości sprawdź w dokumentacji limitów IAM.
Jeśli politykę wdrażasz jako kod, ten sam JSON przyjmuje zasób aws_iam_policy w Terraformie. Konfigurację instancji, do której podepniesz rolę, przygotujesz w generatorze konfiguracji Terraform dla AWS EC2.
Najczęściej zadawane pytania
Czym różni się Allow od Deny?
Domyślnie każda operacja jest zabroniona, dopóki jakaś polityka Allow jej nie przyzna. Deny ma pierwszeństwo: jawna odmowa przebija każdy Allow, więc używa się jej do twardych zakazów, np. blokady operacji poza jednym regionem.
Kiedy podać jeden ARN, a kiedy listę?
Gdy akcja dotyczy jednego zasobu, wystarczy jeden ARN. Przy odczycie z bucketa S3 zwykle podaje się dwa: sam bucket dla s3:ListBucket i wzorzec bucket/* dla akcji na obiektach. Narzędzie przyjmie oba w osobnych liniach.
Do czego służy pole Sid?
Sid to opcjonalna etykieta instrukcji. Nie wpływa na uprawnienia, ale ułatwia czytanie dłuższych polityk i odnajdywanie konkretnej reguły. W generatorze może zawierać tylko litery i cyfry, a w poleceniu AWS CLI służy też jako nazwa polityki.
Czy warunek Condition jest obowiązkowy?
Nie. Bez warunku reguła obowiązuje zawsze, gdy zgadzają się akcja i zasób. Condition dokłada dodatkowy test, np. aws:RequestedRegion równe eu-central-1, dzięki czemu ta sama akcja jest dozwolona tylko w wybranym regionie.
Czy wygenerowana polityka nadaje się jako polityka bucketa S3?
Nie bezpośrednio. Generator tworzy politykę tożsamościową bez elementu Principal, którą przypinasz do użytkownika, grupy lub roli. Polityka bucketa wymaga dopisania Principal, czyli konta lub roli, której dajesz dostęp.
Jak sprawdzić, czy polityka działa poprawnie?
Użyj IAM Policy Simulator w konsoli AWS: symuluje decyzję dla wybranej akcji i zasobu bez wywoływania jej naprawdę. Przydają się też logi CloudTrail, w których widać realne odmowy dostępu i brakujące akcje.