Thank you for reading this post, don't forget to subscribe!
AWS Multi‑Factor Authentication (AWS MFA) обеспечивает дополнительный уровень безопасности, который можно использовать в среде AWS. Можно активировать AWS MFA для вашего аккаунта AWS, а также для отдельных пользователей AWS Identity and Access Management (IAM), которых вы создаете под своим аккаунтом.
Существует два основных способа выполнить аутентификацию с помощью устройства AWS MFA.
- Пользователи Консоли управления AWS. При включенной MFA пользователю, входящему на сайт AWS, предлагается указать свои имя пользователя и пароль (первый фактор – знание), после чего запрашивается код аутентификации с устройства AWS MFA (второй фактор – владение). Все сайты AWS, где требуется вход, например Консоль управления AWS, полностью поддерживают AWS MFA. Можно также использовать AWS MFA совместно с функцией S3 Secure Delete для дополнительной защиты хранимых в Amazon S3 версий.
- Пользователи API AWS. Можно обеспечить принудительное выполнение MFA путем добавления связанных с MFA ограничений в политики IAM. Для получения доступа к защищенным таким образом API и ресурсам разработчики могут запрашивать временные данные для доступа и передавать дополнительные параметры MFA в свои запросы API AWS Security Token Service (STS) – сервис, создающий временные данные для доступа. Проверенные с помощью MFA временные данные для доступа можно использовать для вызова API и ресурсов, защищенных с использованием MFA. Примечание. Сервис AWS STS и API, доступ к которым защищен с помощью MFA, в данное время не поддерживают ключ безопасности U2F как MFA.
Ставится утилита просто:
https://github.com/broamski/aws-mfa
pip install aws-mfa
после того как создали access key и поставили AWS CLI
1 2 3 |
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install |
и запустили aws configure, правильно ответив на вопросы и забив Access Key ID и Secret Access Key(показывается только 1 раз)
1 2 3 4 5 |
$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json |
создадутся 2 файл:
.aws/config
.aws/credentials
они будут созданы для default профиля, лучше всего изменить имя чтоб не объебаться и не перепутать профиля.
поэтому когда запускаем aws configure то лучше добавлять имя профиля --profile user1 чтоб команда выглядела следующим образом:
aws configure --profile user1
смотрим наш конфиг:
cat .aws/config
1 2 3 4 5 6 7 |
[test-mid] region = us-east-1 output = json [profile mfa-profile] role_arn = arn:aws:iam::124546325678898729:role/administrator source_profile = test-mid |
тут имя профиля mfa-profile
теперь смотрим наши креды(учётные данные)
cat .aws/credentials
1 2 3 |
[test-mid-long-term] aws_access_key_id = AIwerwreA25werwerKA5CF5654JNE2V aws_secret_access_key = sIgnV654654dfgsdfg545464sdf56487wrcNvvS65BGNEhZ |
long-term добавляем как в инструкции:
https://github.com/broamski/aws-mfa
после чего можем запускать нашу утилиту чтобы на определённое время мы получили доступ:
aws-mfa --duration 43200 --device arn:aws:iam::124546325678898729:mfa/mid@dev.test --profile test-mad
после этой команды появится запрос ввод кода (смотрим его на мобильнике в гуг аутентификаторе)
после смотрим ещё раз в наш файл с кредами:
cat .aws/credentials
1 2 3 4 5 6 7 8 9 10 11 |
[test-mid-long-term] aws_access_key_id = AIwerwreA25werwerKA5CF5654JNE2V aws_secret_access_key = sIgnV654654dfgsdfg545464sdf56487wrcNvvS65BGNEhZ [test-mid] assumed_role = False aws_access_key_id = ASIA223UJdsf5CN54teBZH3 aws_secret_access_key = OFmc25rsdf1q6suXsdfswgXsKH/yOAj3iY43tdsqaq aws_session_token = FwoGZXIvYXdzEO///////////wEaDNDhJFopSmXKRFH/4yKGAXK2pmo9hcYIw3+okJMHhociZhscDkf1/W+yv9Ahfgd0HmWZNgPeXIerteL5YV46fdGRPv0mOTJTW2Ie2YfCQl7T41/zertUMWDKgMjsHWiWrUG8rAZkZQY2CertUskrgVR9kCqQc5K28wgEerttrqXsNtjSN8t1fcCRpy5bjVPCUkVY4RqHKFnpwuA9HUjBvQ7KKjuxokGMijMD3Ced9h6vl2gQ8Mz7BVP5ertbbruh2DwBVBAXhBTWs3NSfZAFgvn3FJ aws_security_token = FwoGZXIvYXdzEO///////////wEaDNDhJFopSmXKRFH/4yKGAXK2pmo9hcYIw3+okJMHhociZhscDkf1/W+yv9Ahertet0HmWZNgPeXIeL5YV46fdGRPv0mOTJTW2Ie2YfertrtCQl7T41/zUMWDKgMjsHWiWrUG8rAZkZQY2CUskrgVR9kCqQc5K28wgEtrqXsNtfcCRpywertwert5bjVPCUkVY4RqHKFnpwuA9HUjBvQwertwtokGMijMD3Ced9h6vl2gQ8Mz7Brwtrwtruh2DwBVBAXhBTWs3NSfZAFgvn3FJ expiration = 2021-09-03 17:48:24 |
как видим добавился [test-mid]
всё готово, теперь можем спокойно работать например смотри какие есть s3 бакеты:
aws s3 ls --profile mfa-profile
обращаем внимание что в качестве профайла используем не test-mid а mfa-profile