Перейти к содержимому

AWS CloudTrail для S3 (чистый уровень R/RW)

Источник s3cloudtrail превращает события данных S3 AWS CloudTrail в рёбра карты доступа: одно ребро на каждое событие S3, причём режим чтения/записи берётся дословно из поля readOnly CloudTrail — никогда не выводится — а инициатором служит IAM-принципал, которому CloudTrail приписывает вызов. Это чистый уровень для объектного хранилища, аналог pgAudit для Postgres.

Коннектор читает локальные файлы логов и никогда не вызывает AWS: вы доставляете файлы CloudTrail (стандартный макет S3-доставки, который ваш trail уже производит), он их разбирает. Обрабатываются только события eventSource == s3.amazonaws.com — события плоскости управления относятся к коннектору обнаружения облака aws, а не к этому.

ПолеЗначение
Источник сигналаcloudtrail
РежимreadOnly: trueread, falsewrite, отсутствует → unknown — дословно, никогда не угадывается
ИнициаторIAM-принципал (пользователь, сессия принятой роли, сервис AWS)
Достоверностьattributed; approximate для общих принятых ролей и вызовов, инициированных сервисом
Уровень охватаclean

1. Предварительные требования на стороне AWS

Заголовок раздела «1. Предварительные требования на стороне AWS»
  • CloudTrail trail с включёнными событиями данных S3 для бакетов, которыми вы управляете (события данных не входят в trail управления по умолчанию).
  • Доставка файлов логов trail в место, доступное для чтения с хоста движка, — стандартный бакет доставки S3, синхронизированный или смонтированный локально. Коннектор принимает классические файлы {"Records":[…]} (обычные или .json.gz) и записи, разделённые переводами строк.
{
"sources": [{
"name": "prod-s3-trail",
"kind": "s3cloudtrail",
"tenant": "<tenant-id>",
"config": {
"path": "/var/lib/cloudtrail/prod/",
"shared_accounts": "arn:aws:iam::123456789012:role/app-runtime"
}
}]
}
КлючОбязательныйЗначение
pathдаодин файл CloudTrail или каталог файлов *.json / *.json.gz
shared_accountsнетразделённые запятыми ARN ролей, которые делят многие вызывающие — их рёбра честно approximate

(s3-cloudtrail принимается как псевдоним для kind.)

Бакеты и объекты S3 присоединяются к Карте доступа со значками чистого уровня; чтения и записи окрашены по флагу readOnly. Панель дрейфа сопоставляет их с заявленными грантами точно так же, как для любого другого источника.

В Inventory принципалы, которым CloudTrail приписывает вызовы, появляются как идентичности, готовые к привязке к агентам — именно эта привязка превращает approximate общей роли в attributed для конкретного агента.

Честные ограничения — прочтите их прежде чем доверять карте

Заголовок раздела «Честные ограничения — прочтите их прежде чем доверять карте»
  • Принятая роль, которую делят многие вызывающие, не может назвать настоящего вызывающего. CloudTrail приписывает вызов сессии роли; если роль общая, ребро намеренно approximate. Объявление роли в shared_accounts делает это явным. Устойчивое решение — идентичность для каждого агента (зависимость от идентичности).
  • Событий данных, которые вы не включили, не существует. CloudTrail записывает только то, что trail настроен записывать; отсутствие ребра не есть отсутствие доступа, если события данных для бакета выключены.
  • Задержка доставки — это задержка CloudTrail. События данных приходят по расписанию доставки CloudTrail (обычно минуты); этот источник не является отводом в реальном времени.