Generator polityki AWS IAM

Zbuduj dokument JSON z akcjami, zasobami i warunkiem – zgodnie z zasadą najmniejszych uprawnień.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  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.

Polityka IAM

Polityka gotowa OK

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

Allow

zezwolenie

Akcje

2

Zasoby

2

Rozmiar

183 znaków
OK

bez białych znaków; limit polityki zarządzanej: 6 144

Polityka IAM (JSON)

{ "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/*" ] } ] }
369 znaków · 23 słów · 17 linii

AWS CLI: utwórz i przypnij do roli

aws iam create-policy --policy-name S3ReadOnly --policy-document file://polityka-iam.json aws iam attach-role-policy --role-name NAZWA_ROLI --policy-arn arn:aws:iam::ID_KONTA:policy/S3ReadOnly

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

Region np. eu-central-1, konto to 12-cyfrowy identyfikator AWS
UsługaTypowe akcjeFormat 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)

Najczęstsze operatory i klucze globalne
OperatorZnaczeniePrzykł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:

PoleZa co odpowiadaPrzykład
VersionWersja języka polityki – używaj najnowszej2012-10-17
StatementLista instrukcji; każda opisuje jedno uprawnienie[ … ]
SidOpcjonalna etykieta instrukcji (dla czytelności)S3ReadOnly
EffectCzy instrukcja przyznaje czy odbiera dostępAllow / Deny
ActionOperacje usługi, których dotyczys3:GetObject
ResourceARN zasobu, którego dotyczy zezwolenie lub odmowaarn:aws:s3:::my-bucket/*
ConditionDodatkowy 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.

  1. Zacznij od jednej akcji i jednego zasobu, potem dokładaj tylko to, co realnie się pojawia w logach odmów.
  2. Rozdzielaj uprawnienia na osobne instrukcje Statement lub osobne polityki, gdy dotyczą różnych usług – łatwiej je później czytać i wycofywać.
  3. Dodaj Condition, gdy chcesz ograniczyć regułę: do jednego regionu (StringEquals i aws:RequestedRegion), do adresów firmowych (IpAddress i aws:SourceIp) albo do żądań po HTTPS (Bool i aws:SecureTransport). Kilka wartości oddzielonych przecinkiem trafia do tablicy, a warunek jest spełniony, gdy pasuje którakolwiek z nich.
  4. 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.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!