Як перевірити облікові дані для інструментів командного рядка AWS


149

Чи є команда / підкоманда, яка може бути передана awsутиліті, яка може 1) перевірити, чи є облікові дані у ~/.aws/credentialsфайлі дійсними, і 2) вказати, якому користувачеві належать облікові дані? Я шукаю щось загальне, яке не робить жодних припущень щодо того, що користувач має дозволи на IAM або якусь конкретну послугу.

Випадок використання для цього - перевірка правильності розгортання часу, щоб переконатися, що облікові дані хороші. В ідеалі існує спосіб перевірити значення повернення та скасувати розгортання, якщо є недійсні дані.


3
Чи можу я запропонувати, щоб це було краще запитати на сервері defaultfault.com ? Переповнення стека спеціально для питань програмування.
Tripp Kinetics

4
@TrippKinetics Так, я був на огорожі про те, де запитати. На мій погляд, у питанні цього питання було скоріше швидше програмний запит API, а не управління серверами як такі.
smitelli

Відповіді:


219

Використовуйте GetCallerIdentity :
aws sts get-caller-identity

На відміну від інших дзвінків API / CLI, він завжди працюватиме, незалежно від ваших дозволів IAM.

Ви отримаєте вихід у такому форматі:

{
    "Account": "123456789012", 
    "UserId": "AR#####:#####", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}

Точний формат ARN буде залежати від типу облікових даних, але часто включає ім’я користувача (людини).

Він використовує стандартні коди помилок AWS CLI, що дають 0 на успіх і 255, якщо у вас немає облікових даних.


5
Це чудова відповідь, але якщо ви використовуєте МЗС, будьте уважні - це складніше. Для МЗС вам потрібно використовувати робочі облікові дані (i) у поєднанні з маркером MFA, щоб отримати різні робочі тимчасові облікові дані (ii), і за допомогою цього рішення ви отримаєте однакові результати для облікових даних (i) або (ii).
Марк Чакерян

3
@MarkChackerian Це не завжди так. Я створив користувача, МЗС якого застосовується за допомогою політики Trek10 . З MFA сесія маркера не активна, якщо я виконую aws iam get-user --profile test-mfa, я отримую: An error occurred (AccessDenied) when calling the GetUser operation. Однак aws sts get-caller-identity --profile test-mfaвиводить (аналогічно, без test-mfaактивації маркера сеансу MFA) облікові записи, ARN та UserId.
Віль

54

Існує прямий спосіб - aws iam get-userрозповісти подробиці про те, хто ти (поточний користувач IAM) - за умови, що користувач має iamпривілеї.

Є кілька дзвінків CLI, які підтримують --dry-runпрапор, наприклад, aws ec2 run-instancesякий ви повідомляєте, чи потрібні вам конфігурація / рахунок для виконання операції.

Також є можливість --auth-dry-runперевіряти, чи є у вас необхідні дозволи для команди, не виконуючи фактично команди. Якщо у вас є необхідні дозволи, команда повертає DryRunOperation; в іншому випадку він повертає несанкціоновануоперацію. [З документації AWS - загальні параметри ]

Ви зможете перерахувати ключі доступу IAM з консолі управління, які ви можете перехрестити, щоб побачити, кому призначено який ключ.

Найкращий спосіб зрозуміти, який користувач / роль має які привілеї - це використовувати IAM Policy Simulator .


16
За іронією долі, користувач, який я провів тест, отримав AccessDeniedпомилку - яка включала повну arn:aws:iam::123...890:user/somebodyрядок як частину виводу помилки.
smitelli

7
Повністю можливо, користувач не має дозволу самостійно отримувати користувача. : - /
Джейсон

Так, у мене така ситуація. На консолі AWS поруч з користувачем ARN він показує N / A, і наведення курсору на курсор пояснює, що "Арніст користувача: aws: iam: ...: користувач / steve не має права виконувати iam: GetUser on resource: user steve"
Стів Беннетт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.