Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → API аудит: логирование доступа

API аудит: логирование доступа и действий

API аудит: логирование доступа, действий, ошибок, хранение логов и анализ инцидентов.

Прямой ответ

API аудит логирует доступ и действия, поэтому инциденты анализируются по записям, а несанкционированный доступ обнаруживается.

Что логируется Зачем
Доступ Кто и когда обращался к API
Действия Какие операции выполнялись
Ошибки Какие ошибки возникали
Аутентификация Кто и когда аутентифицировался
from fastapi import FastAPI, Request
import structlog

app = FastAPI()
logger = structlog.get_logger()

@app.middleware("http")
async def audit_log(request: Request, call_next):
    response = await call_next(request)
    logger.info("api_access",
        method=request.method,
        path=request.url.path,
        status=response.status_code,
        user_id=getattr(request.state, "user_id", None))
    return response

Логирование доступа фиксирует, кто и когда обращался к API, поэтому инциденты анализируются по записям. О защите от атак — в статье про защиту API от атак.

Логирование доступа, действий и ошибок

Логирование фиксирует доступ, действия и ошибки, поэтому инциденты анализируются по записям.

Логирование доступа. Запись фиксирует, кто и когда обращался к API, поэтому несанкционированный доступ обнаруживается.

Логирование действий. Запись фиксирует, какие операции выполнялись, поэтому изменения данных отслеживаются.

Логирование ошибок. Запись фиксирует, какие ошибки возникали, поэтому сбои анализируются по записям.

Практическое следствие: отсутствие логирования приводит к тому, что инциденты не анализируются, поэтому несанкционированный доступ не обнаруживается.

Отдельный аспект — хранение логов. Логи хранятся с ограниченным доступом, поэтому изменение логов prevented.

Три признака некорректной реализации аудита.

Отсутствие логирования доступа. Инциденты не анализируются, поэтому несанкционированный доступ не обнаруживается.

Отсутствие логирования действий. Изменения данных не отслеживаются, поэтому инциденты не анализируются.

Отсутствие защиты логов. Логи могут быть изменены, поэтому анализ инцидентов не выполняется.

О security headers — в статье про security headers; о сквозном идентификаторе — в статье про сквозной идентификатор.

Защита логов и диагностика

Защита логов от изменения предотвращает их модификацию, поэтому анализ инцидентов выполняется.

Ограничение доступа. Ограничение доступа к логам предотвращает их изменение, поэтому анализ инцидентов выполняется.

Сквозной идентификатор. Идентификатор связывает записи одного обращения, поэтому анализ выполняется по идентификатору.

Срок хранения. Срок хранения определяется требованиями анализа, поэтому логи доступны в течение периода анализа.

Практическое следствие: отсутствие защиты логов приводит к тому, что логи могут быть изменены, поэтому анализ инцидентов не выполняется.

Практика: настройка API аудита

1. Логируйте доступ к API. Запись фиксирует, кто и когда обращался к API, поэтому несанкционированный доступ обнаруживается.

2. Логируйте действия пользователей. Запись фиксирует, какие операции выполнялись, поэтому изменения данных отслеживаются.

3. Логируйте ошибки. Запись фиксирует, какие ошибки возникали, поэтому сбои анализируются по записям.

4. Логируйте аутентификацию. Запись фиксирует, кто и когда аутентифицировался, поэтому несанкционированный доступ обнаруживается.

5. Защищайте логи от изменения. Ограничение доступа к логам предотвращает их изменение.

6. Используйте сквозной идентификатор. Идентификатор связывает записи одного обращения, поэтому анализ выполняется по идентификатору.

7. Храните логи с ограниченным сроком. Срок хранения определяется требованиями анализа.

Рекомендации:

  1. Не пропускайте логирование доступа. Отсутствие логирования приводит к тому, что инциденты не анализируются.
  2. Учитывайте сквозной идентификатор при настройке. Идентификатор связывает записи одного обращения, поэтому анализ выполняется по идентификатору.
  3. Сопоставляйте логи с инцидентами. Записи анализируются по идентификатору, поэтому инциденты обнаруживаются.
  4. Фиксируйте логи в ошибке. Признак в записи ошибки позволяет определить, когда возник сбой.
  5. Пересматриваем логирование при изменении требований. Новые требования могут требовать изменения логирования.

Практический сценарий: инцидент не обнаружился

Контекст: инцидент не обнаружился, поэтому несанкционированный доступ не был выявлен.

  1. Диагностика. Проверка показала, что логирование доступа не выполнялось. Отсутствие логов привело к тому, что инцидент не обнаружился, поэтому несанкционированный доступ не был выявлен.
  2. Причина. Логирование доступа не было настроено, поэтому инциденты не анализировались.
  3. Действия. (а) Настроили логирование доступа, чтобы записи фиксировали, кто и когда обращался к API; (б) настроили логирование действий, чтобы изменения данных отслеживались; (в) настроили логирование ошибок, чтобы сбои анализировались по записям; (г) добавили сквозной идентификатор, чтобы записи одного обращения связывались; (д) защитили логи от изменения, чтобы анализ инцидентов выполнялся.
  4. Результат. Инциденты обнаруживаются по записям, поэтому несанкционированный доступ выявляется.

Вывод: отсутствие логирования доступа приводит к тому, что инциденты не анализируются. Логирование доступа, действий и ошибок обеспечивает обнаружение инцидентов.

Дополнительная защита

Агрегация логов. Логи собираются в единый поток, поэтому анализ выполняется по всем записям без разбора отдельных источников.

Алертинг по аномалиям. Алертинг обнаруживает аномальную активность, поэтому инциденты выявляются до эскалации.

Практическое следствие: отсутствие агрегации и алертинга приводит к тому, что инциденты не обнаруживаются своевременно.

Практический сценарий: инцидент не обнаружился

Контекст: инцидент не обнаружился, поэтому несанкционированный доступ не был выявлен.

  1. Диагностика. Проверка показала, что логирование доступа не выполнялось. Отсутствие логов привело к тому, что инцидент не обнаружился, поэтому несанкционированный доступ не был выявлен.
  2. Причина. Логирование доступа не было настроено, поэтому инциденты не анализировались.
  3. Действия. (а) Настроили логирование доступа, чтобы записи фиксировали, кто и когда обращался к API; (б) настроили логирование действий, чтобы изменения данных отслеживались; (в) настроили логирование ошибок, чтобы сбои анализировались по записям; (г) добавили сквозной идентификатор, чтобы записи одного обращения связывались; (д) защитили логи от изменения, чтобы анализ инцидентов выполнялся.
  4. Результат. Инциденты обнаруживаются по записям, поэтому несанкционированный доступ выявляется.

Вывод: отсутствие логирования доступа приводит к тому, что инциденты не анализируются. Логирование доступа, действий и ошибок обеспечивает обнаружение инцидентов.

FAQ

Зачем нужен API аудит? Логирование доступа и действий позволяет анализировать инциденты и обнаруживать несанкционированный доступ. Отсутствие логирования приводит к тому, что инциденты не анализируются.

Что логировать в API аудите? Доступ, действия, ошибки и аутентификацию. Каждая запись фиксирует, кто и когда выполнял операцию.

Как защищаются логи от изменения? Через ограничение доступа к логам. Логи с ограниченным доступом не могут быть изменены, поэтому анализ инцидентов выполняется.

Зачем нужен сквозной идентификатор? Идентификатор связывает записи одного обращения, поэтому анализ выполняется по идентификатору. Отсутствие идентификатора приводит к тому, что записи не связываются.

Источники: OWASP API Security, Structlog, FastAPI middleware — ссылки в шапке.