Аудит в CDP Private Cloud Base с использованием внешних систем

от автора

Регулируемые отрасли и правительственные организации по всему миру доверяют Cloudera хранение и анализ петабайтов данных — очень важной или конфиденциальной информации о людях, персональных и медицинских данных, финансовых данных или просто служебной информации, конфиденциальной для самого клиента.

Любой, кто хранит информацию о клиентах, медицинскую, финансовую или конфиденциальную информацию, должен убедиться, что приняты необходимые меры для защиты этих данных, включая обнаружение и предотвращение непреднамеренного или злонамеренного доступа. Согласно исследованию Ponemon Institute, за два года в мире средний ущерб от инсайдерских угроз вырос на 31% и достиг 11,45 миллиона долларов, а частота инцидентов за тот же период увеличилась на 47%. В отчете за 2019 год указано, что компании больше всего беспокоятся о непреднамеренных нарушениях со стороны инсайдеров (71%), утечках данных из-за небрежности (65%) и злонамеренных действиях злоумышленников (60%), чем о взломанных учетных записях или машинах (9%).

Законодательные нормы GDPR, CCPA, HIPAA, PCI DSS и FIPS-200, требуют, чтобы организации принимали соответствующие меры для защиты конфиденциальной информации. Эти меры могут включать в себя три основных элемента:

  • Шифрование данных — в «состоянии покоя» и при передаче по сети — гарантирует, что неаутентифицированные субъекты не могут получить доступ к данным.

  • Контроль доступа (строгая аутентификация и авторизация) гарантирует, что пользователь – именно тот, кем он себя называет (аутентификация), и что он получит доступ только к тому, к чему ему разрешено (авторизация).

  • Аудит и учет — знание того, кто к чему, и когда и кто обращался, и кто менял разрешения или настройки контроля доступа; потенциально предупреждает об утечках данных по мере их возникновения, а не постфактум.

В платформе Cloudera Data Platform с помощью Cloudera Shared Data Experience (SDX) обеспечивается сквозная безопасность. В CDP:

  • Все «проводные» протоколы можно шифровать с использованием TLS или SASL.

  • Все хранимые данные можно защитить с помощью прозрачного шифрования данных HDFS (частное облако) или шифрования хранилища объектов (публичное облако).

  • Аутентификация пользователей как в публичном, так и в частном облаке выполняется через Kerberos/SPNEGO или SAML.

  • С помощью Apache Ranger (как части SDX) весь доступ к данным реализуется на базе атрибутов или на основе ролей.

  • Все средства управления доступом к данным проверяются с помощью Apache Ranger.

Защитный мониторинг

Эффективная программа защитного мониторинга (Protective Monitoring) может гарантировать видимость того, кто обращается или пытается получить доступ к данным: к каким данным и с каких устройств по всей своей ИТ-инфраструктуре. Это можно сделать с помощью следующих средств:

  • Compliance and Reporting (проверка соответствия и отчетность) — постфактум сообщает о том, кто имеет доступ к определенным активам данных.

  • Digital forensics and incident response (цифровая криминалистика и реагирование на инциденты) — реагирование на предписания регулирующих органов или уполномоченных по информации после выявления нарушений.

  • Advanced threat detection (расширенное обнаружение угроз) — мониторинг событий в реальном времени для выявления изменений в поведении на уровне доступа пользователей, на уровне активов данных или коммуникаций между системами. Некоторые платформы SIEM, такие как Securonix, включают такие возможности.

Аудит в Cloudera Data Platform

Все компоненты доступа к данным в CDP отправляют события аудита в Apache Ranger, где они хранятся и доступны для поиска в течение настраиваемого периода хранения.

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

Примером удаленного сервера системного журнала, способного выполнять сложную логику фильтрации и маршрутизации, является кластер NiFi, на котором запущен процессор ListenSyslog.

