Лучший способ предоставления разрешений службам AWS

Для службы AWS IAM мы должны использовать доступ с наименьшими привилегиями. Это лучшая практика использования IAM в целях безопасности. Для пользователей IAM лучшей практикой является прикрепление политики на уровне группы. Для «специфических» сервисов AWS лучшим способом предоставления разрешения для источника и политики IAM для назначения является роль IAM.

Например:

  1. Используйте роль IAM для предоставления разрешения для экземпляров EC2, допустим, для доступа к S3, например, для списка или создания ведра.
  2. Используйте политику IAM, чтобы разрешить доступ только из любых источников, скажем, для статического веб-сайта мы разрешаем публичный доступ к определенному ведру.

Здесь я покажу вам первый вариант — роль IAM!

1. Создать экземпляр EC2
Здесь я создам экземпляр EC2 через CLI с Amazon Linux 2 в качестве AMI и оставлю все остальное по умолчанию. Перед этим я также импортирую пару ключей.

$ aws ec2 import-key-pair --key-name "ec2-user" --public-key-material fileb://home/nurulramadhona/.ssh/id_rsa.pub
$ aws ec2 run-instances --image-id ami-021fb2b73ff1efc96 --count 1 --instance-type t3.micro --key-name ec2-user
$ aws ec2 describe-instances --query 'Reservations[].Instances[].{PublicIP:PublicIpAddress, ID:InstanceId}'
[
    {
        "PublicIP": "108.136.45.150",
        "ID": "i-0f3df2b1eb51bc6a1"
    }
]
Вход в полноэкранный режим Выйдите из полноэкранного режима

2. Создайте IAM-роль & прикрепите политику
Доверительный документ:

$ cat ec2-role.json 
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Войти в полноэкранный режим Выход из полноэкранного режима
$ aws iam create-role --role-name ec2-role --assume-role-policy-document file://ec2-role.json
$ aws iam attach-role-policy --role-name ec2-role --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
Войти в полноэкранный режим Выйти из полноэкранного режима

3. Создайте профиль экземпляра & добавьте роль
Профиль экземпляра — это контейнер для роли IAM, который можно использовать для передачи информации о роли экземпляру EC2 при его запуске. Обратите внимание, что для каждого профиля экземпляра может быть только одна роль.

$ aws iam create-instance-profile --instance-profile-name ec2-profile
$ aws iam add-role-to-instance-profile --role-name ec2-role --instance-profile-name ec2-profile
Вход в полноэкранный режим Выход из полноэкранного режима

4. Ассоциировать профиль экземпляра с экземплярами EC2

aws ec2 associate-iam-instance-profile --instance-id i-0f3df2b1eb51bc6a1 --iam-instance-profile Name=ec2-profile
aws ec2 describe-iam-instance-profile-associations
Войдите в полноэкранный режим Выйти из полноэкранного режима

Давайте проверим!
Перед:

$ ssh ec2-user@108.136.45.150 

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|___|___|

https://aws.amazon.com/amazon-linux-2/
4 package(s) needed for security, out of 5 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-172-31-0-125 ~]$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
Войти в полноэкранный режим Выйти из полноэкранного режима

После:

[ec2-user@ip-172-31-0-125 ~]$ aws s3 ls
[ec2-user@ip-172-31-0-125 ~]$ aws s3 mb s3://bucket-ec2-role
make_bucket failed: s3://bucket-ec2-role An error occurred (AccessDenied) when calling the CreateBucket operation: Access Denied
Войти в полноэкранный режим Выйти из полноэкранного режима

5. Доступ с наименьшими привилегиями
Как мы видим выше, мы можем составить список bucket (в настоящее время пустой), но не можем создать bucket с ошибкой Access Denied. Если нам это действительно нужно, мы можем прикрепить еще одну политику к роли IAM. Это то, что я имею в виду под «давать разрешение по мере необходимости». Итак, давайте попробуем!

$ aws iam attach-role-policy --role-name ec2-role --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
Вход в полноэкранный режим Выход из полноэкранного режима
[ec2-user@ip-172-31-0-125 ~]$ aws s3 mb s3://bucket-ec2-role
make_bucket: bucket-ec2-role
[ec2-user@ip-172-31-0-125 ~]$ aws s3 ls
2022-05-26 02:43:47 bucket-ec2-role
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем мы также можем отсоединиться, если политика больше не нужна.

$ aws iam detach-role-policy --role-name ec2-role --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
Войти в полноэкранный режим Выход из полноэкранного режима
[ec2-user@ip-172-31-0-125 ~]$ aws s3 mb s3://bucket-ec2-role2
make_bucket failed: s3://bucket-ec2-role2 An error occurred (AccessDenied) when calling the CreateBucket operation: Access Denied
Войти в полноэкранный режим Выйти из полноэкранного режима

Дополнительно:
В случае если вы хотите удалить роль IAM, убедитесь в этом:

  1. Удалите роль из профиля экземпляра перед удалением профиля экземпляра.
  2. Удалите профиль экземпляра.
  3. Отсоединить все политики от роли.

Вот и все! Спасибо, что пришли, и я с нетерпением жду ваших отзывов. Следите за мной, чтобы получать уведомления о публикации новых статей!

Оцените статью
devanswers.ru
Добавить комментарий