ClickHouse предоставляет модель Собственное облако (BYOC) в рамках модели разделения ответственности за безопасность; соответствующий документ можно скачать в нашем Trust Center по адресу https://trust.clickhouse.com. Приведенная ниже информация предназначена для клиентов BYOC и служит примерами того, как выявлять потенциальные события безопасности. Клиентам следует рассматривать эту информацию в контексте своей программы безопасности, чтобы определить, нужны ли дополнительные механизмы обнаружения и alerts.
Потенциально скомпрометированные учетные данные ClickHouse
См. документацию по журналу аудита базы данных, где приведены запросы для выявления атак с использованием учетных данных и расследования вредоносной активности.
Атака типа «отказ в обслуживании» на уровне приложения
Существует множество способов осуществить атаку типа Denial of Service (DoS). Если атака направлена на вывод из строя экземпляра ClickHouse с помощью определённой полезной нагрузки, восстановите систему до рабочего состояния либо перезагрузите её и ограничьте доступ, чтобы вернуть контроль над системой. Используйте следующий запрос, чтобы просмотреть system.crash_log и получить дополнительную информацию об атаке.
SELECT *
FROM clusterAllReplicas('default',system.crash_log)Скомпрометированные роли AWS, созданные ClickHouse
ClickHouse использует заранее созданные роли для работы системных функций. В этом разделе предполагается, что клиент использует AWS с CloudTrail и имеет доступ к журналам CloudTrail.
Если инцидент мог быть вызван компрометацией роли, проверьте в CloudTrail и CloudWatch действия, связанные с ролями IAM ClickHouse и соответствующими действиями. Список ролей IAM см. в стеке CloudFormation или в модуле Terraform, предоставленном в рамках настройки.
ClickHouse BYOC работает в EKS. В этом разделе предполагается, что клиент использует CloudTrail и CloudWatch в AWS и имеет доступ к журналам.
Если инцидент может быть результатом компрометации кластера EKS, используйте приведённые ниже запросы в журналах EKS в CloudWatch, чтобы выявить конкретные угрозы.
Выведите количество вызовов Kubernetes API по имени пользователя
fields user.username
| stats count(*) as count by user.usernameОпределите, является ли пользователь инженером ClickHouse
fields @timestamp,user.extra.sessionName.0, requestURI, verb,userAgent, @message, @logStream, @log
| sort @timestamp desc
| filter user.username like /clickhouse.com/
| limit 10000Проверьте, какой пользователь получает доступ к секретам Kubernetes, исключив сервисные роли
fields @timestamp,user.extra.sessionName.0, requestURI, verb,userAgent, @message, @logStream, @log
| sort @timestamp desc
| filter requestURI like /secret/
| filter verb="get"
| filter ispresent(user.extra.sessionName.0)
| filter user.username not like /ClickHouseManagementRole/
| filter user.username not like /data-plane-mgmt/