Для службы AWS IAM мы должны использовать доступ с наименьшими привилегиями. Это лучшая практика использования IAM в целях безопасности. Для пользователей IAM лучшей практикой является прикрепление политики на уровне группы. Для «специфических» сервисов AWS лучшим способом предоставления разрешения для источника и политики IAM для назначения является роль IAM.
Например:
- Используйте роль IAM для предоставления разрешения для экземпляров EC2, допустим, для доступа к S3, например, для списка или создания ведра.
- Используйте политику 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, убедитесь в этом:
- Удалите роль из профиля экземпляра перед удалением профиля экземпляра.
- Удалите профиль экземпляра.
- Отсоединить все политики от роли.
Вот и все! Спасибо, что пришли, и я с нетерпением жду ваших отзывов. Следите за мной, чтобы получать уведомления о публикации новых статей!