Авторизація доступу сервісів за допомогою IAM

Розгортання застосунків в AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Ключ у коміті

  • Довгостроковий ключ доступу потрапляє в репозиторій
  • Сканер-бот знаходить його й накручує рахунок
  • Ролі та принцип мінімальних привілеїв запобігають цьому

Ключ доступу AWS випадково потрапив у коміт і позначений як ризик безпеки

Розгортання застосунків в AWS

Принципали IAM: користувачі, ролі та політики

Тридольна діаграма IAM: Principal (користувач, сервіс або роль) ліворуч, документ Policy з діями Allow/Deny посередині, IAM Role з тимчасовими короткоживучими обліковими даними праворуч

  • Principal: хто надсилає запит
  • Policy: документ JSON, що надає дозволи
  • Role: набір дозволів, який сутність може прийняти
  • Ролі приймають; користувачі мають довгострокові облікові дані
Розгортання застосунків в AWS

Правильні програмні облікові дані

  • Lambda: роль виконання надає дозволи
  • EC2: профіль інстансу передає облікові дані ролі
  • ECS: ролі задач визначають дозволи для кожної задачі
  • Жодних довгострокових ключів доступу в коді чи конфігах

Три обчислювальні сервіси AWS використовують ролі без довгострокових ключів: Lambda з роллю виконання, EC2 з профілем інстансу та ECS з роллю задачі; показано автоматичну ротацію облікових даних

Розгортання застосунків в AWS

AssumeRole та STS

  • STS AssumeRole: отримайте тимчасові облікові дані для ролі
  • Використовується для кросакаунтного доступу
  • Trust policy контролює, хто може прийняти роль
  • Облікові дані короткочасні та автоанулюються

Потік STS AssumeRole між акаунтами: викликаючий в акаунті A запитує облікові дані у STS, trust policy ролі в акаунті B дозволяє це, STS повертає короткочасні облікові дані, що автоанулюються

Розгортання застосунків в AWS

Мінімальні привілеї та структура політики

Політичний запис має три обов'язкові частини (Effect, Action і Resource) плюс необов'язкову Condition:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Розгортання застосунків в AWS

Де закінчується IAM і починається ваш код


IAM: рівень сервісу

  • Авторизує виклики AWS API: чи може ця роль виконати цю операцію?
  • Не може забезпечити правила на орендаря або на запис

Ваш код: рівень даних

  • Зіставляє автентифікованого користувача з потрібними даними
  • Використовуйте обидва: IAM захищає сервіс, ваш код — дані
Розгортання застосунків в AWS

Мінімально необхідна роль виконання на практиці

Мінімальна роль виконання Lambda: єдиний дозвіл DynamoDB PutItem лише на один ARN таблиці, без підстановок у дії чи ресурсі

  • Lambda має записувати в одну таблицю DynamoDB
  • Надайте dynamodb:PutItem лише на ARN цієї таблиці
  • Жодних підстановок у дії чи ресурсі
  • Додавайте більше лише якщо реальний виклик відхилено
Розгортання застосунків в AWS

Давайте потренуємось!

Розгортання застосунків в AWS

Preparing Video For Download...