Sobes.tech
Back to questions
Junior — Middle
68

Каким образом можно настроить двухэтапную проверку подлинности для команд AWS через CLI?

Answer from AI

sobes.tech AI

Для настройки двухэтапной проверки подлинности (MFA) при работе с AWS CLI необходимо выполнить следующие шаги:

  1. Настроить MFA устройство в AWS IAM — в консоли AWS в разделе IAM добавьте MFA устройство (например, виртуальное приложение Google Authenticator) к вашей учетной записи или пользователю.

  2. Получать временные сессионные токены с MFA — AWS CLI не поддерживает MFA напрямую при обычном вызове, поэтому нужно использовать команду aws sts get-session-token с указанием serial number MFA устройства и текущего кода:

aws sts get-session-token --serial-number arn:aws:iam::123456789012:mfa/your-user --token-code 123456
  1. Использовать полученные временные креденшелы — команда вернет временные ключи доступа (AccessKeyId, SecretAccessKey, SessionToken), которые нужно использовать для последующих вызовов AWS CLI.

  2. Настроить профиль AWS CLI с временными ключами — можно сохранить их в отдельный профиль или экспортировать в переменные окружения:

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

Таким образом, каждый раз при работе с AWS CLI с MFA нужно получать временные токены через sts get-session-token, используя код из MFA устройства.

Пример скрипта для автоматизации:

MFA_SERIAL=arn:aws:iam::123456789012:mfa/your-user
TOKEN_CODE=$(read -p "Enter MFA code: " code && echo $code)

CREDS=$(aws sts get-session-token --serial-number $MFA_SERIAL --token-code $TOKEN_CODE --output json)

export AWS_ACCESS_KEY_ID=$(echo $CREDS | jq -r '.Credentials.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $CREDS | jq -r '.Credentials.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $CREDS | jq -r '.Credentials.SessionToken')

Это обеспечит двухэтапную проверку при работе с AWS CLI.