Журналирование и аудит#

Журналирование#

Для журналирования Corax использует Apache Log4j 2.

Для настройки уровней журналирования необходимо использовать log4j.properties.

Аудит#

Особенности настройки плагина аудита и брокера Corax#

Пример настройки логгера в файле log4j.properties:

log4j.appender.auditFileAppender = org.apache.log4j.RollingFileAppender //включение режима записи rolling update
log4j.appender.auditFileAppender.File = ${kafka.logs.dir}/kafka-audit.log //путь к log-файлу
log4j.appender.auditFileAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.auditFileAppender.layout.ConversionPattern = [%d] %p %m (%c)%n //формат даты и времени
log4j.logger.kafka.audit.provider.LogAuditProvider = INFO, auditFileAppender //уровень логирования
log4j.appender.auditFileAppender.MaxBackupIndex=10
log4j.appender.auditFileAppender.MaxFileSize=100MB
log4j.additivity.kafka.audit.provider.LogAuditProvider=false

Внимание

Для логирования Zookeeper необходим отдельный файл настроек log4j.

В файле KAFKA_DIR/config/server.properties необходимо задать настройку system.id — идентификатор системы, которая отправляет события аудита в централизованную систему аудита.

Аудит Schema Registry#

В каждом событии присутствуют следующие поля:

  • SystemID="SchemaRegistry";

  • MetamodelVersion="1.0";

  • UserLogin — логин пользователя, выполнившего запрос;

  • UserNode — хост, откуда пользователь выполнил запрос;

  • Session — идентификатор сессии, в рамках которой выполнен запрос.

Дополнительные поля для каждого типа событий:

  1. ACL — события отправляются при модификации ACL.

    {
    "name": "ACL",
    "description": "ACL modification",
    "success": "true",
    "mode": "SPEED",
    "params": [
        {
        "name": "op",
        "description": "Granted operation"
        },
        {
        "name": "allow",
        "description": "Allow pattern"
        },
        {
        "name": "subject",
        "description": "Subject(can be null)"
        },
        {
        "name": "patternType",
        "description": "Subject pattern type()"
        },
        {
        "name": "tombstone",
        "description": "Tombstone flag(true if removal)"
        }
    ]
    }
    
  2. Schema operation — события отправляются при выполнении любого запроса на запись.

    {
    "name": "operation",
    "description": "Regular schema registry operation",
    "success": "true",
    "mode": "SPEED",
    "params": [
        {
        "name": "url",
        "description": "URL"
        },
        {
        "name": "method",
        "description": "HTTP method"
        }
    ]
    }
    
  3. Access denied — события отправляются при попытке выполнения любого запроса (в том числе и на чтение), на который у пользователя нет прав.

    {
    "name": "access-denied",
    "description": "Attempt to execute forbidden operation",
    "success": "true",
    "mode": "SPEED",
    "params": [
        {
        "name": "url",
        "description": "URL"
        },
        {
        "name": "method",
        "description": "HTTP method"
        }
    ]
    }
    
  4. Not authenticated — события отправляются при попытке выполнения любого запроса (в том числе и на чтение) без аутентификации.

    {
    "name": "not-authenticated",
    "description": "Attempt to execute operation without authentication",
    "success": "true",
    "mode": "SPEED",
    "params": [
        {
        "name": "url",
        "description": "URL"
        },
        {
        "name": "method",
        "description": "HTTP method"
        }
    ]
    }