AWS

AWS IAM CLI — Довідник команд

Повний довідник AWS CLI команд для IAM — Users, Groups, Roles, Policies, MFA, STS. Усі важливі команди з прикладами та очікуваним виводом.

AWS IAM CLI — Довідник команд

Цей довідник охоплює всі важливі aws iam та aws sts команди, згруповані за тематикою. Для кожної команди наведено опис параметрів та очікуваний вивід терміналу.

Перед використанням переконайтеся, що AWS CLI налаштований: aws configure або через змінні середовища AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION.

Обліковий запис і аліаси

get-account-summary

Повертає зведену статистику IAM-ресурсів акаунту: кількість Users, Groups, Roles, Policies тощо.

aws iam get-account-summary
$ aws iam get-account-summary
{
"SummaryMap": {
"Users": 12,
"UsersQuota": 5000,
"Groups": 4,
"GroupsQuota": 300,
"Roles": 18,
"Policies": 7,
"MFADevices": 5,
"MFADevicesInUse": 5,
"AccountMFAEnabled": 1,
"AccountAccessKeysPresent": 0
}
}
AccountAccessKeysPresent: 0 — добрий знак: означає, що root-акаунт не має Access Keys.

list-account-aliases / create / delete

Аліас відображається замість числового ID в URL консолі: https://my-company-dev.signin.aws.amazon.com/console. Один акаунт — один аліас.

--account-alias
string required
Назва аліасу. Глобально унікальна, лише малі літери, цифри та дефіси. Довжина: 3–63 символи.
account alias commands
$ aws iam list-account-aliases
{
"AccountAliases": []
}
$ aws iam create-account-alias --account-alias my-company-dev
(no output — success)
$ aws iam list-account-aliases
{
"AccountAliases": [
"my-company-dev"
]
}
$ aws iam delete-account-alias --account-alias my-company-dev
(no output — success)

IAM Users

create-user

Створює нового IAM User. Новий User не має паролів, ключів або привілеїв — лише порожній акаунт.

--user-name
string required
Ім'я користувача. Унікальне в межах акаунту, максимум 64 символи. Допускаються: літери, цифри, +, =, ,, ., @, -, _.
--path
string
Ієрархічний шлях для організації Users. Починається і закінчується на /. Наприклад: /developers/, /service-accounts/. За замовчуванням: /.
--tags
list
Теги у форматі Key=Value. Використовуються для фільтрації, billing та управління доступом через Policy Conditions. До 50 тегів.
aws iam create-user
$ aws iam create-user --user-name alice --path /developers/
{
"User": {
"Path": "/developers/",
"UserName": "alice",
"UserId": "AIDAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/developers/alice",
"CreateDate": "2026-05-18T10:00:00+00:00"
}
}

get-user / list-users

--user-name
string
Ім'я конкретного User. Якщо не вказано — get-user повертає інформацію про поточного авторизованого користувача CLI.
--path-prefix
string
Фільтр для list-users за path. Наприклад /developers/ поверне лише Users із цим шляхом.
--max-items
integer
Ліміт результатів у відповіді. При великій кількості Users — використовується пагінація через --starting-token.
aws iam list-users
$ aws iam list-users --path-prefix /developers/
{
"Users": [
{
"UserName": "alice",
"UserId": "AIDAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::123456789012:user/developers/alice",
"Path": "/developers/",
"CreateDate": "2026-05-18T10:00:00+00:00",
"PasswordLastUsed": "2026-05-17T08:30:00+00:00"
}
]
}

create-login-profile

Встановлює пароль для входу в AWS Management Console. Без Login Profile User може використовувати лише Access Keys (програмний доступ), але не може увійти на консоль.

