跳到主要内容
版本:2.4

审计事件

  • 审计事件(基于审计流)引入于极狐星TowerFox 1.3;依赖极狐GitLab 版本:专业版 14.5-15.9、旗舰版 15.10 以上;依赖 GitLab 版本:Ultimate 14.5。
  • 审计事件(基于 GitLab 日志)引入于极狐星TowerFox 2.0;依赖极狐GitLab 版本:无;依赖 GitLab 版本:无。

极狐星TowerFox 通过分析极狐GitLab 数据库系统中业务数据的操作日志来跟踪重要事件,包括执行操作的人员、IP 地址和时间等。 用户可以自定义时间、对象或人员,查看一段时间内系统的操作情况,提前发现潜在威胁、漏洞和异常行为,进而为组织提供全面的安全保障。

筛选器

您可以通过筛选器查看特定时间段内项目或群组中的所有审计事件。

  • 时间:最近 7/14/30/60/90/180 天:过去 7/14/30/60/90/180 天的审计事件数据。您也可以自定义时间段查看相应群组或项目的审计事件数据。起止时间间隔最大为 180 天,默认为最近 30 天。

  • 搜索:您可以自定义搜索条件,查询特定作者、对象、操作、目标和 IP 地址的审计事件数据。

  • 群组或项目:您可以查看特定群组或项目的审计事件数据,群组或项目支持多选。

审计事件详细信息

字段名称描述
作者筛选时间段内执行操作的人员。
对象筛选时间段内操作的执行对象。
操作筛选时间段内所执行的操作。
描述筛选时间段内执行操作的具体描述信息。
目标筛选时间段内执行操作的目标。
IP 地址筛选时间段内执行操作的 IP 地址。
时间筛选时间段内执行操作的时间。

审计事件数据拉取配置

先决条件: 审计事件页面仅展示与极狐GitLab 群组或项目相关联的极狐星TowerFox 群组的审计事件,因此您需要在新建群组时选择与极狐星TowerFox 群组相关联的极狐GitLab 群组或项目。

从审计事件流获取审计事件

极狐星TowerFox 的审计功能主要通过审计事件流的方式获取极狐GitLab 的审计事件,用户需要手动将极狐星TowerFox 自动生成的审计流目的地 URL 配置到极狐GitLab 中。具体步骤如下:

  1. 登录极狐星TowerFox,导航到 合规管理 > 审计事件 页面。
  2. 点击右上角的 审计事件数据拉取配置 图标,在弹出的悬浮框中复制审计流目的地 URL。

streamURL

  1. 登录极狐星对接的极狐GitLab 实例,选择任意一个拥有 Owner 权限的顶级群组,选择左侧边栏中的 安全与合规 > 审计事件
  2. 选择 事件流 页面,点击 添加事件流目的地,将在步骤 2 中复制的 URL 地址粘贴在 目的地 URL 中。

gitlab_url

  1. 点击 保存

至此,您已完成审计流目的地址在极狐GitLab 端的配置。

需要注意如下几点:

  • 版本要求:审计事件功能对极狐GitLab 的版本要求详见文档链接
  • 只能为极狐GitLab 的顶级群组配置审计流目的地址。
  • 必须以 Owner 身份进行该配置。
  • 完成极狐GitLab 端的配置后,需要在极狐星TowerFox 上创建对应的 org 并关联上述配置了审计流地址的顶级群组,然后就可以在审计页面中查询到对应的审计事件。

从 GitLab 日志获取审计事件

用户还可以通过极狐GitLab 的日志获取审计事件,此功能需要配合 FilebeatElasticsearch pipeline 使用。通过使用 Filebeat 获取极狐GitLab 的 audit_json.logproduction_json.logapi_json.log 日志的内容,经过 Elasticsearch pipeline 的数据处理,最终获取审计事件并存储到 Elasticsearch。具体配置步骤如下:

  1. 生成 filebeat 的配置文件 filebeat.yml,文件模版如下:
filebeat.inputs:

- type: log
paths:
- /var/log/gitlab/gitlab-rails/production_json.log
- /var/log/gitlab/gitlab-rails/api_json.log
json.keys_under_root: true
json.add_error_key: false
processors:
- add_fields:
target: ''
fields:
gitlab_instance_uuid: '<gitlab-instance-uuid>'
is_production_log: true

- type: log
paths:
- /var/log/gitlab/gitlab-rails/audit_json.log
json.keys_under_root: true
json.add_error_key: false
processors:
- add_fields:
target: ''
fields:
gitlab_instance_uuid: '<gitlab-instance-uuid>'
is_audit_log: true

output.elasticsearch:
hosts: ['<elasticsearch-host>']
username: ''
password: ''
pipeline: audit_event_pipeline
index: audit_events_production
allow_older_versions: true

