Как проверить учетные данные для инструментов командной строки AWS
Есть ли команда/подкоманда, которая может быть передана утилите aws
, которая может: 1) проверить, что учетные данные в файле ~/.aws/credentials
действительны, и 2) дать указание, к какому пользователю принадлежат учетные данные? Я ищу что-то общее, которое не делает никаких предположений о том, что пользователь имеет разрешения для IAM или какой-либо конкретной службы.
Вариант использования для этого - проверка работоспособности во время развертывания, чтобы убедиться, что учетные данные являются хорошими. В идеале, есть способ проверить возвращаемое значение и прервать развертывание, если есть недопустимые учетные данные.
Ответы
Ответ 1
Используйте 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 будет зависеть от типа роли, но часто включает имя пользователя (человека)
Ответ 2
Существует прямой способ - aws iam get-user
будет рассказывать подробности о том, кто вы (текущий пользователь IAM) - при условии, что у пользователя есть привилегии iam
.
Есть несколько вызовов CLI, которые поддерживают флаг --dry-run
, например aws ec2 run-instances
, который вы указываете, есть ли у вас необходимый config/cred для выполнения операции.
Существует также --auth-dry-run
, который проверяет, есть ли у вас необходимые разрешения для команды, без фактического выполнения команды. Если у вас есть необходимые разрешения, команда возвращает DryRunOperation; в противном случае он возвращает UnauthorizedOperation. [Из Документация AWS - Общие параметры]
Вы можете перечислить ключи доступа IAM из консоли управления, которые вы можете перекрестно проверить, чтобы узнать, кому был назначен тот ключ.
Лучший способ понять, какой пользователь/роль имеет какие привилегии, использует IAM Policy Simulator.