管理 GitHub Advanced Security 功能和警报
设置项目的安全性后,只需监视和管理项目的 GitHub 高级安全功能和警报。
在本单元中,你将了解如何使用“安全概述”监视项目中的安全风险。 本单元还介绍如何使用 GitHub 高级安全终结点来管理 GitHub 高级安全功能和警报。
使用安全概览
安全概述在组织和存储库 的安全 选项卡中提供。 可以使用它来大致了解组织的安全状态,或识别需要干预的有问题的存储库。
- 在组织层面,安全概述显示您组织拥有的存储库的汇总和特定存储库安全信息。 还可以根据安全功能筛选信息。
- 在团队级别,安全概览显示针对团队拥有管理员权限的存储库的特定于存储库的安全信息。
- 在存储库级别,安全概述显示为存储库启用哪些安全功能,并提供配置当前未使用的任何可用安全功能的选项。
由于其高度的交互性和大量筛选器,安全概述对于组织安全状态的广泛和具体分析都很有用。 例如,在向企业推出 GitHub 高级安全性时,可以使用它监视组织或特定团队采用的功能,或者使用它来查看组织中所有存储库中特定类型和严重性级别的所有警报。
使用 GitHub 高级安全接口
下表介绍了每个高级安全功能可用的终结点,并提供了指向其文档的链接。
| 功能 | 端点 | 文档 |
|---|---|---|
| 代码扫描 | 从存储库检索和更新代码扫描警报。 为组织中的代码扫描警报创建自动报告。 上传使用脱机代码扫描工具生成的分析结果。 |
代码扫描 API |
| 机密扫描 | 启用或禁用存储库的机密扫描。 从专用存储库检索和更新机密扫描警报。 |
Repos API 机密扫描 API |
| 依赖项检查 | 为存储库启用和禁用依赖项警报和依赖项关系图。 为存储库启用和禁用安全修复。 查看依赖项信息。 |
Repos API GraphQL API |
如果决定使用 GitHub Actions 自动执行安全工作流,请务必正确设置用于进行经过身份验证的 API 调用的权限 GITHUB_TOKEN 。 GITHUB_TOKEN 具有默认权限,具体取决于范围:
| 范围 | 默认访问(允许) | 默认访问(受限) | 分叉存储库的最大访问权限 |
|---|---|---|---|
| 操作 | 读/写 | 没有 | 读取 |
| 检查 | 读/写 | 没有 | 读取 |
| 内容 | 读/写 | 读取 | 读取 |
| 部署 | 读/写 | 没有 | 读取 |
| id-token | 读/写 | 没有 | 读取 |
| 问题 | 读/写 | 没有 | 读取 |
| 元数据 | 读取 | 读取 | 读取 |
| 包 | 读/写 | 没有 | 读取 |
| 拉取请求 | 读/写 | 没有 | 读取 |
| 存储库项目 | 读/写 | 没有 | 读取 |
| 安全事件 | 读/写 | 没有 | 读取 |
| 状态 | 读/写 | 没有 | 读取 |
可在单个工作流文件中修改 GITHUB_TOKEN 的权限。 如果 GITHUB_TOKEN 的默认权限比较严格,您可能需要增加权限,以允许某些操作和命令成功运行。 如果默认权限是宽松的,则可以编辑工作流文件以从 GITHUB_TOKEN 中移除一些权限。 作为一种良好的安全做法,应授予 GITHUB_TOKEN 最低所需访问权限。
还可以使用工作流文件中的 permissions 密钥来修改整个工作流或单个作业的权限 GITHUB_TOKEN 。 使用此密钥可以配置工作流或作业所需的最低权限。 使用permissions密钥时,除元数据范围始终具有读取访问权限外,所有未指定的权限都会被设置为无访问权限。
name: Create issue on commit
on: [ push ]
jobs:
create_commit:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Create issue using REST API
run: |
curl --request POST \
--url http(s)://[hostname]/api/v3/repos/${{ github.repository }}/issues \
--header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
--header 'content-type: application/json' \
--data '{
"title": "Automated issue for commit: ${{ github.sha }}",
"body": "This issue was automatically created by the GitHub Action workflow **${{ github.workflow }}**. \n\n The commit hash was: _${{ github.sha }}_."
}' \
--fail
在前面的示例中,为单个作业的一个范围授予写入访问权限。
此外,可以使用 permissions 密钥添加和删除分叉存储库的读取权限,但通常不能授予写入访问权限。 如果你在 GitHub Actions 设置中选择了“将写入令牌从拉取请求发送到工作流”选项,则此行为将是例外。