审计日志
使用 Red Hat Developer Hub 审计日志跟踪用户活动、系统事件和数据更改
摘要
第 1 章 Red Hat Developer Hub 中的审计日志 复制链接链接已复制到粘贴板!
审计日志是记录用户活动、系统事件和数据更改的记录集,影响您的 Red Hat Developer Hub 用户、管理员或组件。管理员可以查看 OpenShift Container Platform Web 控制台中的 Developer Hub 审计日志,以监控构建器事件、对 RBAC 系统的更改,以及对 Catalog 数据库的更改。审计日志包括以下信息:
- 审计事件的名称
- 触发审计事件的操作者,如终端、端口、IP 地址或主机名
- 事件元数据,如日期、时间
-
事件状态,如
成功,失败 -
严重性级别,如
info、debug、warn、error
您可以使用审计日志中的信息来实现以下目标:
- 增强安全性
- 跟踪活动,包括由自动化系统和软件模板启动到其源的活动。了解何时执行软件模板,以及应用程序和组件安装、更新、配置更改和删除的详细信息。
- 自动化合规性
- 使用简化的流程查看指定时间点的日志数据,以满足审计目的或持续合规维护。
- 调试问题
- 使用访问记录和活动详情来修复软件模板或插件的问题。
默认情况下,审计日志不会转发到内部日志存储,因为这不提供安全存储。您需要自己确保转发审计日志的系统符合您所在机构及政府的相关要求,并具有适当的安全性。
使用 OpenShift Container Platform Web 控制台将以下 OpenShift Container Platform 日志记录组件配置为使用 Developer Hub 的审计日志记录:
- 日志记录部署
- 配置日志记录环境,包括每个日志记录组件的 CPU 和内存限值。如需更多信息,请参阅 Red Hat OpenShift Container Platform - 配置日志记录部署。
- 日志记录收集器
-
配置
ClusterLogging自定义资源(CR)中的spec.collection小节,以使用支持的对日志收集器的修改,并从STDOUT收集日志。如需更多信息,请参阅 Red Hat OpenShift Container Platform - 配置日志记录收集器。 - 日志转发
-
通过在
ClusterLogForwarderCR 中指定输出和管道的组合,将日志发送到 OpenShift Container Platform 集群内部和外部的特定端点。如需更多信息,请参阅 Red Hat OpenShift Container Platform - 启用 JSON 日志转发 和 Red Hat OpenShift Container Platform - 配置日志转发。
1.2. 在 Developer Hub 中查看审计日志 复制链接链接已复制到粘贴板!
管理员可以从 Red Hat OpenShift Container Platform Web 控制台查看、搜索、过滤和管理日志数据。您可以使用 isAuditLog 字段过滤其他日志类型的审计日志。
先决条件
- 在 OpenShift Container Platform Web 控制台中以管理员身份登录。
流程
- 从 OpenShift Container Platform Web 控制台的 Developer 视角中,点 Topology 选项卡。
- 在 Topology 视图中,点击您要查看审计日志数据的 pod。
- 在 pod 面板中点 Resources 选项卡。
- 在 Resources 选项卡的 Pods 部分中,单击 View logs。
-
在 Logs 视图中,在 Search 字段中输入
isAuditLog,以过滤来自其他日志类型的审计日志。您可以使用箭头浏览包含isAuditLog字段的日志。
1.2.1. 审计日志字段 复制链接链接已复制到粘贴板!
Developer Hub 审计日志可以包括以下字段:
eventName- 审计事件的名称。
行动者包含触发审计事件的操作者信息的对象。包含以下字段:
actorId-
关联的用户或服务的 name/id/
entityRef。如果未经身份验证的用户访问端点并禁用默认的验证策略,则可以是null。 ip- 行动者的 IP 地址(可选)。
hostname- 操作者的主机名(可选)。
client- 行动者的用户代理(可选)。
stage-
生成审计日志时事件的阶段,如启动
或完成。 status-
事件的状态,如
。成功或失败 meta-
包含事件特定数据的可选对象,如
taskId。 request可选字段,其中包含发送到端点的 HTTP 请求信息。包含以下字段:
方法- 请求的 HTTP 方法。
query-
请求的
查询字段。 params-
请求的
params字段。 正文(body)-
请求正文。创建任务时提供的secret被重新设计,显示为*。 url- 请求的端点 URL。
response可选字段,其中包含从端点发送的 HTTP 响应的信息。包含以下字段:
status- HTTP 响应的状态代码。
正文(body)- 请求正文的内容。
isAuditLog-
设置为
true的标志,用于将审计日志与其他日志类型区分开。 errors-
包含
名称、消息以及错误堆栈字段的错误列表。只有当状态失败时才会出现。
1.2.2. Scaffolder 事件 复制链接链接已复制到粘贴板!
Developer Hub 审计日志可以包括以下 scaffolder 事件:
ScaffolderParameterSchemaFetch-
跟踪对
/v2/templates/:namespace/:kind/:name/parameter-schema端点的GET请求,该端点返回模板参数 schema ScaffolderInstalledActionsFetch-
跟踪对
/v2/actions端点的GET请求,该端点获取已安装操作的列表 ScaffolderTaskCreation-
跟踪对
/v2/tasks端点的POST请求,该端点创建 scaffolder 执行的任务 ScaffolderTaskListFetch-
跟踪对
/v2/tasks端点的GET请求,该端点获取 scaffolder 中所有任务的详细信息。 ScaffolderTaskFetch-
跟踪对
/v2/tasks/:taskId端点的GET请求,该端点获取指定任务:taskId的详细信息 ScaffolderTaskCancellation-
跟踪对
/v2/tasks/:taskId/cancel端点的POST请求,该端点取消正在运行的任务 ScaffolderTaskStream-
跟踪
GET请求到/v2/tasks/:taskId/eventstream端点,该端点返回任务:taskId的任务日志的事件流。 ScaffolderTaskEventFetch-
跟踪对
/v2/tasks/:taskId/events端点的GET请求,该端点返回任务:taskId的任务日志的快照 ScaffolderTaskDryRun-
跟踪对
/v2/dry-run端点的POST请求,该端点会创建一个空运行任务。与空运行关联的事件的所有审计日志会将meta.isDryLog标志设为true。 ScaffolderStaleTaskCancellation- 跟踪自动取消过时的任务
ScaffolderTaskExecution-
跟踪实际构建器任务执行的启动和完成(空运行不会发生)
ScaffolderTaskStepExecution-
跟踪启动和完成构建器任务步骤执行 ScaffolderTaskStepSkip-
如果未满足条件,
则跟踪跳过的步骤 ScaffolderTaskStepIteration-
跟踪包含每个字段的任务步骤
执行的步骤。
1.2.3. 目录事件 复制链接链接已复制到粘贴板!
Developer Hub 审计日志可包括以下目录事件:
CatalogEntityAncestryFetch-
跟踪对
/entities/by-name/:kind/:namespace/:name/ancestry端点的GET请求,该端点返回实体的ancestry CatalogEntityBatchFetch-
跟踪
POST请求到/entities/by-refs端点,该端点返回批实体 CatalogEntityDeletion-
跟踪对
/entities/by-uid/:uid端点的DELETE请求,该端点删除实体
如果已删除实体的父位置仍存在于目录中,则在下一个处理周期期间会在目录中恢复实体。
CatalogEntityFacetFetch-
跟踪
GET请求到/entity-facets端点,该端点返回实体的挑战 CatalogEntityFetch-
跟踪
GET请求到/entities端点,该端点返回实体列表 CatalogEntityFetchByName-
跟踪
GET请求到/entities/by-name/:kind/:namespace/:name端点,该端点返回与指定实体引用匹配的实体,例如 <kind>:<namespace>/<name> CatalogEntityFetchByUid-
跟踪
GET请求到/entities/by-uid/:uid端点,该端点返回与指定实体的唯一 ID 匹配的实体 CatalogEntityRefresh-
跟踪
POST请求到/entities/refresh端点,该端点调度指定的实体刷新 CatalogEntityValidate-
跟踪对
/entities/validate端点的POST请求,该端点验证指定的实体 CatalogLocationCreation-
跟踪对
/locations端点的POST请求,这将创建一个位置
位置是一种标记,引用其他位置来查找目录数据。
CatalogLocationAnalyze-
跟踪对
/locations/analyze端点的POST请求,该端点分析指定的位置 CatalogLocationDeletion-
跟踪对
/locations/:id端点的DELETE请求,该端点删除位置以及与其关联的所有子实体 CatalogLocationFetch-
跟踪
GET请求到/locations端点,该端点返回位置列表 CatalogLocationFetchByEntityRef-
跟踪
GET请求到/locations/by-entity端点,该端点返回与指定实体引用关联的位置列表 CatalogLocationFetchById-
跟踪
GET请求到/locations/:id端点,该端点返回与指定位置 ID 匹配的位置 QueriedCatalogEntityFetch-
将
GET请求跟踪到/entities/by-query端点,该端点返回与指定查询匹配的实体列表
1.3. Red Hat Developer Hub 中的审计日志文件轮转 复制链接链接已复制到粘贴板!
登录到 Red Hat Developer Hub 中的轮转文件对于审计日志的持久性存储会很有帮助。
持久性存储可确保即使 pod 重启后,该文件也会保持不变。审计日志文件轮转会定期创建一个新文件,其中只有新数据写入到最新的文件中。
- 默认设置
默认禁用将审计日志记录到轮转文件。启用后,默认行为会更改为:
- 在午夜(本地系统时区)轮转日志。
-
日志文件格式:
redhat-developer-hub-audit-%DATE%.log. -
日志文件存储在
/var/log/redhat-developer-hub/audit中。 - 没有删除自动日志文件。
- 没有归档日志的 gzip 压缩。
- 没有文件大小限制。
审计日志写在 /var/log/redhat-developer-hub/audit 目录中。
- 日志文件名称
- 审计日志文件名采用以下格式:
redhat-developer-hub-audit-%DATE%.log
其中 %DATE% 是 auditLog.rotateFile.dateFormat 中指定的格式。您可以在配置文件轮转时自定义文件名。
- 文件轮转日期和时间
支持的
auditLog.rotateFile.frequency选项包括:-
daily: 每天在 00:00 本地时间点 -
Xm:每X分钟进行轮转(其中 X 是 0 到 509 之间的数字) -
Xh: 对每个X小时进行轮转(其中 X 是 0 到 23 之间的数字) -
测试:每 1 分钟轮转一次 -
Custom: 使用dateFormat来设置轮转频率(如果未指定频率,则默认为)
-
如果 频率 设为 Xh、Xm 或 test,则必须以包含指定时间组件的格式配置 dateFormat 设置。否则,轮转可能无法按预期工作。
例如,使用 dateFormat: 'YYYY-MM-DD-HH 用于每小时轮转,dateFormat: 'YYYY-MM-DD-HH-mm 用于分钟轮转。
分钟轮转示例:
auditLog:
rotateFile:
# If you want to rotate the file every 17 minutes
dateFormat: 'YYYY-MM-DD-HH-mm'
frequency: '17m'
auditLog:
rotateFile:
# If you want to rotate the file every 17 minutes
dateFormat: 'YYYY-MM-DD-HH-mm'
frequency: '17m'
如果频率设置为 自定义,则 dateFormat 设置在 logFileName 中配置 %DATE% 和文件轮转 频率。默认格式为 YYYY-MM-DD,表示每日轮转。支持的值基于 Moment.js 格式。
如果将 频率 设置为 custom,则在日期字符串(在指定 dateFormat 中表示)时会轮转,更改。
- 归档和删除
- 默认情况下,日志文件不会被归档或删除。
- 启用并配置审计文件轮转
- 如果您是 Developer Hub 管理员,您可以为审计日志启用文件轮转,并配置文件日志位置、名称格式、频率、日志文件大小、保留策略和归档。
审计日志文件轮转配置示例
- 1
- 将
enabled设置为true以使用审计日志文件轮转。默认情况下,它被设置为false。 - 2
- 日志文件的绝对路径。如果指定的目录不存在,则会自动创建该目录。
- 3
- 默认日志文件格式。
- 4
- 如果没有指定频率,则每天在 00:00 本地进行默认的文件轮转。
- 5
- 默认日期格式。
- 6
- 将
utc设置为true,来为dateFormat而不是本地时间使用 UTC 时间。 - 7
- 为审计日志设置最大文件大小限制。在本例中,最大大小为 100m。
- 8
- 如果设置为文件数,例如
14,那么当存在超过 14 个日志文件时,它将删除最旧的日志。如果设置为天数,如5d,则它将删除超过 5 天的日志。 - 9
- 使用
gzip归档和压缩轮转日志。默认值为false。
-
默认情况下,日志文件不会被归档或删除。如果启用了日志删除,则会在日志
要跟踪生成的日志的目录中生成 .<sha256 hash>-audit.json。目录中不包含的任何日志文件都不受到自动删除。 -
每次后端启动时都会生成一个新的
.<sha256 hash>-audit.json文件,这会导致以前的审计日志停止跟踪或删除,但当前后端仍使用的文件除外。