阿里云日志服务(SLS)不支持 custom_log 配置项,静态资源按后缀分类审计应通过 ALB/CDN 访问日志接入,结合字段提取、数据加工打标(如 resource_type)、LogStore 分流及联动 OSS 操作审计与配置审计实现。

阿里云日志服务(SLS)本身不直接提供 custom_log 这一原生配置项,该术语常见于 Nginx、Apache 等 Web 服务器的自定义日志格式配置中。在阿里云生态下,若需对不同后缀的静态资源(如 .js、.css、.png、.woff2)进行分类采集与审计,实际是通过「日志服务 + Web 服务器日志接入」或「CDN/ALB 访问日志 + 字段提取」两条路径实现,而非在 SLS 控制台里写 custom_log。
确认日志来源:优先使用 ALB 或 CDN 的标准访问日志
阿里云推荐方式不是自行部署 Nginx 并导出 custom_log,而是利用已托管的负载均衡(ALB)或内容分发网络(CDN)——它们天然记录 HTTP 请求的完整 URI、状态码、User-Agent 和响应大小等字段,且支持按后缀做条件过滤与加工。
- ALB 访问日志默认包含
request_uri字段,可从中提取文件后缀(如REGEXP_EXTRACT(request_uri, '\.([a-zA-Z0-9]+)(?:\?|$)', 1)) - CDN 日志同样提供
req_uri,并支持开启「扩展字段」获取更细粒度信息(如content_type、cache_status) - 这两类日志可一键接入新版日志审计服务,无需手动配置解析规则(系统已预置)
在日志服务中按后缀做分类打标与分流
接入后,可通过 SLS 的「数据加工」功能,对原始日志添加资源类型标签,便于后续审计分析:
- 新建加工任务,输入 SQL 式表达式:
if (regexp_extract(request_uri, '\.([a-z0-9]{2,5})(?:[?#]|$)', 1) in ('js', 'ts', 'mjs'), 'frontend-js',if (regexp_extract(request_uri, '\.([a-z0-9]{2,5})(?:[?#]|$)', 1) in ('css', 'scss', 'less'), 'frontend-css',if (regexp_extract(request_uri, '\.([a-z0-9]{2,5})(?:[?#]|$)', 1) in ('png', 'jpg', 'webp', 'gif'), 'image-static','other-resource')) as resource_type - 将加工结果投递至不同 LogStore(如
audit-js-logs、audit-image-logs),实现物理隔离 - 配合日志审计服务的「合规策略」,可为每类资源设置保留周期、加密策略与访问控制
结合配置审计与操作审计补全上下文
仅靠访问日志无法回答“谁改了静态资源存放位置”或“OSS Bucket 权限是否被误放开”等问题。需联动其他审计能力:
- 开启 OSS 的操作审计(ActionTrail),捕获
PutObject、DeleteObject、PutBucketPolicy等事件,关联用户身份与时间戳 - 启用配置审计(CloudConfig),检测 OSS Bucket 是否开启公共读、是否配置 Referer 白名单、是否启用服务端加密等合规项
- 在日志服务中用
join或仪表盘下钻,将某次异常图片请求(如大量 403)与对应时间段的 OSS 配置变更事件关联分析
避免常见误区
不要试图在 SLS 中模拟 Nginx 的 log_format 语法去“重写日志格式”,这既不可审计也不可持续。重点应放在:
- 选择可信、不可篡改的日志源(ALB/CDN/OSS 原生日志优于自建 Nginx 日志)
- 用字段提取+打标替代硬编码分类,确保规则可维护、可复用
- 把“静态资源访问行为”和“资源配置动作”视为同一审计链条的两个环节,而非孤立处理










