Механизм логирования действий с бакетом
В Object Storage есть механизм логирования всех действий с бакетом. Вы можете записывать логи, например, для проведения внутреннего аудита безопасности или для уточнения информации по операциям с бакетом.
Примечание
Действия, которые выполняются с объектами в рамках жизненного цикла, не логируются.
По умолчанию механизм логирования отключен. После его включения, Object Storage будет записывать информацию о действиях с бакетом в виде объекта раз в час.
Чтобы записывать логи, необходимо:
- определить исходный бакет, действия с которым необходимо логировать;
- создать целевой бакет, куда будут записываться логи;
- включить механизм логирования с помощью консоли управления
, AWS CLI, Terraform или API; - (опционально) выбрать префикс ключа объекта.
Требования
-
Исходный и целевой бакеты должны различаться.
-
Исходный и целевой бакеты должны находиться в одном облаке.
-
На целевом бакете не должно быть включено шифрование.
Примечание
Чтобы записывать логи в целевой бакет, для которого настроена политика доступа, добавьте в нее правило, разрешающее всем учетным записям выполнять действие PutObject
, а в качестве ресурса укажите префикс ключа для объектов с логами, например logs/
.
Формат ключа объекта с логами
Object Storage использует следующий формат ключа объекта с логами:
<префикс>/ГГГГ-ММ-ДД-ЧЧ-ММ-СС-<идентификатор>
Где:
<префикс>
— префикс ключа объекта с логами. Вы можете самостоятельно указать префикс при включении механизма логирования.ГГГГ-ММ-ДД-ЧЧ-ММ-СС
— дата и время сохранения объекта с логами в целевом бакете, в формате UTC.<идентификатор>
— уникальный идентификатор записи, который предотвращает перезапись объекта.
Префикс ключа
Префикс ключа позволяет различать:
- Данные из разных бакетов, если логи для нескольких исходных бакетов сохраняются в один целевой.
- Действия по логированию от остальных действий с бакетом, если логи сохраняются в исходном бакете. Так как в этом случае сама операция логирования тоже будет учтена как действие с бакетом.
- Объекты с логами и другие объекты, чтобы периодически удалять логи. Вы можете настроить жизненный цикл целевого бакета так, чтобы объекты с определенным префиксом ключа удалялись автоматически.
Формат объекта с логами
Логи сохраняются в файл в формате JSON. На каждое действие с бакетом в файле появляется соответствующая запись.
Полный список сохраняемых параметров представлен в справочнике логов.
Пример записи в файле с логами:
{
"bucket": "my-bucket-example",
"bytes_received": 749,
"bytes_send": 1251,
"handler": "REST.GET.OBJECT",
"http_referer": "https://example.com/page",
"ip": "84.201.121.46",
"method": "GET",
"object_key": "path/logs/2020-11-10-14-42-11-123f57b5-1853-4120-8d7a-5bcc1e9e9b4f",
"protocol": "HTTP/1.1",
"range": "-",
"requester": "-",
"request_args": "X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Date=20201030T072100Z\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Expires=43200\u0026X-Amz-Credential=ZGB4EY1...\u0026X-Amz-Signature=12f350...",
"request_id": "1235efda********",
"request_path": "/my-bucket-example/path/logs/2020-11-10-14-42-11-123f57b5-1853-4120-8d7a-5bcc1e9e9b4f?X-Amz-...",
"request_time":88,
"scheme": "https",
"ssl_protocol": "TLSv1.2",
"status": 200,
"storage_class": "STANDARD",
"timestamp": "2020-11-10T13:21:18Z",
"user_agent": "docker/19.03.9 go/go1.13.10 git-commit/1d238398e7 kernel/4.4.0-142-generic os/linux arch/amd64 UpstreamClient(Go-http-client/1.1)",
"version_id": "",
"vhost": "storage.yandexcloud.net"
}
Особенности механизма логирования
У механизма логирования действий с бакетом в Object Storage есть несколько особенностей.
Негарантированная доставка логов
Большинство запросов к бакету, который был корректно настроен для логирования, сохраняются в файле с логами. Большинство записей сохраняются в течение нескольких часов после фактической обработки запроса.
Однако Object Storage не гарантирует полноту и своевременность записи логов. Запись о действии с бакетом может быть сохранена в файле с логами спустя несколько часов. В некоторых случаях запись в файле может не появиться.
Файл с логами дает общее представление о характере трафика в бакете, но не предназначен для полного учета всех запросов. В платежных документах вы можете найти несколько запросов, которые не будут отражены в файле с логами.
Отсутствие логирования действий жизненного цикла
В бакетах с настроенными правилами жизненного цикла действия, которые выполняются с объектами в рамках жизненного цикла, не логируются.
Длительное включение механизма
Включение механизма логирования и изменение настроек занимает около часа. Первый объект с логами сохранится в бакет через пару часов после включения механизма, но иногда поставка логов может занимать больше времени.
При изменении целевого бакета некоторые логи будут доставляться в предыдущий целевой бакет, другие — в новый.
Все изменения настроек вступят в силу без дополнительных действий со стороны пользователя.
Тарификация
Для механизма логирования действуют стандартные правила тарификации Object Storage.