Для этого настроим плагин Ranger для записи событий в log4j, а затем настроим log4j для каждой из служб, чтобы добавить файлы и приложения syslog.

HDFS

В ходе аудита HDFS проверяет все взаимодействия всех служб с файлами. Используя Cloudera Manager, мы установим следующие настройки:

HDFS Service Advanced Configuration Snippet (Safety Valve) for ranger-hdfs-audit.xml

Name: xasecure.audit.destination.log4j

Value: true

Name: xasecure.audit.destination.log4j.logger

Value: ranger.audit

NameNode Logging Advanced Configuration Snippet (Safety Valve)

log4j.appender.RANGER_AUDIT=org.apache.log4j.DailyRollingFileAppender

log4j.appender.RANGER_AUDIT.File=/var/log/hadoop-hdfs/ranger-hdfs-audit.log

log4j.appender.RANGER_AUDIT.layout=org.apache.log4j.PatternLayout

log4j.appender.RANGER_AUDIT.layout.ConversionPattern=%m%n

log4j.logger.ranger.audit=INFO,RANGER_AUDIT,SYSAUDIT

log4j.appender.SYSAUDIT=org.apache.log4j.net.SyslogAppender

log4j.appender.SYSAUDIT.threshold=INFO

log4j.appender.SYSAUDIT.syslogHost=<sysloghost>

log4j.appender.SYSAUDIT.layout=org.apache.log4j.PatternLayout

log4j.appender.SYSAUDIT.layout.conversionPattern=%d{MMM dd HH:mm:ss} ${hostName}HDFS: %m%n

log4j.appender.SYSAUDIT.filter.a=org.apache.log4j.varia.LevelRangeFilter

log4j.appender.SYSAUDIT.filter.a.LevelMin=INFO

log4j.appender.SYSAUDIT.filter.a.LevelMax=INFO

HiveServer 2

Этот плагин будет проверять весь SQL, отправленный в HiveServer2. Конфигурация HiveServer2 использует синтаксис, отличный от синтаксиса других служб. Связано это с тем, что HiveServer2 использует Log4j2. С помощью Cloudera Manager установим следующие настройки в сервисе Hive on Tez:

Hive Service Advanced Configuration Snippet (Safety Valve) for ranger-hive-audit.xml

Name: xasecure.audit.destination.log4j

Value: true

Name: xasecure.audit.destination.log4j.logger

Value: ranger.audit

HiveServer2 Logging Advanced Configuration Snippet (Safety Valve)

appenders=console, DRFA, redactorForRootLogger, RANGERAUDIT, SYSAUDIT

loggers =  Ranger

logger.Ranger.name = ranger.audit

logger.Ranger.level = INFO

logger.Ranger.appenderRefs = SYSAUDIT, RANGERAUDIT

logger.Ranger.appenderRef.RANGERAUDIT.ref = RANGERAUDIT

logger.Ranger.appenderRef.SYSAUDIT.ref = SYSAUDIT

appender.RANGERAUDIT.type=file

appender.RANGERAUDIT.name=RANGERAUDIT

appender.RANGERAUDIT.fileName=/var/log/hive/ranger-audit.log

appender.RANGERAUDIT.filePermissions=rwx——

appender.RANGERAUDIT.layout.type=PatternLayout

appender.RANGERAUDIT.layout.pattern=%d{ISO8601} %q %5p [%t] %c{2} (%F:%M(%L)) — %m%n

appender.SYSAUDIT.type=Syslog

appender.SYSAUDIT.name=SYSAUDIT

appender.SYSAUDIT.host = <sysloghost>

appender.SYSAUDIT.port = 514

appender.SYSAUDIT.protocol = UDP

appender.SYSAUDIT.layout.type=PatternLayout

appender.SYSAUDIT.layout.pattern=%d{MMM dd HH:mm:ss} ${hostName} Hive: %m%n

Impala

