注意:GitHub Enterprise Server 的审核日志流式处理目前为 beta 版本,可能会有变动。
关于审核日志流
为了帮助保护你的知识产权并保持组织的合规性,可以使用流式处理来保留审核日志数据的副本并监视:- 对你的组织或存储库设置的访问
- 权限的更改
- 在组织、存储库或团队中添加或删除的用户
- 被提升为管理员的用户
- GitHub App
- Git 事件,例如克隆、提取和推送 (必须启用,请参阅“为企业配置审核日志”)
流式传输审计数据的好处包括:
- 数据浏览。 您可以使用首选工具检查流事件,以查询大量数据。 流包含整个企业帐户中的审核事件和 Git 事件。
- 数据保留。 你可以根据需要保留导出的审核日志和 Git 事件数据。
企业所有者可以随时设置或删除流。 流会导出企业中所有组织的审核和 Git 事件数据,用于从启用流后开始的活动。
所有流式传输的审核日志都作为压缩的 JSON 文件发送。 文件名格式为 YYYY/MM/HH/MM/<uuid>.json.gz
。
注意:GitHub 使用至少一次传递方法。 由于某些网络或系统问题,某些事件可能会重复。
启用审核日志流式处理可能会对 你的 GitHub Enterprise Server 实例 的性能造成轻微影响。 有关增加资源以减轻这种性能影响的详细信息,请参阅“增加 CPU 或内存资源”。
设置审核日志流
您可以按照提供程序的说明在 GitHub Enterprise Server 上设置审核日志流。
设置流式传输到 Amazon S3
要设置来自 GitHub 审核日志流式处理,您需要:
- AWS 访问密钥 ID
- AWS 密钥
有关创建或访问访问密钥 ID 和密钥的信息,请参阅 AWS 文档中的了解和获取你的 AWS 凭据。
-
在 AWS 中,创建存储桶,并阻止对存储桶的公共访问。 有关详细信息,请参阅 AWS 文档中的 Creating, configuring, and working with Amazon S3 buckets(创建、配置和使用 Amazon S3 Bucket)。
-
在 AWS 中,通过复制以下 JSON 并将
EXAMPLE-BUCKET
替换为你的 Bucket 名称,创建一个允许 GitHub 写入 Bucket 的策略。 GitHub 只需要此 JSON 中的权限。{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*" } ] }
有关详细信息,请参阅 AWS 文档中的 Creating IAM policies(创建 IAM 策略)。
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”。
-
在企业帐户边栏中,单击“设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
选择“配置流”**** 下拉菜单,然后单击“Amazon S3”****。
-
配置流设置。
- 在“Bucket”下,输入想要流式传输到的 Bucket 名称。 例如
auditlog-streaming-test
。 - 在“访问密钥 ID”下,键入访问密钥 ID。 例如
ABCAIOSFODNN7EXAMPLE1
。 - 在“密钥”下,键入密钥。 例如
aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY
。
- 在“Bucket”下,输入想要流式传输到的 Bucket 名称。 例如
-
若要验证 GitHub 是否可以连接并写入 Amazon S3 终结点,请单击“检查终结点”。
-
成功验证终结点后,单击“保存”。
与 AWS CloudTrail Lake 集成
可通过将到 S3 的审核日志流式传输与 AWS CloudTrail Lake 集成,将 GitHub Enterprise Server 中的审核日志与 AWS 活动日志合并。 有关其他信息,请参阅 AWS CloudTrail 文档或 aws-samples/aws-cloudtrail-lake-github-audit-log
存储库中的 CloudTrail 开放式审核的 GitHub 审核日志。
设置流式传输到 Azure Blob Storage
在 GitHub 中设置流之前,必须先在 Microsoft Azure 中创建存储帐户和容器。 有关详细信息,请参阅 Microsoft 文档“Azure Blob 存储简介”。
要在 GitHub 配置流,需要 SAS 令牌的 URL。
在 Microsoft Azure 门户中:
- 在主页上,单击“存储帐户”。
- 在“名称”下,单击要使用的存储帐户的名称。
- 在“数据存储”下,单击“容器”。
- 单击要使用的容器的名称。
- 在左侧边栏的“设置”下,单击“共享访问令牌”。
- 选择“权限”下拉菜单,然后选择
Create
和Write
,并取消选择所有其他选项。 - 设置符合机密轮换策略的到期日期。
- 单击“生成 SAS 令牌和 URL”。
- 复制显示的 Blob SAS URL 字段的值。 您将在 GitHub 中使用此 URL。
在 GitHub 上:
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”。
-
在企业帐户边栏中,单击“设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
选择“配置流”下拉菜单并单击“Azure Blob 存储” 。
-
在配置页上,输入在 Azure 中复制的 blob SAS URL。 “容器”字段将根据 URL 自动填充。
-
单击“检查终结点”以验证 GitHub 是否可以连接并写入 Azure Blob 存储终结点。
-
成功验证终结点后,单击“保存”。
设置流式传输到 Azure Event Hub
在 GitHub 中设置流之前,必须先在 Microsoft Azure 中具有事件中心命名空间。 接下来,必须在命名空间中创建事件中心实例。 设置流时,需要此事件中心实例的详细信息。 有关详细信息,请参阅 Microsoft 文档“快速入门:使用 Azure 门户创建事件中心”。
需要有关事件中心的两条信息:其实例名称和连接字符串。
在 Microsoft Azure 门户中:
- 在页面顶部的“Microsoft Azure”旁,使用搜索框搜索“事件中心”。
- 选择“事件中心”。 将列出事件中心的名称。
- 记下要流式传输到的事件中心的名称。 单击该事件中心。
- 在左侧菜单中,单击“共享访问策略”。
- 从策略列表中选择共享访问策略,或创建新策略。
- 从“连接字符串 - 主密钥”字段中复制连接字符串。
在 GitHub 上:
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”。
-
在企业帐户边栏中,单击“设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
选择“配置流”下拉菜单并单击“Azure 事件中心” 。
-
在配置页面上,输入:
- Azure Event Hubs 实例的名称。
- 连接字符串。
-
单击“检查终结点”以验证 GitHub 是否可以连接并写入 Azure 事件中心终结点。
-
成功验证终结点后,单击“保存”。
设置流式传输到 Google Cloud Storage
要设置流式传输到 Google Cloud Storage,您必须在 Google Cloud 中使用适当的凭据和权限创建一个服务帐户,然后使用服务帐户的凭据在 GitHub Enterprise Server 中配置审核日志流以进行身份验证。
-
为 Google Cloud 创建一个服务帐户。 您无需为服务帐户设置访问控制或 IAM 角色。 有关详细信息,请参阅 Google Cloud 文档中的创建和管理服务帐户。
-
创建服务帐户的 JSON 密钥,并安全地存储该密钥。 有关详细信息,请参阅 Google Cloud 文档中的创建和管理服务帐户密钥。
-
如果您尚未创建存储桶,请创建存储桶。 有关详细信息,请参阅 Google Cloud 文档中的创建存储 Bucket。
-
为服务帐户分配存储桶的存储对象创建者角色。 有关详细信息,请参阅 Google Cloud 文档中的使用 Cloud IAM 权限。
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”。
-
在企业帐户边栏中,单击“设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
选择“配置流”下拉菜单并单击“Google Cloud Storage” 。
-
在“Bucket(存储桶)”下,键入 Google Cloud Storage 存储桶的名称。
-
在“JSON Credentials(JSON 凭据)”下,粘贴服务帐户的 JSON 密钥文件的全部内容。
-
若要验证 GitHub 是否可以连接并写入 Google Cloud Storage Bucket,请单击“检查终结点”。
-
成功验证终结点后,单击“保存”。
设置流式传输到 Splunk
要将审核日志流式传输到 Splunk 的 HTTP 事件收集器 (HEC) 端点,必须确保将终端节点配置为接受 HTTPS 连接。 有关详细信息,请参阅 Splunk 文档中的在 Splunk Web 中设置和使用 HTTP 事件收集器。
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”。
-
在企业帐户边栏中,单击“设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
选择“配置流”下拉菜单并单击“Splunk” 。
-
在配置页面上,输入:
-
要流式传输到的应用程序所在的域。
如果使用的是 Splunk Cloud,则
Domain
应为http-inputs-<host>
,其中host
是你在 Splunk Cloud 中使用的域。 例如http-inputs-mycompany.splunkcloud.com
。如果使用的是免费试用版 Splunk Cloud,则
Domain
应为inputs.<host>
,其中host
是你在 Splunk Cloud 中使用的域。 例如inputs.mycompany.splunkcloud.com
。 -
应用程序接受数据的端口。
如果使用的是 Splunk Cloud 并且尚未更改端口配置,则
Port
应为443
。如果使用的是 Splunk Cloud 的免费试用版,则
Port
应为8088
。 -
GitHub 可用来验证第三方应用程序的令牌。
-
-
使“启用 SSL 验证”复选框保持选中状态。
审核日志始终作为加密数据进行流式传输,但是,如果选择此选项, GitHub 在传递事件时会验证 Splunk 实例的 SSL 证书。 SSL 验证有助于确保将事件安全地传递到 URL 端点。 您可以清除此选项的选择,但我们建议您将 SSL 验证保留为启用状态。
-
单击“检查终结点”以验证 GitHub 是否可以连接并写入 Splunk 终结点。
-
成功验证终结点后,单击“保存”。
删除审核日志流
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”。
-
在企业帐户边栏中,单击“设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
在“危险区域”下,单击“删除流”。
-
此时会显示确认消息。 单击“删除流”进行确认。