AWS: IAM – Identity and Access Management

Автор: | 04/04/2016
 

aws-logo-square-02AWS Identity and Access Management (IAM) позволяет управлять доступом к AWS аккаунту и ресурсам, используемым в нем.

С помощью IAM можно управлять доступом пользователей вашего аккаунта к отдельным реурсам, предоставлять доступ другим системам к этому аккаунту с помощью AWS Security Token Service и предоставлять доступ к ресурсам аккаунта для другого аккаунта AWS.

Не все сервисы имеют интеграцию с AIM, полный список доступен тут>>>.

Группы и пользователи

По рекомендации в IAM Best Practices – создадим группу sudo (aka “admin“), и пользователя setevoy в ней.

Переходим в консоль AWS > AIM > Groups, и добавляем группу:

aim_1

aim_2

Далее требуется подключить политику доступа к этой группе.

Политики доступа определяют список ресурсов и действия, которые допустимы к выполнению. Политики можно подключить к группе, пользователю или роли.

Политики бывают двух типов:

  • Managed policies: политики, которые можно подключить к пользователям, группам или ролям аккаунта. В свою очередь Managed policies делятся на еще два типа:
    • AWS managed policies: создаются и управляются самим AWS.
    • Customer managed policies: создаются и управляются пользователем.
  • Inline policies: политики, подключенные непосредственно к пользователю, группе или роли. Так же имеются resource-based политики, однако тут о них говорить не будем.

Больше о политиках доступа можно прочитать тут>>> и тут>>>.

Выбираем политику:

aim_3

Подтверждаем, и сохраняем:

aim_4

Аналогичные действия – с помощью 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 входа:

aim_5

Что бы изменить его и вместо ID использовать какое-то имя – кликаем справа на Customize и задаем алиас:

aim_6

Теперь зайти в панель управления можно по адресу https://setevoy.signin.aws.amazon.com/console.

Ссылки по теме

Multi-Factor Authentication – двухфакторная авторизация

AWS CloudTrail – логгирование событий

AWS IAM Policy Reference – создание и управление политиками