Демоны Impala будут регистрировать все операторы Impala SQL. Это также настраивается через Cloudera Manager:

Impala Service Advanced Configuration Snippet (Safety Valve) for ranger-impala-audit.xml

Name: xasecure.audit.destination.log4j

Value: true

Name: xasecure.audit.destination.log4j.logger

Value: ranger.audit

Impala Daemon Logging Advanced Configuration Snippet (Safety Valve)

log4j.appender.RANGER_AUDIT=org.apache.log4j.DailyRollingFileAppender

log4j.appender.RANGER_AUDIT.File=/var/log/impalad/ranger-impala-audit.log

log4j.appender.RANGER_AUDIT.layout=org.apache.log4j.PatternLayout

log4j.appender.RANGER_AUDIT.layout.ConversionPattern=%m%n

log4j.logger.ranger.audit=INFO,RANGER_AUDIT,SYSAUDIT

log4j.appender.SYSAUDIT=org.apache.log4j.net.SyslogAppender

log4j.appender.SYSAUDIT.threshold=INFO

log4j.appender.SYSAUDIT.syslogHost=<sysloghost>

log4j.appender.SYSAUDIT.layout=org.apache.log4j.PatternLayout

log4j.appender.SYSAUDIT.layout.conversionPattern=%d{MMM dd HH:mm:ss} ${hostName}Impala: %m%n

log4j.appender.SYSAUDIT.filter.a=org.apache.log4j.varia.LevelRangeFilter

log4j.appender.SYSAUDIT.filter.a.LevelMin=INFO

log4j.appender.SYSAUDIT.filter.a.LevelMax=INFO

Solr

Сервер Solr будет регистрировать все запросы, отправленные в Solr API. Опять же, это должно быть настроено через Cloudera Manager:

Solr Service Advanced Configuration Snippet (Safety Valve) for ranger-solr-audit.xml

Name: xasecure.audit.destination.log4j

Value: true

Name: xasecure.audit.destination.log4j.logger

Value: ranger.audit

Solr Server Logging Advanced Configuration Snippet (Safety Valve)

appenders=console, DRFA, redactorForRootLogger, RANGERAUDIT, SYSAUDIT

loggers =  Ranger

logger.Ranger.name = ranger.audit

logger.Ranger.level = INFO

logger.Ranger.appenderRefs = SYSAUDIT, RANGERAUDIT

logger.Ranger.appenderRef.RANGERAUDIT.ref = RANGERAUDIT

logger.Ranger.appenderRef.SYSAUDIT.ref = SYSAUDIT

appender.RANGERAUDIT.type=file

appender.RANGERAUDIT.name=RANGERAUDIT

appender.RANGERAUDIT.fileName=/var/log/solr/ranger-solr.log

appender.RANGERAUDIT.filePermissions=rwx——

appender.RANGERAUDIT.layout.type=PatternLayout

appender.RANGERAUDIT.layout.pattern=%d{ISO8601} %q %5p [%t] %c{2} (%F:%M(%L)) — %m%n

appender.SYSAUDIT.type=Syslog

appender.SYSAUDIT.name=SYSAUDIT

appender.SYSAUDIT.host = <sysloghost>

appender.SYSAUDIT.port = 514

appender.SYSAUDIT.protocol = UDP

appender.SYSAUDIT.layout.type=PatternLayout

appender.SYSAUDIT.layout.pattern=%d{MMM dd HH:mm:ss} ${hostName} Solr: %m%n

Hue

Hue в настоящее время не интегрирован с Ranger, однако может отслеживать события в файле, включая события входа в систему и загрузку пользователями результатов запросов. Это можно включить через Cloudera Manager:

Hue Service Advanced Configuration Snippet (Safety Valve) for hue_safety_valve.ini

[desktop]

audit_event_log_dir=/var/log/hue/audit/hue-audit.log

Пример вывода

После настройки этих параметров мы можем проверить, правильно ли отправляются события.