--user-name
string required
Ім'я User, якому встановлюється пароль.
--password
string required
Початковий пароль. Має відповідати Password Policy акаунту (довжина, складність тощо).
--password-reset-required
boolean
Якщо вказано — User буде змушений змінити пароль при першому вході. Рекомендується для всіх нових акаунтів.
--no-password-reset-required
boolean
Протилежний прапор — скасовує вимогу зміни пароля. Використовується в update-login-profile.
create / update / delete login profile
$ aws iam create-login-profile \
> --user-name alice \
> --password "TempP@ssw0rd!" \
> --password-reset-required
{
"LoginProfile": {
"UserName": "alice",
"CreateDate": "2026-05-18T10:05:00+00:00",
"PasswordResetRequired": true
}
}
$ aws iam get-login-profile --user-name alice
{
"LoginProfile": {
"UserName": "alice",
"CreateDate": "2026-05-18T10:05:00+00:00",
"PasswordResetRequired": true
}
}
$ aws iam update-login-profile \
> --user-name alice \
> --password "NewP@ssw0rd!" \
> --no-password-reset-required
(no output — success)
$ aws iam delete-login-profile --user-name alice
(no output — success)

delete-user

Перед видаленням User необхідно вручну прибрати всі залежності: Login Profile, Access Keys, MFA-пристрої, членство в Groups та прикріплені Policies. AWS не видаляє їх автоматично і поверне помилку DeleteConflict.
повне видалення User (правильна послідовність)
# 1. Видалити Login Profile
$ aws iam delete-login-profile --user-name alice
(no output — success)
# 2. Отримати та видалити Access Keys
$ aws iam list-access-keys --user-name alice
$ aws iam delete-access-key --user-name alice --access-key-id AKIAIOSFODNN7EXAMPLE
(no output — success)
# 3. Видалити з усіх груп
$ aws iam remove-user-from-group --user-name alice --group-name Developers
(no output — success)
# 4. Відкріпити Policies
$ aws iam detach-user-policy --user-name alice \
> --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
(no output — success)
# 5. Видалити User
$ aws iam delete-user --user-name alice
(no output — success)

Access Keys

Access Keys — це пара AccessKeyId + SecretAccessKey для програмного доступу до AWS (CLI, SDK, CI/CD). Один User може мати максимум 2 активних ключі одночасно — це дозволяє виконувати ротацію без простою.

create-access-key

--user-name
string
Ім'я User, для якого створюється ключ. Якщо не вказано — ключ створюється для поточного авторизованого User.
SecretAccessKey відображається лише один раз — у момент створення. Збережіть його одразу. Якщо втратили — доведеться створювати новий ключ і видаляти старий.
aws iam create-access-key
$ aws iam create-access-key --user-name alice
{
"AccessKey": {
"UserName": "alice",
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"Status": "Active",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"CreateDate": "2026-05-18T10:10:00+00:00"
}
}

list-access-keys

Повертає список ключів доступу для User. SecretAccessKey тут не відображається — лише метадані.

--user-name
string
Ім'я User. Якщо не вказано — повертаються ключі поточного авторизованого User.
aws iam list-access-keys
$ aws iam list-access-keys --user-name alice
{
"AccessKeyMetadata": [
{
"UserName": "alice",
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"Status": "Active",
"CreateDate": "2026-05-18T10:10:00+00:00"
},
{
"UserName": "alice",
"AccessKeyId": "AKIAI44QH8DHBEXAMPLE",
"Status": "Inactive",
"CreateDate": "2026-01-10T09:00:00+00:00"
}
]
}

update-access-key

Активує або деактивує ключ. Деактивація — безпечний спосіб «вимкнути» ключ без його видалення (наприклад, під час ротації або перевірки).

--access-key-id
string required
ID ключа, який потрібно оновити. Отримується через list-access-keys.
--status
string required
Новий статус ключа: Active або Inactive.
--user-name
string
Ім'я User. Якщо не вказано — застосовується до поточного авторизованого User.
rotate access key (правильна послідовність)
# 1. Створити новий ключ
$ aws iam create-access-key --user-name alice
→ зберегти новий AccessKeyId та SecretAccessKey
# 2. Оновити всі системи на новий ключ
# 3. Деактивувати старий ключ (не видаляти — спочатку перевірити)
$ aws iam update-access-key \
> --user-name alice \
> --access-key-id AKIAI44QH8DHBEXAMPLE \
> --status Inactive
(no output — success)
# 4. Впевнитись, що все працює — видалити старий ключ
$ aws iam delete-access-key \
> --user-name alice \
> --access-key-id AKIAI44QH8DHBEXAMPLE
(no output — success)

IAM Groups

create-group / list-groups / delete-group

Group — іменована колекція Users з однаковими правами. Policy прикріплюється до Group один раз і автоматично поширюється на всіх її учасників.

--group-name
string required
Унікальне ім'я групи в межах акаунту. Максимум 128 символів. Ті самі правила іменування, що й для User.
--path
string
Ієрархічний шлях для організації груп. Наприклад: /teams/, /departments/. За замовчуванням: /.
create / list / delete group
$ aws iam create-group --group-name Developers
{
"Group": {
"Path": "/",
"GroupName": "Developers",
"GroupId": "AGPAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::123456789012:group/Developers",
"CreateDate": "2026-05-18T10:15:00+00:00"
}
}
$ aws iam list-groups
{
"Groups": [
{ "GroupName": "Developers", "Arn": "arn:aws:iam::123456789012:group/Developers" },
{ "GroupName": "DevOps", "Arn": "arn:aws:iam::123456789012:group/DevOps" },
{ "GroupName": "Readonly", "Arn": "arn:aws:iam::123456789012:group/Readonly" }
]
}
$ aws iam delete-group --group-name Developers
(no output — success)
Перед видаленням Group потрібно відкріпити всі Policies (detach-group-policy) та видалити всіх Users з групи (remove-user-from-group). Інакше — помилка DeleteConflict.

add-user-to-group / remove-user-from-group

--user-name
string required
Ім'я User, якого додають або видаляють з групи.
--group-name
string required
Ім'я Group. User може належати до кількох груп одночасно. Максимум 10 груп на User.
add / remove user from group
$ aws iam add-user-to-group --user-name alice --group-name Developers
(no output — success)
$ aws iam add-user-to-group --user-name alice --group-name Readonly
(no output — success)
$ aws iam list-groups-for-user --user-name alice
{
"Groups": [
{ "GroupName": "Developers", "Arn": "arn:aws:iam::123456789012:group/Developers" },
{ "GroupName": "Readonly", "Arn": "arn:aws:iam::123456789012:group/Readonly" }
]
}
$ aws iam list-users-in-group --group-name Developers
{
"Users": [
{ "UserName": "alice", "Arn": "arn:aws:iam::123456789012:user/developers/alice" },
{ "UserName": "bob", "Arn": "arn:aws:iam::123456789012:user/developers/bob" }
]
}
$ aws iam remove-user-from-group --user-name alice --group-name Readonly
(no output — success)

IAM Policies

create-policy

Створює Customer Managed Policy — власну Policy, яку ви повністю контролюєте. На відміну від AWS Managed Policies, вона точно описує лише те, що вам потрібно.

--policy-name
string required
Унікальна назва Policy в межах акаунту. Максимум 128 символів. Рекомендований формат: описова назва типу S3DevBucketsReadWrite, EC2StartStopDev.
--policy-document
string required
JSON-документ Policy у вигляді рядка або посилання на файл (file://policy.json). Визначає дозволи: Effect, Action, Resource.
--description
string
Опис Policy. Відображається в консолі, допомагає зрозуміти призначення. Максимум 1000 символів.
--path
string
Ієрархічний шлях для організації. Наприклад /team-policies/. За замовчуванням: /.
aws iam create-policy
$ cat s3-dev-policy.json
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
"Resource": "arn:aws:s3:::dev-*/*"
}]
}
$ aws iam create-policy \
> --policy-name S3DevBucketsReadWrite \
> --policy-document file://s3-dev-policy.json \
> --description "Read/write access to all dev-* S3 buckets"
{
"Policy": {
"PolicyName": "S3DevBucketsReadWrite",
"PolicyId": "ANPAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite",
"Path": "/",
"DefaultVersionId": "v1",
"AttachmentCount": 0,
"CreateDate": "2026-05-18T10:20:00+00:00"
}
}

list-policies / get-policy / get-policy-version

