审计事件
- 审计事件(基于审计流)引入于极狐星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 中。具体步骤如下:
- 登录极狐星TowerFox,导航到 合规管理 > 审计事件 页面。
- 点击右上角的 审计事件数据拉取配置 图标,在弹出的悬浮框中复制审计流目的地 URL。
- 登录极狐星对接的极狐GitLab 实例,选择任意一个拥有
Owner
权限的顶级群组,选择左侧边栏中的 安全与合规 > 审计事件。 - 选择 事件流 页面,点击 添加事件流目的地,将在步骤 2 中复制的 URL 地址粘贴在 目的地 URL 中。
- 点击 保存。
至此,您已完成审计流目的地址在极狐GitLab 端的配置。
需要注意如下几点:
- 版本要求:审计事件功能对极狐GitLab 的版本要求详见文档链接。
- 只能为极狐GitLab 的顶级群组配置审计流目的地址。
- 必须以 Owner 身份进行该配置。
- 完成极狐GitLab 端的配置后,需要在极狐星TowerFox 上创建对应的 org 并关联上述配置了审计流地址的顶级群组,然后就可以在审计页面中查询到对应的审计事件。
从 GitLab 日志获取审计事件
用户还可以通过极狐GitLab 的日志获取审计事件,此功能需要配合 Filebeat
和 Elasticsearch pipeline
使用。通过使用 Filebeat
获取极狐GitLab 的 audit_json.log
、production_json.log
和 api_json.log
日志的内容,经过 Elasticsearch pipeline
的数据处理,最终获取审计事件并存储到 Elasticsearch
。具体配置步骤如下:
- 生成
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 即可。
<elasticsearch-host>
:为 Elasticsearch 的 URL 地址,比如:http://12.106.17.219:9200
。需要确保该 URL 地址可在极狐GitLab 节点正常访问。
username
和 password
:极狐星TowerFox 使用的 Elasticsearch 集群需要用户名和密码验证,则需要填写该字段,默认为空,即不需要用户名密码验证。
- 启动
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 身份执行。
- 以容器方式运行,需要添加
- 在极狐GitLab 中触发审计事件,例如
创建一个新的项目
,查看极狐星TowerFox 的 合规管理 > 审计事件 页面是否有刚触发的审计事件,如果有新的审计事件,则代表配置成功。
需要注意如下几点:
- 此方案主要从极狐GitLab 的三个日志文件中获取审计事件,这三个日志分别为
audit_json.log
、production_json.log
和api_json.log
。从production_json.log
和api_json.log
中,可以获取到代码克隆
、代码推送
审计事件。从audit_json.log
中,可以获取到其余所有审计事件,例如:代码下载
、项目创建
和项目删除
等。 - 对于免费版的极狐GitLab,
audit_json.log
只会输出和安全相关的审计事件日志,例如登录登出等。只有对于专业版和旗舰版,才会输出类似于项目创建、项目删除、项目派生等事件,而目前通过极狐GitLab 日志获取审计事件大多数是依赖audit_json.log
来进行获取的。所以这个方案要求用户至少使用专业版的极狐GitLab。 - 对于免费版的极狐GitLab,目前只能通过
production_json.log
和api_json.log
获取到代码克隆
和代码推送
审计事件。
日志获取审计事件支持的类型
只有部分类型的审计信息都可以从 GitLab 日志中获取到,当前极狐星TowerFox 支持的审计类型和事件如下表所示:
Event | Level | Event_Type | Service/Auditor | Entity/Scope | Target |
---|---|---|---|---|---|
Group create/destroy/mark deletion/restore | Group | Audit_operation | Service | Group | Group |
Project create/destroy/import/update/mark deletion/restore/download | Project | Audit_operation | Service | Project | Project |
Protected branch add/remove | Project | Protected_branch_created,protected_branch_removed | Auditor | Project | Branch |
Repository_download_operation | Project | Repository_download_operation | Auditor | Project | Project |
Repository_git_operation(http) | Project | Repository_git_operation | Auditor | Project | Project |
Project_fork_operation | Project | Project_fork_operation | Auditor | Project | Project |
Repository_git_operation(ssh) | Project | Repository_git_operation | Auditor | Project | Project |
更多其他审计事件类型会在后续版本中陆续增加。
导出审计事件数据
您可以将审计事件导出为表格以供本地查看。表格中包含审计事件的作者、对象、操作、描述、目标、IP 地址和时间(北京时间)。
导出审计事件数据:
- 登录进入极狐星TowerFox。
- 在左侧边栏中,选择 合规管理 > 审计事件。
- 在筛选器中自定义筛选条件,页面中展示所有符合筛选条件的审计事件。
- 选择右上角的 导出数据。