Skip to main content

在企业中使用审核日志 API

可以使用 REST API 以编程方式检索企业事件。

谁可以使用此功能?

Enterprise owners can use the audit log API.

使用审核日志 API

注意:****在特定用例中,Webhook 可能是审核日志或 API 轮询的良好替代方法。 Webhook 是一种 GitHub 在存储库、组织或企业发生特定事件时通知服务器的方法。 与 API 或搜索审核日志相比,如果只想了解企业、组织或存储库何时发生某些事件并进行相应记录,Webhook 效率更高。 有关详细信息,请参阅“Webhook 文档”。

可以通过使用 REST API 与审核日志交互来保持企业合规性和保护你的知识产权。 有关可以通过审核日志 API 访问的特定事件的详细信息,请参阅下面的文章。

审核日志列出了由影响企业的活动触发的事件 审核日志将 Git 事件保留 7 天。

默认情况下,仅显示过去三个月的事件。 若要查看较旧的事件,必须使用 created 参数指定日期范围。 有关详细信息,请参阅“了解搜索语法”。

API 响应中的时间戳和日期字段以 UTC epoch 毫秒为度量单位。

你可以使用 read:audit_log 范围通过 API 访问审核日志。

对于给定的用户和 IP 地址组合,每个审核日志 API 终结点的速率限制为每小时 1,750 次查询。 为了避免速率限制,查询审核日志 API 的集成应以每小时 1,750 次查询的最大频率进行查询。 此外,如果集成收到速率限制错误(通常是 403 或 429 响应),则应等待,然后再向 API 发出另一个请求。 有关详细信息,请参阅“REST API 的速率限制”和“使用 REST API 的最佳做法”。

有关审核日志 REST API 的详细信息,请参阅“适用于企业审核日志的 REST API 终结点”和“适用于组织的 REST API 终结点”。

示例 1:企业中在特定日期的所有事件(使用分页显示)

可以使用基于游标的分页。 有关分页的详细信息,请参阅“在 REST API 中使用分页”。

以下查询搜索 avocado-corp 企业中于 2022 年 1 月 1 日创建的审核日志事件,并使用分页返回第一页,每页最多包含 100 个项。 有关分页的详细信息,请参阅“在 REST API 中使用分页”。 --include 标志会导致返回的响应中包含标头。

curl --include -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=created:2022-01-01&per_page=100"

如果结果超过 100 个,则 link 标头将包含用于提取下一页、第一页和上一页结果的 URL。

link: <https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42NjQzODMzNTk5MjdlKzEyfDloQzBxdURzaFdVbVlLWjkxRU9mNXc%3D&before=>; rel="next",
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=>; rel="first",
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=MS42Njc4NDA2MjM4MzNlKzEyfExqeG5sUElvNEZMbG1XZHA5akdKTVE%3D>; rel="prev"

将相应的分页链接复制到下一个请求中。 例如:

curl -I -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42Njc4NDA2MjM5NDFlKzEyfHRYa3AwSkxUd2xyRjA5bWxfOS1RbFE%3D&before="

示例 2:组织中在特定日期参与者参与的拉取请求事件

你可以指定多个搜索短语(例如 createdactor),具体方法是在 URL 格式中用 + 符号或 ASCII 字符代码 %20 分隔它们。

以下查询搜索 avocado-corp 企业中拉取请求的审核日志事件,其中事件发生在 2022 年 1 月 1 日或之后,操作由 octocat 用户执行:

curl -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=action:pull_request+created:>=2022-01-01+actor:octocat"

示例 3:企业中特定日期和执行者的 Git 活动事件

可以通过将 include=git 添加为 URL 中的参数来搜索企业中的 Git 事件,例如克隆、提取和推送。 此外也可以使用 include=all 来搜索 Web 事件和 Git 事件。

以下查询将搜索 avocado-corp 企业中发生在 2024 年 1 月 1 日之后,并且操作由 octocat 用户执行的 Git 活动审核日志事件。

curl -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=created:>=2024-01-01+actor:octocat&include=git"