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: true → read, false → write, отсутствует → unknown — дословно, никогда не угадывается |
| Инициатор | IAM-принципал (пользователь, сессия принятой роли, сервис AWS) |
| Достоверность | attributed; approximate для общих принятых ролей и вызовов, инициированных сервисом |
| Уровень охвата | clean |
1. Предварительные требования на стороне AWS
Заголовок раздела «1. Предварительные требования на стороне AWS»- CloudTrail trail с включёнными событиями данных S3 для бакетов, которыми вы управляете (события данных не входят в trail управления по умолчанию).
- Доставка файлов логов trail в место, доступное для чтения с хоста движка, —
стандартный бакет доставки S3, синхронизированный или смонтированный локально.
Коннектор принимает классические файлы
{"Records":[…]}(обычные или.json.gz) и записи, разделённые переводами строк.
2. Объявление источника
Заголовок раздела «2. Объявление источника»{ "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.)
3. Что вы увидите в консоли
Заголовок раздела «3. Что вы увидите в консоли»Бакеты и объекты S3 присоединяются к Карте доступа со значками чистого
уровня; чтения и записи окрашены по флагу readOnly. Панель дрейфа сопоставляет
их с заявленными грантами точно так же, как для любого другого источника.
В Inventory принципалы, которым CloudTrail приписывает вызовы, появляются как
идентичности, готовые к привязке к агентам — именно эта привязка превращает
approximate общей роли в attributed для конкретного агента.
Честные ограничения — прочтите их прежде чем доверять карте
Заголовок раздела «Честные ограничения — прочтите их прежде чем доверять карте»- Принятая роль, которую делят многие вызывающие, не может назвать настоящего
вызывающего. CloudTrail приписывает вызов сессии роли; если роль общая,
ребро намеренно
approximate. Объявление роли вshared_accountsделает это явным. Устойчивое решение — идентичность для каждого агента (зависимость от идентичности). - Событий данных, которые вы не включили, не существует. CloudTrail записывает только то, что trail настроен записывать; отсутствие ребра не есть отсутствие доступа, если события данных для бакета выключены.
- Задержка доставки — это задержка CloudTrail. События данных приходят по расписанию доставки CloudTrail (обычно минуты); этот источник не является отводом в реальном времени.
Связанное
Заголовок раздела «Связанное»- pgAudit — та же дисциплина чистого уровня для PostgreSQL.
- Подключение источника — модель коннектора.
- Коннекторы и уровни охвата — где честно находится каждое хранилище.