如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像为Assemblyline 4服务提供基础功能支持,是构建、运行和测试Assemblyline 4自定义服务的核心依赖。开发者可基于此镜像创建符合Assemblyline 4规范的服务,实现文件分析、威胁检测等功能,并集成到Assemblyline 4系统中。
service_manifest.yml配置服务元信息、运行参数、启发规则等核心属性run_service_once.py脚本,支持脱离Assemblyline 4系统独立测试服务功能1.1 服务文件结构
Assemblyline服务需遵循以下文件结构:
textassemblyline-service-<服务名称> │ ├── Dockerfile # 服务容器构建文件 ├── <服务名称>.py # 服务核心代码 └── service_manifest.yml # 服务定义清单文件
各文件功能说明:
Dockerfile:定义服务容器的构建流程,包括基础镜像、依赖安装、代码复制等<服务名称>.py:实现服务核心逻辑,需遵循Assemblyline 4服务接口规范service_manifest.yml:配置服务元信息、运行参数、支持的文件类型等,是服务与系统交互的关键配置1.2 服务清单(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表示中性) attack_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: https://file-examples.com/wp-content/uploads/2017/02/zip_2MB.zip name: sample_2mb_file - uri: https://file-examples.com/wp-content/uploads/2017/02/zip_5MB.zip name: sample_5mb_file update_interval_seconds: 300 # 更新间隔(秒) generates_signatures: false # 是否生成系统签名(true表示更新文件用于签名生成)
1.3 Dockerfile编写规范
服务容器需通过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库。
2.1 开发环境搭建
注意:以下环境配置仅在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"
2.2 使用run_service_once.py脚本测试
测试步骤
切换至服务根目录:
shellcd assemblyline-service-<服务名称>
执行测试命令,格式:
shellpython3.11 -m assemblyline_v4_service.dev.run_service_once <服务入口路径> <待分析文件路径>
<服务入口路径>:服务代码中入口类的完整路径(如result_sample.ResultSample)<待分析文件路径>:本地测试文件的绝对路径测试结果(result.json及提取/补充文件)将输出至待分析文件所在目录的<文件名>_<服务名称>子目录中。
测试示例(以ResultSample服务为例)
切换至服务根目录:
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 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务