--scope
string
Фільтр для list-policies: All (всі), AWS (тільки AWS Managed), Local (тільки Customer Managed). За замовчуванням: All.
--only-attached
boolean
Якщо вказано — показує лише Policy, які прикріплені до щонайменше одного User, Group або Role.
--policy-arn
string required
ARN Policy для get-policy та get-policy-version. Формат: arn:aws:iam::ACCOUNT_ID:policy/POLICY_NAME або arn:aws:iam::aws:policy/POLICY_NAME для AWS Managed.
--version-id
string required
ID версії для get-policy-version. Отримується через get-policy → поле DefaultVersionId. Формат: v1, v2 тощо.
list / get policy
$ aws iam list-policies --scope Local --only-attached
{
"Policies": [
{
"PolicyName": "S3DevBucketsReadWrite",
"Arn": "arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite",
"DefaultVersionId": "v1",
"AttachmentCount": 2
}
]
}
$ aws iam get-policy-version \
> --policy-arn arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite \
> --version-id v1
{
"PolicyVersion": {
"Document": {
"Version": "2012-10-17",
"Statement": [{ "Effect": "Allow", "Action": [...], "Resource": "..." }]
},
"VersionId": "v1",
"IsDefaultVersion": true
}
}

attach / detach policy

Policy можна прикріпити до User, Group або Role. Для кожного типу — окрема команда.

--policy-arn
string required
ARN Policy, яку прикріплюємо або відкріплюємо.
--user-name / --group-name / --role-name
string required
Ціль прикріплення. Використовується лише один з цих параметрів залежно від команди.
attach / detach / list attached policies
# Прикріпити до User
$ aws iam attach-user-policy \
> --user-name alice \
> --policy-arn arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite
(no output — success)
# Прикріпити до Group
$ aws iam attach-group-policy \
> --group-name Developers \
> --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
(no output — success)
# Переглянути прикріплені Policy для Group
$ aws iam list-attached-group-policies --group-name Developers
{
"AttachedPolicies": [
{
"PolicyName": "ReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/ReadOnlyAccess"
},
{
"PolicyName": "S3DevBucketsReadWrite",
"PolicyArn": "arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite"
}
]
}
# Відкріпити від Group
$ aws iam detach-group-policy \
> --group-name Developers \
> --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
(no output — success)

IAM Roles

create-role

Role — сутність без постійних credentials. Використовується сервісами AWS (EC2, Lambda, ECS) та для cross-account доступу. Credentials видаються тимчасово через STS при кожному AssumeRole.

--role-name
string required
Унікальна назва Role в межах акаунту. Максимум 64 символи.
--assume-role-policy-document
string required
Trust Policy — JSON-документ, який визначає хто може приймати цю роль (Principal). Для EC2 це ec2.amazonaws.com, для Lambda — lambda.amazonaws.com, для cross-account — ARN іншого акаунту.
--description
string
Опис призначення Role. Відображається в консолі.
--max-session-duration
integer
Максимальна тривалість сесії в секундах при AssumeRole. Від 3600 (1 год) до 43200 (12 год). За замовчуванням: 3600.
create role для EC2 та Lambda
$ cat ec2-trust-policy.json
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": { "Service": "ec2.amazonaws.com" },
"Action": "sts:AssumeRole"
}]
}
$ aws iam create-role \
> --role-name EC2-S3-ReadWrite \
> --assume-role-policy-document file://ec2-trust-policy.json \
> --description "Allows EC2 instances to read/write S3 dev buckets"
{
"Role": {
"RoleName": "EC2-S3-ReadWrite",
"RoleId": "AROAIOSFODNN7EXAMPLE",
"Arn": "arn:aws:iam::123456789012:role/EC2-S3-ReadWrite",
"AssumeRolePolicyDocument": { "..." : "..." },
"MaxSessionDuration": 3600,
"CreateDate": "2026-05-18T10:25:00+00:00"
}
}

attach-role-policy / list-attached-role-policies / detach-role-policy

Після створення Role потрібно прикріпити Permission Policy — що саме ця Role може робити.

attach policy to role
# Прикріпити AWS Managed Policy
$ aws iam attach-role-policy \
> --role-name EC2-S3-ReadWrite \
> --policy-arn arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite
(no output — success)
# Переглянути прикріплені Policy
$ aws iam list-attached-role-policies --role-name EC2-S3-ReadWrite
{
"AttachedPolicies": [
{
"PolicyName": "S3DevBucketsReadWrite",
"PolicyArn": "arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite"
}
]
}

