0Pricing
AWS Solutions Architect · Урок

Роли и политики IAM

Напишите документы политик JSON, прикрепите их к ролям и разберитесь в различиях между политиками на основе идентификаторов и политиками на основе ресурсов.

«Роли и политики IAM» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Policy IAM: язык разрешений

Policy IAM — это документ JSON, в котором указано, что разрешено. Каждый оператор содержит Effect (Allow или Deny), Action и Resource. В коде показан один оператор.

{
  'Version': '2012-10-17',
  'Statement': [
    {
      'Effect': 'Allow',
      'Action': [
        's3:GetObject',
        's3:PutObject'
      ],
      'Resource': 'arn:aws:s3:::my-bucket/*'
    }
  ]
}

Policy на основе идентификационных данных и policy на основе Resource

Policy на основе идентификационных данных прикрепляется к пользователю или роли и определяет, что им разрешено делать. Policy на основе Resource прикрепляется непосредственно к объекту и определяет, кто может обращаться к нему.

# Example S3 bucket policy (resource-based)
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'AWS': 'arn:aws:iam::123456789012:role/MyAppRole'
    },
    'Action': 's3:GetObject',
    'Resource': 'arn:aws:s3:::my-bucket/*'
  }]
}

Роли IAM: временные идентификационные данные

Роль IAM — это идентификационные данные, которые Вы принимаете на короткое время. Она предоставляет временные учётные данные с ограниченным сроком действия — это идеально подходит для EC2, Lambda и других сервисов.

# Attach an IAM role to an EC2 instance (instance profile)
aws ec2 associate-iam-instance-profile \
  --instance-id i-0abcdef1234567890 \
  --iam-instance-profile Name=MyEC2Role

Trust policy: кто может принять роль

У каждой роли есть trust policy, определяющая, кто может её принять, а также policy разрешений, определяющая действия после принятия роли. Нет trust policy — нет доступа.

# Trust policy for a Lambda execution role
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {
      'Service': 'lambda.amazonaws.com'
    },
    'Action': 'sts:AssumeRole'
  }]
}

Роли сервисов AWS: EC2 и Lambda

Когда EC2 требуется вызвать AWS, предоставьте ему профиль instance, содержащий роль. Учётные данные автоматически заменяются — жёстко заданные ключи не нужны. Lambda работает так же.

# Retrieve role credentials from EC2 metadata (IMDSv2)
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
  -H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/iam/security-credentials/MyEC2Role

Принятие роли между аккаунтами

Роль между аккаунтами позволяет пользователю одного аккаунта принять роль в другом аккаунте и получить доступ к его Resource. Благодаря этому в конфигурациях с несколькими аккаунтами не нужно создавать одинаковых пользователей повсюду.

# Assume a cross-account role from Account A
aws sts assume-role \
  --role-arn arn:aws:iam::999999999999:role/CrossAccountRole \
  --role-session-name my-session

Условия policy: точный контроль

Condition добавляет к policy дополнительные правила — например, требование MFA или ограничение доступа определённым диапазоном IP-адресов или регионом. Это делает разрешения гораздо строже.

# Policy that requires MFA for sensitive actions
{
  'Effect': 'Deny',
  'Action': ['iam:*', 'cloudtrail:*'],
  'Resource': '*',
  'Condition': {
    'BoolIfExists': {
      'aws:MultiFactorAuthPresent': 'false'
    }
  }
}

Границы разрешений

Граница разрешений ограничивает максимальный набор разрешений идентификационных данных, даже если policy предоставляет больше. Это страховочная сетка, позволяющая разработчикам создавать собственные роли.

# Attach a permissions boundary to a user
aws iam put-user-permissions-boundary \
  --user-name alice \
  --permissions-boundary arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess

Логика оценки policy

При проверке запроса AWS действует главное правило: явный Deny всегда блокирует запрос. После этого каждый уровень policy должен разрешать доступ.

Имитатор policy IAM

Имитатор policy IAM проверяет, может ли идентификационная запись выполнить действие, не выполняя его на самом деле. Это отличный способ отладить разрешения до запуска в рабочей среде.

# Simulate an IAM policy evaluation via CLI
aws iam simulate-principal-policy \
  --policy-source-arn arn:aws:iam::123456789012:user/alice \
  --action-names s3:PutObject \
  --resource-arns arn:aws:s3:::my-bucket/*

Роли для федеративного доступа

Внешние пользователи из Okta, Google или Active Directory могут принимать роли через федерацию (SAML или OIDC). Так можно предоставить доступ миллионам людей, не создавая пользователей IAM.

Быстрая проверка

Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

Кратко: policy — это правила JSON для Allow и Deny, роли предоставляют временные учётные данные, а условия обеспечивают точный контроль. Далее: минимально необходимые разрешения.

Часто задаваемые вопросы

Урок «Роли и политики IAM» бесплатный?

Да — полный текст урока «Роли и политики IAM» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Роли и политики IAM»?

Напишите документы политик JSON, прикрепите их к ролям и разберитесь в различиях между политиками на основе идентификаторов и политиками на основе ресурсов. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Роли и политики IAM»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Пользователи и группы IAM
  2. Роли и политики IAM
  3. Принцип минимальных привилегий
  4. Рекомендации по IAM и MFA
← Назад к AWS Solutions Architect