AWS Identity and Access Management (IAM) позволяет управлять доступом к AWS аккаунту и ресурсам, используемым в нем.
С помощью IAM можно управлять доступом пользователей вашего аккаунта к отдельным реурсам, предоставлять доступ другим системам к этому аккаунту с помощью AWS Security Token Service и предоставлять доступ к ресурсам аккаунта для другого аккаунта AWS.
Не все сервисы имеют интеграцию с AIM, полный список доступен тут>>>.
Группы и пользователи
По рекомендации в IAM Best Practices — создадим группу sudo (aka «admin«), и пользователя setevoy в ней.
Переходим в консоль AWS > AIM > Groups, и добавляем группу:
Далее требуется подключить политику доступа к этой группе.
Политики доступа определяют список ресурсов и действия, которые допустимы к выполнению. Политики можно подключить к группе, пользователю или роли.
Политики бывают двух типов:
- Managed policies: политики, которые можно подключить к пользователям, группам или ролям аккаунта. В свою очередь Managed policies делятся на еще два типа:
- AWS managed policies: создаются и управляются самим AWS.
- Customer managed policies: создаются и управляются пользователем.
- Inline policies: политики, подключенные непосредственно к пользователю, группе или роли. Так же имеются resource-based политики, однако тут о них говорить не будем.
Больше о политиках доступа можно прочитать тут>>> и тут>>>.
Выбираем политику:
Подтверждаем, и сохраняем:
Аналогичные действия — с помощью AWS CLI:
$ aws iam create-group --group-name sudo { "Group": { "CreateDate": "2016-03-18T14:41:37.819Z", "GroupId": "AGPAJMJZ6NMS5MI4IGVMA", "Path": "/", "Arn": "arn:aws:iam::264418146286:group/sudo", "GroupName": "sudo" } }
Проверяем:
$ aws iam list-groups { "Groups": [ { "GroupId": "AGPAJMJZ6NMS5MI4IGVMA", "GroupName": "sudo", "CreateDate": "2016-03-18T14:41:37Z", "Path": "/", "Arn": "arn:aws:iam::264418146286:group/sudo" } ] }
Что бы подключить политику — находим ее с помощью list-policies
с опцией --scope AWS
, что бы ограничить список только AWS-managed политиками:
Примечание: для list-policies
требуется AWS CLI версии 1.10 и выше. В Ubuntu из репоизтория устанавливается 1.2, тогда как pip install awscli
устанавливает последнюю версию.
Выполняем:
$ aws iam list-policies --scope AWS | grep AdministratorAccess "PolicyName": "AdministratorAccess", "Arn": "arn:aws:iam::aws:policy/AdministratorAccess",
Получить описание политики можно с помощью get-policy
:
$ aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AdministratorAccess { "Policy": { "PolicyName": "AdministratorAccess", "Description": "Provides full access to AWS services and resources.", "CreateDate": "2015-02-06T18:39:46Z", "AttachmentCount": 1, "IsAttachable": true, "PolicyId": "ANPAIWMBCKSKIEE64ZLYK", "DefaultVersionId": "v1", "Path": "/", "Arn": "arn:aws:iam::aws:policy/AdministratorAccess", "UpdateDate": "2015-02-06T18:39:46Z" } }
Полный список команд для aws::iam
можно найти тут>>>.
Подключаем ее к группе sudo:
$ aws iam attach-group-policy --group-name sudo --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
Проверяем:
$ aws iam list-attached-group-policies --group-name sudo { "AttachedPolicies": [ { "PolicyName": "AdministratorAccess", "PolicyArn": "arn:aws:iam::aws:policy/AdministratorAccess" } ] }
Создаем пользователя:
$ aws iam create-user --user-name setevoy { "User": { "UserName": "setevoy", "Path": "/", "CreateDate": "2016-03-18T15:08:18.547Z", "UserId": "AIDAJH6M4FHV4YCS7DPI4", "Arn": "arn:aws:iam::264418146286:user/setevoy" } }
Добавляем его в группу sudo:
$ aws iam add-user-to-group --user-name setevoy --group-name sudo
Проверяем группу:
$ aws iam get-group --group-name sudo { "Group": { "Path": "/", "CreateDate": "2016-03-18T14:41:37Z", "GroupId": "AGPAJMJZ6NMS5MI4IGVMA", "Arn": "arn:aws:iam::264418146286:group/sudo", "GroupName": "sudo" }, "Users": [ { "UserName": "setevoy", "Path": "/", "CreateDate": "2016-03-18T15:08:18Z", "UserId": "AIDAJH6M4FHV4YCS7DPI4", "Arn": "arn:aws:iam::264418146286:user/setevoy" } ] }
Устанавливаем пароль для этого пользователя:
$ aws iam create-login-profile --user-name setevoy --password p@ssw0rd { "LoginProfile": { "UserName": "setevoy", "CreateDate": "2016-03-18T15:48:23.615Z", "PasswordResetRequired": false } }
Для изменения — используйте update-login-profile
:
$ aws iam update-login-profile --user-name setevoy --password NEWp@ssw0rd
И добавим ключи доступа:
$ aws iam create-access-key --user-name setevoy { "AccessKey": { "UserName": "setevoy", "Status": "Active", "CreateDate": "2016-03-18T15:52:55.815Z", "SecretAccessKey": "cbd***M6W", "AccessKeyId": "AKI***6GA" } }
Для входа в панель управления теперь можно использовать специальный URL входа:
Что бы изменить его и вместо ID использовать какое-то имя — кликаем справа на Customize и задаем алиас:
Теперь зайти в панель управления можно по адресу https://setevoy.signin.aws.amazon.com/console.
Ссылки по теме
Multi-Factor Authentication — двухфакторная авторизация
AWS CloudTrail — логгирование событий
AWS IAM Policy Reference — создание и управление политиками