审计日志
前提条件
在服务器上启用 SSL。有关详细信息,请参阅在 MATLAB Web App Server 上启用 SSL。
在服务器上启用身份验证。有关详细信息,请参阅身份验证。
事件类别和支持的活动
审计日志可让您跟踪和监控用户访问和 App 使用情况,并记录关键事件。通过启用审计日志,您可以:
跟踪用户访问,识别未经授权的访问,确保安全。
让 App 开发人员深入了解 App 的使用模式,包括用户数量和使用时长。
生成可与现有工具集成的结构化数据,以便进一步分析。
日志记录按事件类别组织,每个类别包括可记录的特定事件。在配置 JSON 中,事件类别指定为 event_category。每个类别所支持的单个事件都列在 supported_events_doc 下,您要为每个类别记录的特定事件则从 supported_events_doc 中选择,并置于配置 JSON 的 events 字段中。
event_category | supported_events_doc | 描述 |
|---|---|---|
|
| 这些事件提供有关服务器运行的信息,特别是服务器启动和停止的时间。 |
|
| 这些事件提供了有关 App 使用持续时间和 App 管理相关操作的信息。 |
|
| 这些事件提供与登录和注销相关的用户操作信息。 |
|
| 这些事件根据授权的准许或拒绝,捕捉用户上传或删除 App 的能力。 |
每个事件都包括用户姓名。如果 userinfo.json 文件配置在 webapps_private 文件夹中,则日志文件将显示 UserID 键的值。如果没有 userinfo.json 文件,日志文件将使用 displayName 文件 appConfig 部分中的 webapps_authn.json 键值。有关详细信息,请参阅根据用户自定义 Web App 行为。
审计日志文件被写入服务器日志目录下名为 auditlogs 的单独文件夹中。服务器日志的默认位置是:
| 操作系统 | 日志文件夹位置 |
|---|---|
Windows® |
|
Linux® |
|
macOS |
|
启用审计日志
要启用审计日志:
创建一个名为
auditlog.json的文件并将其放在config文件夹内的webapps_private文件夹中。webapps_private文件夹位于以下位置:操作系统 文件夹位置 Windows
%ProgramData%\MathWorks\webapps\R2025b\config\webapps_privateLinux
/local/MathWorks/webapps/R2025b/config/webapps_privatemacOS
/Library/Application Support/MathWorks/webapps/R2025b/config/webapps_private
auditlog.json 的 JSON 架构是:
{
"version": "<major>.<minor>.<patch>",
"log_file_max_size": "A numeric value representing the maximum size of a log file in MB",
"log_files_max_num": "A numeric value representing the maximum number of log files to retain",
"event_categories": [
{
"event_category": "server",
"enable": "<all | none | specified>",
"events": ["<start | stop>"],
"supported_events_doc": "<start, stop>"
},
{
"event_category": "app",
"enable": "<all | none | specified>",
"events": ["<usage | upload | delete>"],
"supported_events_doc": "<usage, upload, delete>"
},
{
"event_category": "authentication",
"enable": "<all | none | specified>",
"events": ["<login | logout>"],
"supported_events_doc": "<login, logout>"
},
{
"event_category": "authorization",
"enable": "<all | none | specified>",
"events": ["<grant | denial>"],
"supported_events_doc": "<grant, denial>"
}
]
}version:指定 JSON 架构的版本。R2025b 的默认值是
1.0.0。log_file_max_size:指定一个数值,代表日志文件的最大大小 (MB)。例如,要将最大日志文件大小设置为 10 MB,请使用
10。log_files_max_num:指定一个数值,代表要保留的日志文件的最大数量。例如,要保留多达 20 个日志文件,请使用
20。event_categories:在
event_categories数组中指定审计日志支持的不同事件类别。目前,支持的事件类别有server、app、authentication和authorization。enable:使用
enable字段指定启用或禁用审计日志的当前事件类别。支持的值有:all、none和specified。选择specified时,只记录events字段中列出的事件。例如,要记录某个类别中的所有事件,请使用"all"。event_category:使用
event_category字段指定要记录的事件类型。支持的类别包括server、app、authentication和authorization。例如,要指定服务器事件日志,请使用"server"。events:使用
events数组指定要记录的特定事件。必须以字符串数组(每个字符串代表一个事件)或以逗号分隔的单个字符串(列出这些事件)的形式指定值。只有当enable字段设置为specified时,该数组才会相关,从而确保审计日志中只记录此处列出的事件。例如,要记录启动和停止事件,请使用["start", "stop"]。supported_events_doc:使用
supported_events_doc字段指定每个事件类别所支持的事件。这些信息有助于用户确定哪些事件可以添加到events数组中,以便记录。例如,要记录start和stop等受支持的服务器事件,请使用"start, stop"。
auditlog.json 示例文件
{
"version": "1.0.0",
"log_file_max_size": 100,
"log_files_max_num": 5,
"event_categories": [
{
"event_category": "server",
"enable": "specified",
"events": ["start", "stop"],
"supported_events_doc": "start, stop"
},
{
"event_category": "app",
"enable": "all",
"events": ["usage", "upload", "delete"],
"supported_events_doc": "usage, upload, delete"
},
{
"event_category": "authentication",
"enable": "specified",
"events": ["login"],
"supported_events_doc": "login, logout"
},
{
"event_category": "authorization",
"enable": "specified",
"events": ["grant"],
"supported_events_doc": "grant, denial"
}
]
}日志文件示例
{ "timestamp": "2024-10-14 13:16:08", "category": "server", "event": "start" }
{ "timestamp": "2024-10-14 13:16:26", "category": "authentication", "event": "login", "user": "cinderella" }
{ "timestamp": "2024-10-14 13:20:59", "category": "authorization", "event": "grant", "action": "app_upload", "user": "alice" }
{ "timestamp": "2024-10-14 13:26:44", "category": "app", "event": "delete", "app_name": "app1.ctf" }
{ "timestamp": "2024-10-14 13:29:19", "category": "authorization", "event": "grant", "action": "app_upload", "user": "raya" }
{ "timestamp": "2024-10-14 13:29:24", "category": "app", "event": "delete", "app_name": "app2.ctf" }
{ "timestamp": "2024-10-14 13:29:49", "category": "authorization", "event": "grant", "action": "app_upload", "user": "cali" }
{ "timestamp": "2024-10-14 13:30:10", "category": "app", "event": "upload", "app_name": "app3.ctf" }
{ "timestamp": "2024-10-14 13:30:30", "category": "server", "event": "stop" }
{ "timestamp": "2024-10-14 13:31:00", "category": "app", "event": "usage", "app_name": "app4", "duration": "310" }认证事件
这些事件提供与登录相关的用户操作信息。日志中只记录 "login" 操作。例如:
{"timestamp": "2024-10-14 13:16:26", "category": "authentication", "event": "login", "user": "cinderella"}该日志记录显示,2024 年 10 月 14 日下午 1:16 时,用户 "cinderella" 成功登录系统。
授权事件
这些事件捕获与授予用户权限以执行 App 相关任务有关的操作。配置为该类别指定了 "enable": "specified",侧重于“准许”操作,用以跟踪哪些用户被授权上传 App。例如:
{"timestamp": "2024-10-14 13:20:59", "category": "authorization", "event": "grant", "action": "app_upload", "user": "alice"}此日志条目显示用户 "alice" 已获得上传 App 的权限。
App 事件
这些事件提供有关上传、删除和使用 App 等操作的信息。配置为 "enable": "all" 类别指定了 "app",用以捕获所有与 App 相关的活动。例如:
Delete
{"timestamp": "2024-10-14 13:26:44", "category": "app", "event": "delete", "app_name": "app1.ctf"}此条目表示 "app1.ctf" 已删除。
Upload
{"timestamp": "2024-10-14 13:30:10", "category": "app", "event": "upload", "app_name": "app3.ctf"}此条目表示 "app3.ctf" 已上传。
Usage
{"timestamp": "2024-10-14 13:31:00", "category": "app", "event": "usage", "app_name": "app4", "duration": "310"}此条目表示 "app4" 被使用了 310 秒。
服务器事件
这些事件提供有关服务器运行的信息,特别是服务器启动和停止的时间。配置为 "enable": "all" 类别指定了 "server",用以同时捕获 "start" 和 "stop" 操作。例如:
Start
{"timestamp": "2024-10-14 13:16:08", "category": "server", "event": "start"}此条目显示服务器于 2024 年 10 月 14 日下午 1:16 启动。
Stop
{"timestamp": "2024-10-14 13:30:30", "category": "server", "event": "stop"}此条目显示服务器于同一天下午 1:30 停止运行。