Note
在特定用例中,Webhook 可能是审核日志或 API 轮询的良好替代方法。 Webhook 是一种 GitHub 在存储库、组织或企业发生特定事件时通知服务器的方法。 与 API 或搜索审核日志相比,如果只想了解企业、组织或存储库何时发生某些事件并进行相应记录,Webhook 效率更高。 请参阅“Webhook 文档”。
关于审核日志流
可以帮助保护知识产权并保持贵公司的合规性,使用流式处理来保留审核日志数据的副本。 审核日志的详细信息事件,例如对设置和访问权限的更改、用户成员身份、应用权限等。 请参阅“企业的审核日志事件”、“组织的审核日志事件”和“安全日志事件”。
流式处理审核日志数据具有以下优势:
- 数据浏览。 使用首选工具检查流事件,以查询大量数据。 流包含整个企业帐户中的审核事件和 Git 事件。
- 数据保留。 根据需要保留导出的审核日志和 Git 事件数据。
可以随时设置或删除流。 流会导出企业中所有组织的审核和 Git 事件数据,用于从启用流后开始的活动。
所有流式传输的审核日志都作为压缩的 JSON 文件发送。 文件名格式为 YYYY/MM/HH/MM/<uuid>.json.gz
。
Note
GitHub 使用至少一次传递方法。 由于某些网络或系统问题,某些事件可能会重复。
启用审核日志流式处理可能会对 你的 GitHub Enterprise Server 实例 的性能造成轻微影响。 有关增加资源以减轻这种性能影响的详细信息,请参阅“增加 CPU 或内存资源”。
审核日志流的健康状况检查
每 24 小时,每个流都要运行一次健康状况检查。 如果流设置不正确,则会向企业所有者发送一封电子邮件。 为了避免从流中删除审核日志事件,配置错误的流必须在 6 天内修复。
若要修复流配置,请遵循“设置审核日志流式处理”中的步骤。
设置审核日志流
若要设置审核日志流,请按照提供程序的说明操作:
设置流式传输到 Amazon S3
Note
必须可以从设备访问 Amazon 区域 us-east-1
,才能流式处理要处理的 S3。
要设置来自 GitHub 审核日志流式处理,您需要:
- AWS 访问密钥 ID
- AWS 密钥
有关创建或访问访问密钥 ID 和密钥的信息,请参阅 AWS 文档中的了解和获取你的 AWS 凭据。
从 AWS:
-
创建 Bucket 并阻止对该 Bucket 的公共访问。 请参阅 AWS 文档中的 Creating, configuring, and working with Amazon S3 buckets(创建、配置和使用 Amazon S3 Bucket)。
-
创建允许 GitHub 写入 Bucket 的策略。 复制以下 JSON 并将
EXAMPLE-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:
-
在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”****。
-
在页面左侧的企业帐户边栏中,单击 “设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
选择“配置流”**** 下拉菜单,然后单击“Amazon S3”****。
-
配置流设置。
- 在“Bucket”下,输入想要流式传输到的 Bucket 名称。 例如
auditlog-streaming-test
。 - 在“访问密钥 ID”下,键入访问密钥 ID。 例如
ABCAIOSFODNN7EXAMPLE1
。 - 在“密钥”下,键入密钥。 例如
aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY
。
- 在“Bucket”下,输入想要流式传输到的 Bucket 名称。 例如
-
若要验证 GitHub 是否可以连接并写入 Amazon S3 终结点,请单击“检查终结点”。
-
成功验证终结点后,单击“保存”。
与 AWS CloudTrail Lake 集成
可以使用 AWS CloudTrail Lake 集成到 S3 的流式传输,将审核日志进行合并。 请参阅 AWS CloudTrail 文档或 aws-samples/aws-cloudtrail-lake-github-audit-log
存储库中的 CloudTrail 开放式审核的 GitHub 审核日志。
设置流式传输到 Azure Blob Storage
Note
不支持将审核日志流式处理到 Azure 政府中的 blob 存储。
在 GitHub 中设置流之前,先在 Microsoft Azure 中创建存储帐户和容器。 请参阅 Microsoft 文档中的 Azure Blob 存储简介。
需要 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
Note
Azure 政府中的事件中心实例不受支持。
在 GitHub 中设置流之前,需要:
- 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 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 文档中的创建存储桶。
-
为服务帐户分配存储桶的存储对象创建者角色。 请参阅 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 事件收集器。
Note
GitHub 通过 <Domain>:port/services/collector
验证 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 的右上角,单击你的个人资料照片,然后单击“企业设置”****。
-
在页面左侧的企业帐户边栏中,单击 “设置”。
-
在“ 设置”下,单击“审核日志”。
-
在“审核日志”下,单击“日志流式处理”。
-
在“危险区域”下,单击“删除流”。
-
将显示确认消息。 单击“删除流”进行确认。