**注意:**在特定用例中,Webhook 可能是审核日志或 API 轮询的良好替代方法。 Webhook 是一种 GitHub 在存储库、组织或企业发生特定事件时通知服务器的方法。 与 API 或搜索审核日志相比,如果只想了解企业、组织或存储库何时发生某些事件并进行相应记录,Webhook 效率更高。 有关详细信息,请参阅“Webhook 文档”。
关于审核日志流
为了帮助保护你的知识产权并保持贵公司的合规性,你可以使用流式处理来保留审核日志数据的副本。 审核日志的详细信息事件,例如对设置和访问权限的更改、用户成员身份、应用权限等。 如果流式处理审核日志数据,则可以利用以下优势。
- 数据浏览。 您可以使用首选工具检查流事件,以查询大量数据。 流包含整个企业帐户中的审核事件和 Git 事件。
- 数据保留。 你可以根据需要保留导出的审核日志和 Git 事件数据。
企业所有者可以随时设置或删除流。 流会导出企业中所有组织的审核和 Git 事件数据,用于从启用流后开始的活动。
所有流式传输的审核日志都作为压缩的 JSON 文件发送。 文件名格式为 YYYY/MM/HH/MM/<uuid>.json.gz
。
注意:GitHub 使用至少一次传递方法。 由于某些网络或系统问题,某些事件可能会重复。
启用审核日志流式处理可能会对 你的 GitHub Enterprise Server 实例 的性能造成轻微影响。 有关增加资源以减轻这种性能影响的详细信息,请参阅“增加 CPU 或内存资源”。
审核日志流中所显示的事件
你可以查看流式处理的审核日志中显示的特定事件。 有关详细信息,请参阅以下文章。
设置审核日志流
您可以按照提供程序的说明在 GitHub Enterprise Server 上设置审核日志流。
设置流式传输到 Amazon S3
注意:必须可以从设备访问 Amazon 区域 us-east-1
,才能相应地流式处理要处理的 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 事件中心终结点。
-
成功验证终结点后,单击“保存”。
设置流式传输到 Datadog
若要设置流式传输到 Datadog,必须在 Datadog 中创建客户端令牌或 API 密钥,然后使用令牌在 GitHub Enterprise Server 中配置审核日志流式传输以进行身份验证。 无需在 Datadog 中创建 bucket 或其他存储容器。
设置流式传输到 Datadog 后,可以通过按“github.audit.streaming”进行筛选来查看审核日志数据。 有关详细信息,请参阅日志管理。
-
如果还没有 Datadog 帐户,请创建一个。
-
在 Datadog 中,生成客户端令牌或 API 密钥,然后单击“复制密钥”。 有关详细信息,请参阅 Datadog 文档中的 API 和应用程序密钥。
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。
-
在页面左侧的企业帐户边栏中,单击 “设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
选择“配置流”下拉列表,然后单击“Datadog”。
-
在“令牌”字段中,粘贴之前复制的令牌。
-
选择“站点”下拉菜单,然后单击 Datadog 站点。 若要确定 Datadog 站点,请将 Datadog URL 与 Datadog 文档的 Datadog 站点中的表进行比较。
-
若要验证 GitHub 是否可以连接并写入 Datadog 终结点,请单击“检查终结点”。
-
成功验证终结点后,单击“保存”。
-
几分钟后,确认审核日志数据是否出现在 Datadog 中的“日志”选项卡上。 如果审核日志数据未出现,请确认令牌和站点在 GitHub 中是否正确。
设置流式传输到 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 通过 <Domain>:port/services/collector
验证 HEC 端点。 如果自托管 HEC 端点(例如通过 OpenTelemetry 使用 Splunk HEC 接收器),请确保可在此目标访问端点。
-
在 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 的右上角,单击你的个人资料照片,然后单击“企业设置”****。
-
在页面左侧的企业帐户边栏中,单击 “设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
在“危险区域”下,单击“删除流”。
-
此时会显示确认消息。 单击“删除流”进行确认。