setup.template.enabled: false
setup.template.name: 'audit_events_production'
setup.template.pattern: 'audit_events_*'

上述配置文件模版可以在极狐星TowerFox 的运行目录(默认为 /opt/towerfox)下找到:<Towerfox运行目录>/filebeat/filebeat.yml.tpl

参数说明:

<gitlab-instance-uuid>:为当前极狐GitLab 实例在极狐星TowerFox 上的 uuid,这个 uuid 会在管理员用户在极狐星TowerFox 中创建实例后生成。获取方式如下:

在左侧边栏中选择"合规管理 > 审计事件",点击右上角的"审计事件数据拉取配置"图标,选择对应的实例 ID 即可。 uuid

<elasticsearch-host>:为 Elasticsearch 的 URL 地址,比如:http://12.106.17.219:9200。需要确保该 URL 地址可在极狐GitLab 节点正常访问。

usernamepassword:极狐星TowerFox 使用的 Elasticsearch 集群需要用户名和密码验证,则需要填写该字段,默认为空,即不需要用户名密码验证。

  1. 启动 Filebeat服务

在极狐GitLab 所在主机上运行 filebeat 服务,可以选择多种方式启动,比如 Binary 二进制或者 Docker 容器的方式。以 Docker 方式启动的示例如下:

docker run -d  --name=filebeat  --user=root  -v /root/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro  -v /var/log/gitlab:/var/log/gitlab  docker.elastic.co/beats/filebeat:8.5.2

注意⚠️:

  • filebeat 版本建议和极狐星TowerFox 实际对接使用的 ElasticSearch 版本一致,避免出现版本兼容问题。因为极狐星TowerFox 自带的 ElasticSearch 版本为 8.5.2,因此这里使用的 filebeat 版本也是 8.5.2
  • 以容器方式运行需要将极狐GitLab 运行日志挂载到容器中。
  • 因为需要访问极狐GitLab 的日志文件,因此在 filebeat 运行的时候,需要 root 权限。
    • 以容器方式运行,需要添加 **--user=root** 参数。
    • 以 Binary 二进制的方式启动,需要添加 sudo 或者以 root 身份执行。
  1. 在极狐GitLab 中触发审计事件,例如 创建一个新的项目,查看极狐星TowerFox 的 合规管理 > 审计事件 页面是否有刚触发的审计事件,如果有新的审计事件,则代表配置成功。

需要注意如下几点:

  • 此方案主要从极狐GitLab 的三个日志文件中获取审计事件,这三个日志分别为 audit_json.logproduction_json.logapi_json.log。从 production_json.logapi_json.log 中,可以获取到 代码克隆代码推送 审计事件。从 audit_json.log 中,可以获取到其余所有审计事件,例如:代码下载项目创建项目删除 等。
  • 对于免费版的极狐GitLab,audit_json.log 只会输出和安全相关的审计事件日志,例如登录登出等。只有对于专业版和旗舰版,才会输出类似于项目创建、项目删除、项目派生等事件,而目前通过极狐GitLab 日志获取审计事件大多数是依赖 audit_json.log 来进行获取的。所以这个方案要求用户至少使用专业版的极狐GitLab。
  • 对于免费版的极狐GitLab,目前只能通过 production_json.logapi_json.log 获取到 代码克隆代码推送 审计事件。

日志获取审计事件支持的类型

只有部分类型的审计信息都可以从 GitLab 日志中获取到,当前极狐星TowerFox 支持的审计类型和事件如下表所示:

EventLevelEvent_TypeService/AuditorEntity/ScopeTarget
Group create/destroy/mark deletion/restoreGroupAudit_operationServiceGroupGroup
Project create/destroy/import/update/mark deletion/restore/downloadProjectAudit_operationServiceProjectProject
Protected branch add/removeProjectProtected_branch_created,protected_branch_removedAuditorProjectBranch
Repository_download_operationProjectRepository_download_operationAuditorProjectProject
Repository_git_operation(http)ProjectRepository_git_operationAuditorProjectProject
Project_fork_operationProjectProject_fork_operationAuditorProjectProject
Repository_git_operation(ssh)ProjectRepository_git_operationAuditorProjectProject

更多其他审计事件类型会在后续版本中陆续增加。

导出审计事件数据

您可以将审计事件导出为表格以供本地查看。表格中包含审计事件的作者、对象、操作、描述、目标、IP 地址和时间(北京时间)。

导出审计事件数据:

  1. 登录进入极狐星TowerFox。
  2. 在左侧边栏中,选择 合规管理 > 审计事件
  3. 在筛选器中自定义筛选条件,页面中展示所有符合筛选条件的审计事件。
  4. 选择右上角的 导出数据