Note: Your site administrator must enable 秘密扫描 for 您的 GitHub Enterprise Server 实例 before you can use this feature. For more information, see "Configuring 秘密扫描 for your appliance."
注意: 秘密扫描 作为保护推送目前处于测试阶段,可能会有所变化。 要申请使用测试版,请联系我们的客户管理团队。
关于机密的推送保护
到目前为止,> - 秘密扫描 在推送后检查机密,并向用户提醒暴露的机密。 启用推送保护时, 秘密扫描 还会检查推送是否存在高置信度机密(以低误报率标识的机密)。 秘密扫描 列出了它检测到的任何机密,以便作者可以查看机密并删除它们,或者在需要时允许推送这些机密。
If a contributor bypasses a push protection block for a secret, GitHub:
- generates an alert.
- creates an alert in the "Security" tab of the repository.
- adds the bypass event to the audit log.
秘密扫描 作为推送保护,当前会扫描存储库中查找由以下服务提供商颁发的机密。
If access to a resource requires paired credentials, then secret scanning will create an alert only when both parts of the pair are detected in the same file. This ensures that the most critical leaks are not hidden behind information about partial leaks.
提供者 | 支持的密钥 | 密钥类型 |
---|---|---|
Adafruit IO | Adafruit IO 密钥 | adafruit_io_key |
Alibaba Cloud | Alibaba Cloud Access Key ID with Alibaba Cloud Access Key Secret | alibaba_cloud_access_key_id alibaba_cloud_access_key_secret |
Amazon | Amazon OAuth Client ID with Amazon OAuth Client Secret | amazon_oauth_client_id amazon_oauth_client_secret |
Amazon Web Services (AWS) | Amazon AWS Access Key ID with Amazon AWS Secret Access Key | aws_access_key_id aws_secret_access_key |
Amazon Web Services (AWS) | Amazon AWS Session Token with Amazon AWS Temporary Access Key ID and Amazon AWS Secret Access Key | aws_session_token aws_temporary_access_key_id aws_secret_access_key |
Asana | Asana 个人访问令牌 | asana_personal_access_token |
Atlassian | Bitbucket 服务器个人访问令牌 | bitbucket_server_personal_access_token |
Azure | Azure Active Directory 应用程序密钥 | azure_active_directory_application_secret |
Azure | Redis 访问密钥的 Azure 缓存 | azure_cache_for_redis_access_key |
Azure | Azure DevOps 个人访问令牌 | azure_devops_personal_access_token |
启用 秘密扫描 作为推送保护
要将 秘密扫描 用作推送保护,组织或存储库需要同时启用 GitHub Advanced Security 和 秘密扫描。 更多信息请参阅“管理组织的安全性和分析设置”、“管理存储库的安全和分析设置”和“关于 GitHub Advanced Security”。
组织所有者、安全管理员和存储库管理员可以通过 UI 和 API 为 秘密扫描 启用推送保护。 更多信息请参阅“存储库”,并展开 REST API 文档中的“security_and_analysis
对象的属性”部分。
启用 秘密扫描 作为组织的推送保护
- 在 您的 GitHub Enterprise Server 实例 上,导航到组织的主页面。
- 在组织名称下,单击
设置.
-
在边栏的“Security(安全性)”部分中,单击 Code security and analysis(代码安全性和分析)。
-
在“Code security and analysis(代码安全性和分析)”下,找到“GitHub Advanced Security”。
-
在“秘密扫描”下的“Push protection(推送保护)”下,单击 Enable all(启用所有)。
-
(可选)单击“自动为添加到 秘密扫描 的私有仓库启用”。
启用 秘密扫描 作为存储库的推送保护
-
在 您的 GitHub Enterprise Server 实例 上,导航到仓库的主页面。
-
在仓库名称下,单击 Settings(设置)。
-
在边栏的“Security(安全性)”部分中,单击 Code security and analysis(代码安全性和分析)。
-
在“Code security and analysis(代码安全性和分析)”下,找到“GitHub Advanced Security”。
-
在“秘密扫描”下的“Push protection(推送保护)”下,单击 Enable all(启用)。
从命令行使用 秘密扫描 作为推送保护
当您尝试将受支持的密钥推送到启用了 秘密扫描 作为推送保护的存储库或组织时,GitHub 将阻止推送。 您可以从提交中删除机密,也可以按照提供的 URL 进行推送。
在命令行上一次最多会显示五个检测到的机密。 如果已在存储库中检测到特定机密,并且警报已存在,GitHub 不会阻止该机密。
如果需要从正在推送的分支上的最新提交(即 HEAD
)以及包含该机密的任何早期提交中删除机密,您可以从 HEAD
中删除机密,然后在引入提交和已删除机密的 HEAD
的第一个版本之间压缩提交。
注意:
- 如果您的 git 配置支持推送到多个分支,而不仅仅是到默认分支,则您的推送可能会由于推送了其他和意外的引用而被阻止。 更多信息请参阅 Git 文档中的
push.default
选项。 - 如果在推送时 秘密扫描 超时,GitHub 仍将在推送后运行扫描。
允许推送被阻止的机密
如果 GitHub 阻止了您认为可以安全推送的机密,则可以允许该机密并说明应允许该机密的原因。
如果确认某个机密是真实的,并且打算稍后修复它,则应尽快修复。 例如,您可以撤销密钥,并从存储库的提交历史记录中删除密钥。 更多信息请参阅“从仓库中删除敏感数据”。
当您允许推送密钥时,将在“Security(安全)”选项卡中创建警报。 GitHub 将关闭警报,如果指定机密为误报或仅在测试中使用,则不会发送通知。 如果指定密钥是真实的,并且稍后将修复它,GitHub 使安全警报保持打开状态,并向提交的作者以及存储库管理员发送通知。 更多信息请参阅“管理来自密码扫描的警报”。
- 访问 GitHub 在推送被阻止时返回的 URL。
- 选择最准确描述为什么您应该能够推送密钥的选项。
- 如果机密仅在测试中使用,并且不构成威胁,请单击 It's used in tests(它在测试中使用)。
- 如果检测到的字符串不是机密,请单击 It's a false positive(这是误报)。
- 如果密钥是真实的,但您打算稍后修复它,请单击 I'll fix it later(稍后修复)。
- 单击 Allow me to push this secret(允许我推送此机密)。
- 在三小时内重新尝试在命令行上推送。 如果您在三小时内没有推送,则需要重复此过程。