freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

安全运营之SOAR:蓄势待发
2021-01-14 10:49:42

前情提要

安全运营之SOAR:架构雏形

SOAR整体架构

安全编排与自动化响应解决方案(SOAR),主要是通过编排特定的任务,将安全专家的经验以及常规的操作固化,快速得出事件结论并根据预设动作自动化的响应。

在SOAR设计中,任务编排是否灵活、企业IT资源是否适应SOAR,很大程度决定了安全编排的效果。目前主流的SOAR产品主要解决了任务编排的可观性(美观与任务拖拽)及基于PlayBook结果的快速拉动沟通等,在企业设备接口对接方面仍不够完善,当一个很“奇葩”的需求出现,往往很难快速通过一款SOAR产品快速的开发PlayBook去实现需求。

我们的核心需求是一个能让团队成员快速上手编写PlayBook、快速实现安全需求的SOAR架构,于是我们基于开源组件,设计了一套符合自身需求的SOAR。主要由三部分组成(粉红区域),分别是编排引擎、API接口、运营平台。其中编排引擎选择使用airflow,承载playbook的周期运行、错误重跑等工作。

本文将主要分享使用airflow作为安全编排的一部分的实践经验。

编排引擎结构

体验airflow

当前airflow已经推出2.0.0版本,其架构相对1.x版本有很大的改动,未了解过airflow的读者,建议使用1.x最高的版本1.10.14。

airflow的官方文编写的非常详细,可以参考1.10.14版本的官方文档进行部署。下文中提到的DAG与我们编排中所说的PlayBook(剧本)同义,习惯上,我们将编排任务的python文件称为PlayBook

# 安装airflow
pip install apache-airflow

# 安装扩展,选择你需要使用的模块
pip install apache-airflow[celery,postgres]

安装airflow以后,无需改airflow.cfg配置文件,可通过命令启动airflow。

# 初始化数据库,默认情况下使用SQLite
airflow initdb

# 启动web界面
airflow webserver -D

airflow scheduler -D

若将airflow部署在生产环境,需要注意配置文件中的几个关键项:

# 编写的DAG存放目录
dags_folder = /airflow/playbooks
# airflow的日志存放目录
base_log_folder = /airflow/logs
# DAG管理进程日志存放目录
dag_processor_manager_log_location = /airflow/logs/dag_processor_manager/dag_processor_manager.log

# 执行器选择使用celery
executor = CeleryExecutor

# 数据库连接器
sql_alchemy_conn = postgresql+psycopg2://username:password@192.168.1.1:5432/airflow
sql_engine_encoding = utf-8

# 调整DAG运行参数
parallelism = 32
dag_concurrency = 16
max_active_runs_per_dag = 8

# 不加载样例DAG
load_examples = False

[api]
# api加上认证
auth_backend = airflow.contrib.auth.backends.password_auth

[celery]
celery_app_name = airflow.executors.celery_executor
worker_concurrency = 16
worker_log_server_port = 8793

# celery的broker和backend配置
broker_url = redis://:redis_passwd@192.168.1.1:6379/1
result_backend = redis://:redis_passwd@192.168.1.1:6379/2

[scheduler]
# scheduler心跳超时设置
job_heartbeat_sec = 30

# 设置scheduler清理僵尸任务时间
scheduler_zombie_task_threshold = 300

airflow的目录结构

当使用airflow作为任务的编排引擎时,我们知道airflow通过scheduler读取指定目录下的python文件,最终通过executor执行。那么我们需要设计好存放DAG也就是PlayBook的目录结构,使得我们能快速的、规范的编写我们的PlayBook。

简洁的PlayBook目录结构如下(airflow中的配置项:dags_folder = /airflow/soar):

soar
- models # 数据类型
- ops_pb # 日常运维playbook
- sec_pb # 安全分析playbook
- audit_pb # 安全审计playbook
- tmp_pb # 临时任务playbook
- utils # 通用工具
.airflowignore 

.airflowignore的内容(跟.gitignore一样)指定airflow的

# 响应 # soar # 编排
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录