get-role / list-roles / update-assume-role-policy

--role-name
string required
Ім'я Role для get-role та update-assume-role-policy.
--policy-document
string required
Новий Trust Policy JSON для update-assume-role-policy. Повністю замінює існуючий.
--path-prefix
string
Фільтр для list-roles за path-prefix.
get-role / update trust policy
$ aws iam get-role --role-name EC2-S3-ReadWrite
{
"Role": {
"RoleName": "EC2-S3-ReadWrite",
"Arn": "arn:aws:iam::123456789012:role/EC2-S3-ReadWrite",
"MaxSessionDuration": 3600,
"AssumeRolePolicyDocument": {
"Statement": [{ "Principal": { "Service": "ec2.amazonaws.com" }, "..." }]
}
}
}
# Оновити Trust Policy (додати Lambda як Principal)
$ aws iam update-assume-role-policy \
> --role-name EC2-S3-ReadWrite \
> --policy-document file://new-trust-policy.json
(no output — success)

delete-role

Перед видаленням Role необхідно відкріпити всі Permission Policies та Instance Profiles. Інакше — помилка DeleteConflict.
повне видалення Role
# 1. Відкріпити всі Policy
$ aws iam list-attached-role-policies --role-name EC2-S3-ReadWrite
$ aws iam detach-role-policy \
> --role-name EC2-S3-ReadWrite \
> --policy-arn arn:aws:iam::123456789012:policy/S3DevBucketsReadWrite
(no output — success)
# 2. Видалити Role
$ aws iam delete-role --role-name EC2-S3-ReadWrite
(no output — success)

MFA — Multi-Factor Authentication

list-mfa-devices / list-virtual-mfa-devices

