Удостоверение, ресурс и граница

Использование AWS Security для разработчиков

Rahul Singh

Technical Product Manager

Какая политика главная?

Правка, которая ничего не меняет

  • Глава 1: явный запрет или отсутствие разрешения
  • Здесь: третья причина

Запрос проходит через три проверки политик, а на месте решения — знак вопроса.

Использование AWS Security для разработчиков

Какая политика главная?

До трёх уровней

  1. Политика удостоверения для вызывающей стороны
  2. Политика ресурса для самого ресурса
  3. Граница сверху — только отнимает права

В собственной учётной записи достаточно разрешения от одной из политик

Запрет на любом уровне блокирует запрос

Запрос проходит сверху вниз через три проверки по порядку — политику удостоверения, политику ресурса и границу разрешений — и в итоге получает разрешение.

Использование AWS Security для разработчиков

Два места, где может находиться политика

Политика на основе удостоверения

  • Прикреплена к вызывающей стороне
  • Определяет, что может делать это удостоверение
  • Как пропуск, который вы носите с собой

Роль наверху несёт политику на основе удостоверения, а под ней — место для ресурсной стороны того же запроса.

Использование AWS Security для разработчиков

Два места, где может находиться политика

Политика на основе удостоверения

  • Прикреплена к вызывающей стороне
  • Определяет, что может делать это удостоверение
  • Как пропуск, который вы носите с собой

Политика на основе ресурса

  • Прикреплена к ресурсу
  • Определяет, кто может его использовать
  • Нужна для вызовов из других учётных записей

Роль наверху несёт политику на основе удостоверения, а бакет S3 внизу — политику на основе ресурса; запрос проходит между ними.

Использование AWS Security для разработчиков

Управляется AWS или вами

Два вида политик на основе удостоверения

  • Управляемые AWS: принадлежат AWS
  • Управляемые клиентом: принадлежат вам

Две карточки сравнивают управляемую AWS политику — она принадлежит AWS и по умолчанию широкая — с политикой, управляемой клиентом, которая принадлежит вам и ограничена конкретной задачей.

Использование AWS Security для разработчиков

Управляется AWS или вами

Два вида политик на основе удостоверения

  • Управляемые AWS: принадлежат AWS
  • Управляемые клиентом: принадлежат вам

 

Удобство или точность

  • Управляемые AWS: быстрый старт
  • Управляемые клиентом: минимальные привилегии

Две карточки сравнивают управляемую AWS политику — она принадлежит AWS и по умолчанию широкая — с политикой, управляемой клиентом, которая принадлежит вам и ограничена конкретной задачей.

Использование AWS Security для разработчиков

Граница ограничивает предоставленные политикой права

Зачем учётной записи это нужно

  • Разработчики создают роли, никто не повышает привилегии

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

  • Потолок того, что может предоставить политика
  • Действуют только права, разрешённые обеими

Три разрешения из политики удостоверения проходят через границу разрешений, которая допускает только действия S3: разрешение iam:CreateUser блокируется, а два других переходят в итоговые разрешения ниже.

Использование AWS Security для разработчиков

Граница ограничивает предоставленные политикой права

Зачем учётной записи это нужно

  • Разработчики создают роли, никто не повышает привилегии

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

  • Потолок того, что может предоставить политика
  • Действуют только права, разрешённые обеими

Почему iam:CreateUser не сработал

  • Только отнимает права, никогда не даёт их

Три разрешения из политики удостоверения проходят через границу разрешений, которая допускает только действия S3: разрешение iam:CreateUser блокируется, а два других переходят в итоговые разрешения ниже.

Использование AWS Security для разработчиков

Граница ограничивает предоставленные политикой права

Зачем учётной записи это нужно

  • Разработчики создают роли, никто не повышает привилегии

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

  • Потолок того, что может предоставить политика
  • Действуют только права, разрешённые обеими

Почему iam:CreateUser не сработал

  • Только отнимает права, никогда не даёт их

Политика сеанса: один сеанс AssumeRole

Три разрешения из политики удостоверения проходят через границу разрешений, которая допускает только действия S3: разрешение iam:CreateUser блокируется, а два других переходят в итоговые разрешения ниже.

Использование AWS Security для разработчиков

Условие сужает разрешение

Ключ условия

  • Сужает разрешение до контекста конкретного запроса

  • aws:SourceIp: сеть, откуда пришёл запрос

Одно разрешение на чтение объекта S3 проходит через блок условий с ключами сети источника и тега вызывающей стороны, а затем разделяется на разрешённый путь, где контекст совпадает, и запрещённый, где нет.

Использование AWS Security для разработчиков

Условие сужает разрешение

Ключ условия

  • Сужает разрешение до контекста конкретного запроса

  • aws:SourceIp: сеть, откуда пришёл запрос

  • aws:PrincipalTag: тег вызывающей стороны

ABAC: управление доступом на основе атрибутов

  • Одна политика — много субъектов

Одно разрешение на чтение объекта S3 проходит через блок условий с ключами сети источника и тега вызывающей стороны, а затем разделяется на разрешённый путь, где контекст совпадает, и запрещённый, где нет.

Использование AWS Security для разработчиков

Одна таблица, один арендатор за раз

Одна общая таблица

  • DynamoDB, свой ключ партиции для каждого арендатора
  • Сама по себе не обеспечивает изоляцию

Вызывающая сторона арендатора A проходит через условие по ведущим ключам в общую таблицу DynamoDB: строки арендатора A возвращаются, а строки арендаторов B и C блокируются.

Использование AWS Security для разработчиков

Одна таблица, один арендатор за раз

"Condition": {
  "ForAllValues:StringEquals": {
    "dynamodb:LeadingKeys": ["${aws:PrincipalTag/tenant}"]
  }
}

Одна общая таблица

  • DynamoDB, свой ключ партиции для каждого арендатора
  • Сама по себе не обеспечивает изоляцию

Одно условие сужает доступ

  • ForAllValues: должны совпадать все переданные ключи
Использование AWS Security для разработчиков

Одна таблица, один арендатор за раз

"Action": ["dynamodb:Query", "dynamodb:GetItem", "dynamodb:Scan"],
"Condition": {
  "ForAllValues:StringEquals": {
    "dynamodb:LeadingKeys": ["${aws:PrincipalTag/tenant}"]
  }
}

Одна общая таблица

  • DynamoDB, свой ключ партиции для каждого арендатора
  • Сама по себе не обеспечивает изоляцию

Одно условие сужает доступ

  • ForAllValues: должны совпадать все переданные ключи
Пробел: не каждый запрос указывает партицию
  • dynamodb:Scan не передаёт ключей, поэтому проверке нечего отклонять
Использование AWS Security для разработчиков

Давайте потренируемся!

Использование AWS Security для разработчиков

Preparing Video For Download...