Следующие события были записаны сервером Rsyslog, запущенным на удаленном сервере с пользовательской конфигурацией:

HDFS

2021-05-04T03:25:36-07:00 host1.example.com HDFS: {«repoType»:1,»repo»:»cm_hdfs»,»reqUser»:»teststd»,»evtTime»:»2021-05-04 03:25:35.069″,«access»:»open»,«resource»:»/tstest/testfile2«,»resType»:»path»,«action»:»read»,«result»:1,»agent»:»hdfs»,»policy»:-1,»reason»:»/tstest/testfile2″,»enforcer»:»hadoop-acl»,»cliIP»:»172.27.172.2″,»reqData»:»open/CLI»,»agentHost»:»host1.example.com»,»logType»:»RangerAudit»,»id»:»41a20548-c55d-4169-ac80-09c1cca8265e-0″,»seq_num»:1,»event_count»:1,»event_dur_ms»:1,»tags»:[],»additional_info»:»{\»remote-ip-address\»:172.27.172.2, \»forwarded-ip-addresses\»:[], \»accessTypes\»:[read]»,»cluster_name»:»CDP PvC Base Single-node Cluster»}

2021-05-04T03:29:27-07:00 host1.example.com HDFS: {«repoType»:1,»repo»:»cm_hdfs»,»reqUser»:»teststd»,»evtTime»:»2021-05-04 03:29:22.375″,«access»:»open»,«resource»:»/tstest/testfile3″,»resType»:»path»,«action»:»read»,«result»:0,»agent»:»hdfs»,»policy»:-1,»reason»:»/tstest/testfile3″,»enforcer»:»hadoop-acl»,»cliIP»:»172.27.172.2″,»reqData»:»open/CLI»,»agentHost»:»host1.example.com»,»logType»:»RangerAudit»,»id»:»e6806644-1b66-4066-ae0d-7f9d0023fbbb-0″,»seq_num»:1,»event_count»:1,»event_dur_ms»:1,»tags»:[],»additional_info»:»{\»remote-ip-address\»:172.27.172.2, \»forwarded-ip-addresses\»:[], \»accessTypes\»:[read]»,»cluster_name»:»CDP PvC Base Single-node Cluster»}

В приведенном выше примере было отказано во втором доступе (результат: 0).

Hive

2021-05-04T03:35:25-07:00 host1.example.com Hive: {«repoType»:3,»repo»:»cm_hive»,»reqUser»:»admin»,»evtTime»:»2021-05-04 03:35:23.220″,«access»:»SELECT»,«resource»:»default/sample_07/description,salary«,»resType»:»@column»,»action»:»select»,»result»:1,»agent»:»hiveServer2″,»policy»:8,»enforcer»:»ranger-acl»,»sess»:»303bbfbe-3538-4ebe-ab48-c52c80f23a35″,»cliType»:»HIVESERVER2″,»cliIP»:»172.27.172.2″,»reqData»:»SELECT sample_07.description, sample_07.salary\r\nFROM\r\n  sample_07\r\nWHERE\r\n( sample_07.salary \u003e 100000)\r\nORDER BY sample_07.salary DESC\r\nLIMIT 1000″,»agentHost»:»host1.example.com»,»logType»:»RangerAudit»,»id»:»b6903fd2-49bd-4c8e-bad6-667ae406f301-0″,»seq_num»:1,»event_count»:1,»event_dur_ms»:1,»tags»:[],»additional_info»:»{\»remote-ip-address\»:172.27.172.2, \»forwarded-ip-addresses\»:[]»,»cluster_name»:»CDP PvC Base Single-node Cluster»,»policy_version»:1}

Impala

2021-05-04T03:32:01-07:00 host1.example.com Impala: {«repoType»:3,»repo»:»cm_hive»,»reqUser»:»admin»,»evtTime»:»2021-05-04 03:31:54.666″,«access»:»select»,«resource»:»default/sample_07″,»resType»:»@table»,»action»:»select»,»result»:1,»agent»:»impala»,»policy»:8,»enforcer»:»ranger-acl»,»cliIP»:»::ffff:172.27.172.2″,«reqData»:»SELECT s07.description, s07.salary, s08.salary,\r   s08.salary — s07.salary\r FROM\r   sample_07 s07 JOIN sample_08 s08\r ON ( s07.code \u003d s08.code)\r WHERE\r  s07.salary \u003c s08.salary\r ORDER BY s08.salary-s07.salary DESC\r LIMIT 1000″,»agentHost»:»host1.example.com»,»logType»:»RangerAudit»,»id»:»f995bc52-dbdf-4617-96f6-61a176f6a727-0″,»seq_num»:0,»event_count»:1,»event_dur_ms»:1,»tags»:[],»cluster_name»:»CDP PvC Base Single-node Cluster»,»policy_version»:1}

Solr

В аудите Solr по умолчанию проверяется только факт выполнения запроса:

{«repoType»:8,»repo»:»cm_solr»,»reqUser»:»admin»,»evtTime»:»2021-05-04 02:33:22.916″,«access»:»query»,«resource»:»twitter_demo»,»resType»:»collection»,»action»:»query»,»result»:1,»agent»:»solr»,»policy»:39,»enforcer»:»ranger-acl»,»cliIP»:»172.27.172.2″,»agentHost»:»host1.example.com»,»logType»:»RangerAudit»,»id»:»951c7dea-8ae7-49a5-8539-8c993651f75c-0″,»seq_num»:1,»event_count»:2,»event_dur_ms»:199,»tags»:[],»cluster_name»:»CDP PvC Base Single-node Cluster»,»policy_version»:2}

Однако, если в Solr включена авторизация на уровне документа, мы также увидим текст запроса:

2021-05-04T06:23:00-07:00 host1.example.com Solr: {«repoType»:8,»repo»:»cm_solr»,»reqUser»:»admin»,»evtTime»:»2021-05-04 06:22:55.366″,«access»:»query»,«resource»:»testcollection»,»resType»:»collection»,»action»:»others»,»result»:0,»agent»:»solr»,»policy»:-1,»enforcer»:»ranger-acl»,»cliIP»:»172.27.172.2″,»reqData»:»{! q\u003dtext:mysearchstring doAs\u003dadmin df\u003d_text_ echoParams\u003dexplicit start\u003d0 rows\u003d100 wt\u003djson}»,»agentHost»:»host1.example.com»,»logType»:»RangerAudit»,»id»:»6b14c79f-e30d-4635-bd07-a5d116ee4d0f-0″,»seq_num»:1,»event_count»:1,»event_dur_ms»:1,»tags»:[],»cluster_name»:»CDP PvC Base Single-node Cluster»}

Hue

Эти строки записываются непосредственно из файла журнала аудита Hue.

{«username»: «admin», «impersonator»: «hue», «eventTime»: 1620124241293, «operationText»: «Successful login for user: admin», «service»: «hue», «url»: «/hue/accounts/login», «allowed»: true, «operation»: «USER_LOGIN», «ipAddress»: «10.96.85.63»}

{«username»: «admin», «impersonator»: «hue», «eventTime»: 1620131105118, «operationText»: «User admin downloaded results from query-impala-46 as xls», «service»: «notebook», «url»: «/notebook/download», «allowed»: true, «operation»: «DOWNLOAD», «ipAddress»: «10.96.85.63»}

Заключение  

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

Выше мы обсудили способы отправки событий аудита в CDP на внешнюю систему SIEM с использованием аудита на основе файлов и системного журнала.

Для получения дополнительной информации о настройке и использовании Apache Ranger ознакомьтесь с документацией по CDP.

 


ссылка на оригинал статьи https://habr.com/ru/articles/571536/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *