本镜像为Assemblyline 4服务提供基础功能支持,是构建、运行和测试Assemblyline 4自定义服务的核心依赖。开发者可基于此镜像创建符合Assemblyline 4规范的服务,实现文件分析、威胁检测等功能,并集成到Assemblyline 4系统中。
service_manifest.yml配置服务元信息、运行参数、启发规则等核心属性run_service_once.py脚本,支持脱离Assemblyline 4系统独立测试服务功能Assemblyline服务需遵循以下文件结构:
textassemblyline-service-<服务名称> │ ├── Dockerfile # 服务容器构建文件 ├── <服务名称>.py # 服务核心代码 └── service_manifest.yml # 服务定义清单文件
各文件功能说明:
Dockerfile:定义服务容器的构建流程,包括基础镜像、依赖安装、代码复制等<服务名称>.py:实现服务核心逻辑,需遵循Assemblyline 4服务接口规范service_manifest.yml:配置服务元信息、运行参数、支持的文件类型等,是服务与系统交互的关键配置服务清单是服务的核心配置文件,需放置于服务根目录,用于向Assemblyline 4系统提供服务必要信息。完整配置示例及说明如下:
yaml# 服务名称(必填) name: ResultSample # 服务版本(必填) version: 1 # 服务描述(必填):支持多行文本,说明服务功能、使用场景等 description: > ALv4结果示例服务 本服务演示如何: - 定义服务清单 - 使用不同类型的结果 section - 使用标签 - 通过启发规则为 section 评分 - 关联ATT&CK矩阵 - 使用更新框架 - 定义提交参数 - 定义服务配置参数 # 文件类型过滤规则(必填): # - accepts:正则表达式,匹配服务接受的文件类型 # - rejects:正则表达式,匹配服务拒绝的文件类型 accepts: .* rejects: empty|metadata/.* # 服务运行阶段(必填):取值范围为FILTER, EXTRACT, CORE, SECONDARY, POST(按列表顺序执行) stage: CORE # 服务分类(必填):取值范围为Antivirus, Dynamic Analysis, External, Extraction, Filtering, Networking, Static Analysis category: Static Analysis # 是否需要访问文件内容(必填): # - true:服务需读取文件内容 # - false:服务仅需文件元数据(如哈希、大小、类型等) file_required: true # 服务超时时间(必填,秒):服务执行超过此时长将被判定为超时 timeout: 60 # 是否禁用结果缓存(可选):true表示每次运行结果均不同,禁用缓存;默认false disable_cache: false # 是否默认启用(可选):true表示服务默认启用;默认true enabled: true # 是否调用外部API(可选):true表示服务需调用Assemblyline基础设施外的API(如VirusTotal);默认false is_external: false # 并发运行许可数(可选):允许同时运行的服务实例数;默认0(无限制) licence_count: 0 # 服务配置参数(可选):自定义键值对,供服务内部使用,支持字符串、整数、列表、布尔等类型 config: str_config: value1 int_config: 1 list_config: [1, 2, 3, 4] bool_config: false # 提交参数(可选):用户提交文件时可调整的参数列表 submission_params: - default: "" # 默认值 name: password # 参数名称 type: str # 参数类型(支持bool, int, str, list) value: "" # 当前值(运行时由用户输入覆盖) - default: false name: extra_work type: bool value: false # 启发规则(可选):定义服务使用的威胁评分规则 heuristics: - description: ResultSample服务的第一个启发规则 # 规则描述 filetype: pdf # 适用文件类型 heur_id: AL_RESULTSAMPLE_1 # 规则唯一ID name: 掩码包含PDF # 规则名称 score: 100 # 威胁评分(正数表示***,0表示中性) ***_id: T1001 # 关联ATT&CK战术ID(可选) - description: ResultSample服务的第二个启发规则 filetype: exe heur_id: AL_RESULTSAMPLE_2 name: 释放可执行文件 score: 1000 - description: ResultSample服务的第三个启发规则 filetype: exe heur_id: AL_RESULTSAMPLE_3 name: 提取信息 score: 0 # Docker配置(必填):定义服务容器的资源配置 docker_config: image: cccs/assemblyline-service-resultsample:latest # 容器镜像名称 cpu_cores: 1.0 # CPU核心数 ram_mb_min: 128 # 最小内存(MB) ram_mb: 256 # 最大内存(MB) # 更新配置(可选):定义服务规则/数据自动更新逻辑 update_config: sources: # 更新源列表:指定文件下载地址及本地文件名 - uri: [***] name: sample_2mb_file - uri: [***] name: sample_5mb_file update_interval_seconds: 300 # 更新间隔(秒) generates_signatures: false # 是否生成系统签名(true表示更新文件用于签名生成)
服务容器需通过Dockerfile构建,需遵循以下要求:
cccs/assemblyline-v4-service-base:latestSERVICE_PATH环境变量(指定服务入口类路径)/opt/al/al_service/目录示例Dockerfile:
dockerfileFROM cccs/assemblyline-v4-service-base:latest # 设置服务入口路径(格式:模块名.类名) ENV SERVICE_PATH result_sample.ResultSample # 切换至root用户安装依赖(基础镜像默认运行用户为assemblyline) USER root # 安装系统依赖(合并命令减少镜像层数) RUN apt-get update && apt-get install -y my_debian_apt_dependency_package && rm -rf /var/lib/apt/lists/* # 安装Python依赖(--user指定用户目录,避免权限问题) RUN pip install --no-cache-dir --user my_pip_dependency && rm -rf ~/.cache/pip # 切换回assemblyline用户,确保服务非root运行 USER assemblyline # 复制服务代码至服务目录 WORKDIR /opt/al_service COPY assemblyline_result_sample_service .
可使用run_service_once.py脚本在独立模式下测试服务,无需部署完整Assemblyline 4系统,仅需安装Assemblyline Python库。
注意:以下环境配置仅在Ubuntu 20.04测试通过。
安装系统依赖:
shellsudo apt-get install build-essential libffi-dev python3.7 python3.7-dev python3-pip automake autoconf libtool
安装Assemblyline v4服务包:
shellpip install --no-cache-dir --user assemblyline-v4-service
将服务开发目录路径添加至PYTHONPATH环境变量(如/home/ubuntu/assemblyline-v4-service):
shellexport PYTHONPATH="${PYTHONPATH}:/home/ubuntu/assemblyline-v4-service"
run_service_once.py脚本测试切换至服务根目录:
shellcd assemblyline-service-<服务名称>
执行测试命令,格式:
shellpython3.11 -m assemblyline_v4_service.dev.run_service_once <服务入口路径> <待分析文件路径>
<服务入口路径>:服务代码中入口类的完整路径(如result_sample.ResultSample)<待分析文件路径>:本地测试文件的绝对路径测试结果(result.json及提取/补充文件)将输出至待分析文件所在目录的<文件名>_<服务名称>子目录中。
切换至服务根目录:
shellcd assemblyline_result_sample_service
执行测试命令:
shellpython3.11 -m assemblyline_v4_service.dev.run_service_once assemblyline_result_sample_service.result_sample.ResultSample /home/ubuntu/testfile.doc
结果输出路径:/home/ubuntu/testfile_resultsample(包含result.json及提取文件)
| 配置项 | 说明 | 取值范围/示例 |
|---|---|---|
name | 服务名称(唯一标识) | 字符串,如"ResultSample" |
stage | 服务运行阶段(决定执行顺序) | FILTER, EXTRACT, CORE, SECONDARY, POST |
category | 服务分类 | Antivirus, Static Analysis, 等7类 |
accepts/rejects | 文件类型过滤正则表达式 | .*(接受所有)、empty|metadata/.*(拒绝空文件/元数据) |
timeout | 超时时间(秒) | 整数,如60 |
docker_config | 容器资源配置 | cpu_cores: 1.0, ram_mb: 256 |
submission_params | 用户可调整的提交参数 | 支持bool/int/str/list类型,含默认值 |
heuristics | 威胁评分规则 | 包含描述、评分、ATT&CK ID等 |
| 环境变量 | 说明 | 示例 |
|---|---|---|
SERVICE_PATH | 服务入口类路径 | result_sample.ResultSample |

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429