Ответ
Да, создание кастомных IAM ролей — это фундаментальная практика безопасности и управления доступом в AWS (принцип наименьших привилегий).
Роль (IAM Role) — это сущность с разрешениями, которая не привязана к конкретному пользователю. Её могут "принимать" (assume) AWS-сервисы (EC2, Lambda), пользователи из другого AWS-аккаунта или федеративные пользователи.
Практический пример создания роли для EC2-инстанса через Terraform (Infrastructure as Code):
# 1. Политика доверия (Trust Policy): определяет, кто может принять эту роль.
data "aws_iam_policy_document" "ec2_assume_role" {
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = ["ec2.amazonaws.com"]
}
}
}
# 2. Создание самой роли.
resource "aws_iam_role" "app_instance_role" {
name = "my-app-instance-role"
assume_role_policy = data.aws_iam_policy_document.ec2_assume_role.json
}
# 3. Прикрепление managed policy (например, только для чтения S3).
resource "aws_iam_role_policy_attachment" "s3_read_only" {
role = aws_iam_role.app_instance_role.name
policy_arn = "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
}
# 4. Создание Instance Profile для привязки роли к EC2.
resource "aws_iam_instance_profile" "app_instance_profile" {
name = "my-app-instance-profile"
role = aws_iam_role.app_instance_role.name
}
# 5. Запуск EC2 инстанса с этой ролью.
resource "aws_instance" "app_server" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
iam_instance_profile = aws_iam_instance_profile.app_instance_profile.name
# ...
}
Зачем это нужно в DevOps:
- Безопасность: Убирает необходимость хранить долгоживущие Access Keys на инстансах.
- Грантулярный доступ: Можно создать роль, разрешающую только писать логи в конкретный CloudWatch Log Group или вытягивать секреты из определённого параметра в Parameter Store.
- Автоматизация: Сервисы типа Lambda, ECS, EKS автоматически принимают роли, что критично для бессерверных и контейнерных архитектур.
Создание через AWS Console/CLI — это оперативная ручная настройка, в то время как использование Terraform, CloudFormation или CDK (Infrastructure as Code) является стандартом для воспроизводимых и контролируемых конфигураций.