关于审核日志流
为了帮助保护您的知识产权并保持组织的合规性,您可以使用流式处理来保留审核日志数据的副本并监控:
- 对组织或仓库设置的访问
- 权限更改
- 组织、仓库或团队中添加或删除的用户
- 被提升为管理员的用户
- GitHub 应用程序 权限的更改
- Git 事件,例如克隆、获取和推送
流式传输审计数据的好处包括:
- 数据探索。 您可以使用首选工具检查流事件,以查询大量数据。 流包含整个企业帐户中的审核事件和 Git 事件。
- 数据连续性。 您可以暂停流长达七天,而不会丢失任何审核数据。
- 数据保留。 您可以根据需要保留导出的审核日志和 Git 事件数据。
企业所有者可以随时设置、暂停或删除流。 流导出企业中所有组织的审核数据。
设置审核日志流
您可以按照提供程序的说明在 GitHub Enterprise Cloud 上设置审核日志流。
设置流式传输到 Amazon S3
您可以使用访问密钥设置流式传输到 S3,或者,为了避免在 GitHub Enterprise Cloud 中存储长期存在的密钥,请使用 OpenID Connect (OIDC)。
使用访问密钥设置流式传输到 S3
要将审核日志流式传输到 Amazon 的 S3 终端节点,您必须拥有存储桶和访问密钥。 更多信息请参阅 AWS 文档中的创建、配置和使用 Amazon S3 存储桶。 请务必阻止对存储桶的公共访问,以保护您的审核日志信息。
要设置来自 GitHub 审核日志流式处理,您需要:
- Amazon S3 存储桶的名称
- AWS 访问密钥 ID
- AWS 密钥
有关创建或访问访问密钥 ID 和密钥的信息,请参阅 AWS 文档中的了解和获取您的 AWS 凭据。
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
Select the Configure stream dropdown and click Amazon S3.
-
在“Authentication(身份验证)”下,单击 Access keys(访问密钥)。
-
配置流设置。
- 在“Bucket(存储桶)”下,键入要流式传输到的存储桶的名称。 例如,
auditlog-streaming-test
。 - 在“Access Key ID(访问密钥 ID)”下,键入您的访问密钥 ID。 例如,
ABCAIOSFODNN7EXAMPLE1
。 - 在“Secret Key(密钥)”下,键入您的密钥。 例如,
aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY
。
- 在“Bucket(存储桶)”下,键入要流式传输到的存储桶的名称。 例如,
-
To verify that GitHub can connect and write to the Amazon S3 endpoint, click Check endpoint.
-
成功验证端点后,单击 Save(保存)。
使用 OpenID Connect 设置流式传输到 S3
-
在 AWS 中,将 GitHub OIDC 提供商添加到 IAM。 有关更多信息,请参阅 AWS 文档中的创建 OpenID Connect (OIDC) 身份提供程序。
- 对于提供程序 URL,请使用
https://oidc-configuration.audit-log.githubusercontent.com
。 - 对于“受众”,请使用
sts.amazonaws.com
。
- 对于提供程序 URL,请使用
-
创建存储桶,并阻止对存储桶的公共访问。 更多信息请参阅 AWS 文档中的创建、配置和使用 Amazon S3 存储桶。
-
创建允许 GitHub 写入存储桶的策略。 GitHub 只需要以下权限。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::example-bucket/*" } ] }
更多信息请参阅 AWS 文档中的创建 IAM 策略。
-
为 GitHub IdP 配置角色和信任策略。 更多信息请参阅 AWS 文档中的为 Web 身份创建角色或 OpenID Connect Federation(控制台) 。
- 添加您在上面创建的权限策略以允许写入存储桶。
- 编辑信任关系以将
sub
字段添加到验证条件,将ENTERPRISE
替换为企业名称。"Condition": { "StringEquals": { "oidc-configuration.audit-log.githubusercontent.com:aud": "sts.amazonaws.com", "oidc-configuration.audit-log.githubusercontent.com:sub": "https://github.com/ENTERPRISE" } }
- 记下所创建角色的 Amazon 资源名称 (ARN)。
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
Select the Configure stream dropdown and click Amazon S3.
-
在“Authentication(身份验证)”下,单击 OpenID Connect。
-
配置流设置。
- 在“Bucket(存储桶)”下,键入要流式传输到的存储桶的名称。 例如,
auditlog-streaming-test
。 - 在“ARN Role(ARN 角色)”下,键入您之前记下的 ARN 角色。 例如
arn:aws::iam::1234567890:role/github-audit-log-streaming-role
。
- 在“Bucket(存储桶)”下,键入要流式传输到的存储桶的名称。 例如,
-
To verify that GitHub can connect and write to the Amazon S3 endpoint, click Check endpoint.
-
成功验证端点后,单击 Save(保存)。
设置流式传输到 Azure Blob Storage
在 GitHub 中设置流之前,必须先在 Microsoft Azure 中创建存储帐户和容器。 有关详细信息,请参阅 Microsoft 文档中的“Azure Blob Storage 简介”。
要在 GitHub 配置流,需要 SAS 令牌的 URL。
在 Microsoft Azure 门户中:
-
在主页上,单击 Storage Accounts(存储帐户)。
-
单击要使用的存储帐户的名称,然后单击 Containers(容器)。
-
单击要使用的容器的名称。
-
单击 Shared access tokens(共享访问令牌)。
-
在 Permissions(权限)下拉菜单中,将权限更改为仅允许
创建
和写入
。 -
设置符合机密轮换策略的到期日期。
-
单击 Generate SAS token and URL(生成 SAS 令牌和 URL)。
-
复制显示的 Blob SAS URL 字段的值。 您将在 GitHub 中使用此 URL。
在 GitHub 上:
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
单击 Configure stream(配置流),然后选择 Azure Blob Storage。
-
在配置页上,输入在 Azure 中复制的 blob SAS URL。 Container(容器)字段将根据 URL 自动填充。
-
单击 Check endpoint(检查端点)以验证 GitHub 是否可以连接并写入 Azure Blob Storage 端点。
-
成功验证端点后,单击 Save(保存)。
设置流式传输到 Azure Event Hub
在 GitHub 中设置流之前,必须先在 Microsoft Azure 中具有事件中心命名空间。 接下来,必须在命名空间中创建事件中心实例。 设置流时,需要此事件中心实例的详细信息。 有关详细信息,请参阅 Microsoft 文档“快速入门:使用 Azure 门户创建事件中心”。
需要有关事件中心的两条信息:其实例名称和连接字符串。
在 Microsoft Azure 门户中:
-
搜索“事件中心”。
-
选择 Event Hubs(事件中心)。 将列出事件中心的名称。
-
记下要流式传输到的事件中心的名称。
-
单击所需的事件中心。 然后,在左侧菜单中,选择 Shared Access Policies(共享访问策略)。
-
在策略列表中选择共享访问策略,或创建新策略。
-
单击 Connection string-primary key(连接字符串 - 主键)字段右侧的按钮以复制连接字符串。
在 GitHub 上:
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
单击 Configure stream(配置流),然后选择 Azure Event Hubs。
-
在配置页面上,输入:
- Azure Event Hubs 实例的名称。
- 连接字符串。
-
单击 Check endpoint(检查端点)以验证 GitHub 是否可以连接并写入 Azure Event Hubs 端点。
-
成功验证端点后,单击 Save(保存)。
设置流式传输到 Google Cloud Storage
要设置流式传输到 Google Cloud Storage,您必须在 Google Cloud 中使用适当的凭据和权限创建一个服务帐户,然后使用服务帐户的凭据在 GitHub Enterprise Cloud 中配置审核日志流以进行身份验证。
-
为 Google Cloud 创建一个服务帐户。 您无需为服务帐户设置访问控制或 IAM 角色。 更多信息请参阅 Google Cloud 文档中的创建和管理服务帐户。
-
创建服务帐户的 JSON 密钥,并安全地存储该密钥。 更多信息请参阅 Google Cloud 文档中的创建和管理服务帐户密钥。
-
如果您尚未创建存储桶,请创建存储桶。 更多信息请参阅 Google Cloud 文档中的创建存储桶。
-
为服务帐户分配存储桶的存储对象创建者角色。 更多信息请参阅 Google Cloud 文档中和使用 Cloud IAM 权限。
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
选择配置流下拉菜单,然后单击 Google Cloud Storage。
-
在“Bucket(存储桶)”下,键入 Google Cloud Storage 存储桶的名称。
-
在“JSON Credentials(JSON 凭据)”下,粘贴服务帐户的 JSON 密钥文件的全部内容。
-
要验证 GitHub 是否可以连接并写入 Google Cloud Storage 存储桶,请单击 Check endpoint(检查端点)。
-
成功验证端点后,单击 Save(保存)。
设置流式传输到 Splunk
要将审核日志流式传输到 Splunk 的 HTTP 事件收集器 (HEC) 端点,必须确保将终端节点配置为接受 HTTPS 连接。 更多信息请参阅 Splunk 文档中的在 Splunk Web 中设置和使用 HTTP 事件收集器。
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
单击 Configure stream(配置流),然后选择 Splunk。
-
在配置页面上,输入:
-
要流式传输到的应用程序所在的域。
如果您使用的是 Splunk Cloud,
Domain
应为http-inputs-<host>
,其中host
是您在 Splunk Cloud 中使用的域。 例如:http-inputs-mycompany.splunkcloud.com
。 -
应用程序接受数据的端口。
如果您使用的是 Splunk Cloud,
Port
应为443
(如果您尚未更改端口配置)。 如果您使用的是 Splunk Cloud 的免费试用版,Port
应为8088
。 -
GitHub 可用来验证第三方应用程序的令牌。
-
-
选中 Enable SSL verification(启用 SSL 验证)复选框。
审核日志始终作为加密数据进行流式传输,但是,如果选择此选项, GitHub 在传递事件时会验证 Splunk 实例的 SSL 证书。 SSL 验证有助于确保将事件安全地传递到 URL 端点。 您可以清除此选项的选择,但我们建议您将 SSL 验证保留为启用状态。
-
单击 Check endpoint(检查端点)以验证 GitHub 是否可以连接并写入 Splunk 端点。
-
成功验证端点后,单击 Save(保存)。
暂停审核日志流
暂停流允许您对接收应用程序执行维护,而不会丢失审核数据。 审核日志在 GitHub.com 上最多存储七天,然后在取消暂停流时导出。
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
单击 Pause stream(暂停流)。
-
将显示一条确认消息。 单击 Pause stream(暂停流)以确认。
当应用程序准备好再次接收审核日志时,单击 Resume stream(恢复流)以重新启动流式处理审核日志。
删除审核日志流
-
在 GitHub.com 的右上角,单击您的个人资料照片,然后单击 Your enterprises(您的企业)。
-
在企业列表中,单击您想要查看的企业。
-
在企业帐户侧边栏中,单击 Settings(设置)。
-
在“ Settings(设置)”下,单击 Audit log(审核日志)。
-
Under "Audit log", click Log streaming.
-
单击 Delete stream(删除流)。
-
将显示一条确认消息。 单击 Delete stream(删除流)以确认。