--user-name
string
Ім'я User для list-mfa-devices. Якщо не вказано — повертає пристрої поточного авторизованого User.
--assignment-status
string
Фільтр для list-virtual-mfa-devices: Assigned (прив'язані до User), Unassigned (вільні), Any (всі). За замовчуванням: Any.
list MFA devices
$ aws iam list-mfa-devices --user-name alice
{
"MFADevices": [
{
"UserName": "alice",
"SerialNumber": "arn:aws:iam::123456789012:mfa/alice",
"EnableDate": "2026-05-18T10:30:00+00:00"
}
]
}
$ aws iam list-virtual-mfa-devices --assignment-status Unassigned
{
"VirtualMFADevices": []
}

create-virtual-mfa-device

Створює TOTP-пристрій (сумісний з Google Authenticator, Authy, 1Password). Зберігає QR-код або seed у файл для подальшого налаштування.

--virtual-mfa-device-name
string required
Назва пристрою. Зазвичай збігається з іменем User для ясності.
--outfile
string required
Шлях до файлу, куди зберегти QR-код (PNG) або Base32 seed (Bootstrap). Потрібен для сканування у застосунку.
--bootstrap-method
string
Формат виводу: QRCodePNG (зображення) або Base32StringSeed (текстовий seed). За замовчуванням: QRCodePNG.
create virtual MFA device
$ aws iam create-virtual-mfa-device \
> --virtual-mfa-device-name alice \
> --outfile /tmp/alice-mfa.png \
> --bootstrap-method QRCodePNG
{
"VirtualMFADevice": {
"SerialNumber": "arn:aws:iam::123456789012:mfa/alice"
}
}
→ відскануйте /tmp/alice-mfa.png у Google Authenticator

enable-mfa-device

Прив'язує MFA-пристрій до User. Потрібно ввести два послідовних TOTP-коди з застосунку (з різних 30-секундних вікон) для підтвердження синхронізації.

--user-name
string required
Ім'я User, до якого прив'язується пристрій.
--serial-number
string required
ARN або серійний номер пристрою. Для virtual MFA — ARN з попереднього кроку.
--authentication-code1
string required
Перший TOTP-код (6 цифр) з застосунку.
--authentication-code2
string required
Другий TOTP-код — з наступного 30-секундного вікна. Потрібен для підтвердження синхронізації.
enable MFA device
$ aws iam enable-mfa-device \
> --user-name alice \
> --serial-number arn:aws:iam::123456789012:mfa/alice \
> --authentication-code1 123456 \
> --authentication-code2 789012
(no output — success)

deactivate-mfa-device / delete-virtual-mfa-device

deactivate та delete MFA
# Відв'язати пристрій від User (пристрій залишається, але не активний)
$ aws iam deactivate-mfa-device \
> --user-name alice \
> --serial-number arn:aws:iam::123456789012:mfa/alice
(no output — success)
# Видалити virtual MFA пристрій повністю
$ aws iam delete-virtual-mfa-device \
> --serial-number arn:aws:iam::123456789012:mfa/alice
(no output — success)
deactivate-mfa-device лише відв'язує пристрій від User. Якщо пристрій virtual — він залишається в акаунті як "Unassigned". Для повного видалення потрібен окремий виклик delete-virtual-mfa-device.

Password Policy

update-account-password-policy

Встановлює вимоги до паролів для всіх IAM Users в акаунті. Без кастомної Policy AWS застосовує лише мінімальні вимоги (8 символів).

--minimum-password-length
integer
Мінімальна довжина пароля. Рекомендується: 12–16 символів. Діапазон: 6–128.
--require-symbols
boolean
Вимагати символи ! @ # $ % ^ & * ( ) _ + - = [ ] { } | '. Вмикається прапором без значення.
--require-numbers
boolean
Вимагати хоча б одну цифру (0–9).
--require-uppercase-characters
boolean
Вимагати хоча б одну велику літеру (A–Z).
--require-lowercase-characters
boolean
Вимагати хоча б одну малу літеру (a–z).
--allow-users-to-change-password
boolean
Дозволити Users змінювати власні паролі. Рекомендується залишити увімкненим.
--max-password-age
integer
Кількість днів до примусової зміни пароля. 0 — без обмеження. Рекомендується: 90.
--password-reuse-prevention
integer
Кількість попередніх паролів, які не можна використовувати повторно. Максимум: 24. Рекомендується: 5.
--hard-expiry
boolean
Якщо вказано — User не може увійти після закінчення терміну пароля. Потребує втручання адміністратора для скидання. Не рекомендується без процесу автоматичного нагадування.
update / get / delete password policy
$ aws iam update-account-password-policy \
> --minimum-password-length 12 \
> --require-symbols \
> --require-numbers \
> --require-uppercase-characters \
> --require-lowercase-characters \
> --allow-users-to-change-password \
> --max-password-age 90 \
> --password-reuse-prevention 5
(no output — success)
$ aws iam get-account-password-policy
{
"PasswordPolicy": {
"MinimumPasswordLength": 12,
"RequireSymbols": true,
"RequireNumbers": true,
"RequireUppercaseCharacters": true,
"RequireLowercaseCharacters": true,
"AllowUsersToChangePassword": true,
"ExpirePasswords": true,
"MaxPasswordAge": 90,
"PasswordReusePrevention": 5,
"HardExpiry": false
}
}
# Видалити кастомну Policy (повернутись до мінімальних вимог AWS)
$ aws iam delete-account-password-policy
(no output — success)

AWS STS — Security Token Service

get-caller-identity

Повертає інформацію про поточні credentials: хто авторизований у CLI прямо зараз. Корисно для перевірки активного профілю, особливо при роботі з кількома акаунтами.

aws sts get-caller-identity
# Звичайний IAM User
$ aws sts get-caller-identity
{
"UserId": "AIDAIOSFODNN7EXAMPLE",
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/alice"
}
# Після AssumeRole — відображається assumed-role
$ aws sts get-caller-identity
{
"UserId": "AROAIOSFODNN7EXAMPLE:my-session",
"Account": "123456789012",
"Arn": "arn:aws:sts::123456789012:assumed-role/EC2-S3-ReadWrite/my-session"
}

assume-role

Приймає IAM Role і повертає тимчасові credentials (Access Key + Secret + Session Token). Використовується для cross-account доступу, підвищення привілеїв та програмного отримання прав ролі.

--role-arn
string required
ARN Role, яку потрібно прийняти. Формат: arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME.
--role-session-name
string required
Назва сесії — ідентифікатор у CloudTrail логах. Має бути описовим: ci-deploy, alice-admin-session. Максимум 64 символи.
--duration-seconds
integer
Тривалість тимчасових credentials у секундах. Від 900 (15 хв) до MaxSessionDuration Role. За замовчуванням: 3600.
--external-id
string
Додатковий секрет для cross-account доступу до сторонніх акаунтів. Захищає від атаки confused deputy.
--serial-number + --token-code
string
Серійний номер MFA-пристрою та поточний TOTP-код. Потрібні, якщо Trust Policy Role вимагає MFA для AssumeRole.
aws sts assume-role
$ aws sts assume-role \
> --role-arn arn:aws:iam::987654321098:role/CrossAccountReadOnly \
> --role-session-name alice-cross-account \
> --duration-seconds 3600
{
"Credentials": {
"AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "AQoDYXdzEJr...(дуже довгий токен)...",
"Expiration": "2026-05-18T11:25:00+00:00"
},
"AssumedRoleUser": {
"AssumedRoleId": "AROAIOSFODNN7EXAMPLE:alice-cross-account",
"Arn": "arn:aws:sts::987654321098:assumed-role/CrossAccountReadOnly/alice-cross-account"
}
}
# Використати отримані credentials через змінні середовища
$ export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/...
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...
$ aws sts get-caller-identity
→ тепер CLI працює від імені CrossAccountReadOnly у акаунті 987654321098

get-session-token

Повертає тимчасові credentials для поточного IAM User з підтвердженням MFA. Використовується, коли потрібно виконати операції, які вимагають MFA, через CLI.

--serial-number
string required
ARN або серійний номер MFA-пристрою User.
--token-code
string required
Поточний 6-значний TOTP-код з MFA-застосунку.
--duration-seconds
integer
Тривалість credentials. Від 900 до 129600 (36 год). За замовчуванням: 43200 (12 год).
aws sts get-session-token (з MFA)
$ aws sts get-session-token \
> --serial-number arn:aws:iam::123456789012:mfa/alice \
> --token-code 123456
{
"Credentials": {
"AccessKeyId": "ASIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "AQoDYXdzEJr...",
"Expiration": "2026-05-18T22:25:00+00:00"
}
}

IAM Policy Simulator

simulate-principal-policy

Перевіряє, чи дозволяє набір Policies конкретного User/Role виконати певну дію на певному ресурсі. Виконується без реального звернення до ресурсу — лише симуляція логіки оцінки.

--policy-source-arn
string required
ARN User або Role, чиї Policies потрібно перевірити. Формат: arn:aws:iam::ACCOUNT_ID:user/NAME або arn:aws:iam::ACCOUNT_ID:role/NAME.
--action-names
list required
Список AWS API-дій для перевірки. Формат: сервіс:Дія. Наприклад s3:GetObject, ec2:StartInstances. Можна передати кілька через пробіл.
--resource-arns
list
ARN ресурсів, до яких перевіряється доступ. Якщо не вказано — перевіряється проти *. Для точної симуляції завжди вказуйте конкретний ресурс.
--context-entries
list
Контекстні змінні для симуляції Condition у Policy. Наприклад, для перевірки умови MFA: ContextKeyName=aws:MultiFactorAuthPresent,ContextKeyValues=true,ContextKeyType=boolean.
simulate-principal-policy
# Перевірити чи може alice видалити об'єкт з production bucket
$ aws iam simulate-principal-policy \
> --policy-source-arn arn:aws:iam::123456789012:user/alice \
> --action-names s3:DeleteObject s3:GetObject \
> --resource-arns arn:aws:s3:::production-data/sensitive.txt
{
"EvaluationResults": [
{
"EvalActionName": "s3:DeleteObject",
"EvalResourceName": "arn:aws:s3:::production-data/sensitive.txt",
"EvalDecision": "implicitDeny",
"MatchedStatements": []
},
{
"EvalActionName": "s3:GetObject",
"EvalResourceName": "arn:aws:s3:::production-data/sensitive.txt",
"EvalDecision": "allowed",
"MatchedStatements": [
{ "SourcePolicyId": "S3DevBucketsReadWrite", "StartPosition": {...} }
]
}
]
}
EvalDecision може бути: allowed, explicitDeny (є явне Deny у Policy), implicitDeny (немає жодного Allow). MatchedStatements показує, яке саме правило Policy спрацювало.

simulate-custom-policy

Симулює довільний JSON-документ Policy без прив'язки до конкретного User або Role. Зручно для тестування нової Policy ще до її створення.

--policy-input-list
list required
Список JSON-документів Policy (рядки або file://). Симулюється як набір Policy без конкретного Principal.
--action-names
list required
Дії для перевірки. Аналогічно simulate-principal-policy.
--resource-arns
list
ARN ресурсів. Аналогічно simulate-principal-policy.
simulate-custom-policy
$ aws iam simulate-custom-policy \
> --policy-input-list file://new-policy.json \
> --action-names s3:PutObject s3:DeleteObject \
> --resource-arns "arn:aws:s3:::dev-uploads/*"
{
"EvaluationResults": [
{ "EvalActionName": "s3:PutObject", "EvalDecision": "allowed" },
{ "EvalActionName": "s3:DeleteObject", "EvalDecision": "implicitDeny" }
]
}

IAM Access Analyzer

create-analyzer / list-analyzers

Access Analyzer відстежує ресурси вашого акаунту, що доступні зовні (з інших акаунтів або публічно), та знаходить невикористані права.

--analyzer-name
string required
Унікальна назва Analyzer. Наприклад account-analyzer або org-analyzer.
--type
string required
Тип Analyzer: ACCOUNT (перевіряє ресурси акаунту, доступні зовні) або ORGANIZATION (перевіряє весь Organizations).
create та list analyzers
$ aws accessanalyzer create-analyzer \
> --analyzer-name account-analyzer \
> --type ACCOUNT
{
"arn": "arn:aws:access-analyzer:eu-central-1:123456789012:analyzer/account-analyzer"
}
$ aws accessanalyzer list-analyzers
{
"analyzers": [
{
"name": "account-analyzer",
"arn": "arn:aws:access-analyzer:eu-central-1:123456789012:analyzer/account-analyzer",
"type": "ACCOUNT",
"status": "ACTIVE",
"lastResourceAnalyzedAt": "2026-05-18T10:00:00+00:00"
}
]
}

list-findings / get-finding / archive-rule

Findings — це знахідки Analyzer: ресурси з потенційно небажаним зовнішнім доступом або невикористані права.

--analyzer-arn
string required
ARN Analyzer, знахідки якого переглядаємо.
--filter
map
Фільтри для list-findings. Наприклад, фільтр за типом ресурсу: resourceType={value=AWS::S3::Bucket}.
--id
string required
ID конкретного Finding для get-finding.
list-findings та get-finding
$ aws accessanalyzer list-findings \
> --analyzer-arn arn:aws:access-analyzer:eu-central-1:123456789012:analyzer/account-analyzer
{
"findings": [
{
"id": "find-1a2b3c4d",
"resourceType": "AWS::S3::Bucket",
"resource": "arn:aws:s3:::my-public-bucket",
"status": "ACTIVE",
"isPublic": true,
"condition": {}
}
]
}
# Детальна інформація про знахідку
$ aws accessanalyzer get-finding \
> --analyzer-arn arn:aws:access-analyzer:eu-central-1:123456789012:analyzer/account-analyzer \
> --id find-1a2b3c4d
→ деталі: хто має доступ, через яку Policy, які дії дозволені
# Якщо публічний доступ є навмисним — архівувати знахідку
$ aws accessanalyzer update-findings \
> --analyzer-arn arn:aws:access-analyzer:eu-central-1:123456789012:analyzer/account-analyzer \
> --status ARCHIVED \
> --ids find-1a2b3c4d
(no output — success)
Статус Finding: ACTIVE — потребує уваги, ARCHIVED — навмисний/перевірений доступ, RESOLVED — проблему усунено (Policy змінено).
Copyright © 2026