Red Hat Developer Hub 中的审计日志
使用 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 - 配置日志转发。
2.1. 将 Red Hat Developer Hub 审计日志转发到 Splunk 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift Logging (OpenShift Logging) Operator 和 ClusterLogForwarder 实例从 Developer Hub 实例捕获流的审计日志,并将它们转发到与 Splunk 实例关联的 HTTPS 端点。
先决条件
- 您有一个在受支持的 OpenShift Container Platform 版本上运行的集群。
-
有具有
cluster-admin权限的帐户。 - 您有一个 Splunk Cloud 帐户或 Splunk Enterprise 安装。
流程
- 登录您的 OpenShift Container Platform 集群。
在
openshift-logging命名空间中安装 OpenShift Logging Operator 并切换到命名空间:切换到命名空间的命令示例
oc project openshift-logging
oc project openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
log-collector的serviceAccount,并将collect-application-logs角色绑定到serviceAccount:创建
serviceAccount的命令示例oc create sa log-collector
oc create sa log-collectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将角色绑定到
serviceAccount的命令示例oc create clusterrolebinding log-collector --clusterrole=collect-application-logs --serviceaccount=openshift-logging:log-collector
oc create clusterrolebinding log-collector --clusterrole=collect-application-logs --serviceaccount=openshift-logging:log-collectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在 Splunk 实例中生成
hecToken。 在
openshift-logging命名空间中创建 key/value secret 并验证 secret:使用
hecToken创建键/值 secret 的命令示例oc -n openshift-logging create secret generic splunk-secret --from-literal=hecToken=<HEC_Token>
oc -n openshift-logging create secret generic splunk-secret --from-literal=hecToken=<HEC_Token>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 secret 的命令示例
oc -n openshift-logging get secret/splunk-secret -o yaml
oc -n openshift-logging get secret/splunk-secret -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个基本的 'ClusterLogForwarder' 资源 YAML 文件,如下所示:
'ClusterLogForwarder'resource YAML 文件示例
apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance namespace: openshift-logging
apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance namespace: openshift-loggingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅创建日志转发器。
使用 OpenShift Web 控制台或 OpenShift CLI 定义以下
ClusterLogForwarder配置:在 YAML 文件中将
log-collector指定为serviceAccount:serviceAccount配置示例serviceAccount: name: log-collector
serviceAccount: name: log-collectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
输入以指定要转发的日志的类型和源。以下配置可让转发器从提供命名空间中的所有应用程序捕获日志:输入配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 从特定 pod 转发应用程序日志。
配置输出,以指定发送捕获的日志的位置。在这一步中,着重介绍 mvapich
类型。如果 Splunk 端点使用自签名 TLS 证书(不推荐)或使用 Secret 提供证书链,您可以使用tls.insecureSkipVerify选项。输出配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 OpenShift Container Platform 文档中的 将日志转发到 Splunk。
可选:过滤日志以只包含审计日志:
过滤器配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 OpenShift Container Platform 文档中的 按内容 过滤日志。
配置管道,将日志从特定输入路由到指定的输出。使用定义的输入和输出的名称为每个管道指定多个
inputRefs和outputRefs:管道配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令以应用
ClusterLogForwarder配置:应用
ClusterLogForwarder配置示例oc apply -f <ClusterLogForwarder-configuration.yaml>
oc apply -f <ClusterLogForwarder-configuration.yaml>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要降低日志丢失的风险,请使用以下选项配置
ClusterLogForwarderpod:为日志收集器定义资源请求和限值,如下所示:
收集器配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义日志交付的
调优选项,包括交付、压缩和RetryDuration。可以根据需要按输出应用调优。调优配置示例tuning: delivery: AtLeastOnce compression: none minRetryDuration: 1s maxRetryDuration: 10s
tuning: delivery: AtLeastOnce1 compression: none minRetryDuration: 1s maxRetryDuration: 10sCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
AtLeastOnce交付模式意味着,如果日志转发器崩溃或重启,任何在崩溃前读取的日志都会重新发送到其目的地。有些日志可能会在崩溃后重复。
验证
- 通过在 Splunk 仪表板中查看日志,以确认日志被转发到 Splunk 实例。
- 根据需要使用 OpenShift Container Platform 和 Splunk 日志排除任何问题。
第 3 章 在 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字段的日志。
3.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。
响应可选字段,其中包含从端点发送的 HTTP 响应的信息。包含以下字段:
status- HTTP 响应的状态代码。
正文(body)- 请求正文的内容。
isAuditLog-
设置为
true的标志,用于将审计日志与其他日志类型区分开。 errors-
包含
名称、消息以及错误堆栈字段的错误列表。只有当状态失败时才会出现。
3.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-
跟踪包含每个字段的任务步骤
执行的步骤。
3.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端点,该端点返回与指定查询匹配的实体列表