如果项目与外部服务通信,您可能使用令牌或私钥进行身份验证。 令牌和私钥是服务提供商可以签发的典型密码。 如果将密码检入仓库,则对仓库具有读取权限的任何人都可以使用该密码以您的权限访问外部服务。 建议将密码存储在项目仓库外部专用的安全位置。
秘密扫描 将在 GitHub 仓库中存在的所有分支上扫描整个 Git 历史记录,以查找任何密钥。 服务提供商可与 GitHub 合作提供其用于扫描的密码格式。 更多信息请参阅“密码扫描合作伙伴计划”。
如果有人将使用已知模式的密码检入 GitHub 上的公共或私有仓库,则 秘密扫描 在该密码检入时可以捕获它,帮助您减小密码泄露的影响。 仓库管理员会收到包含密码的任何提交的通知, 然后他们可以快速查看仓库安全选项卡中所有检测到的密码。
关于公共仓库的 秘密扫描
秘密扫描 自动对公共仓库启用。 当您推送到公共仓库时,GitHub 会扫描提交的内容中是否有密码。 如果将私有仓库切换到公共仓库,GitHub 会扫描整个仓库中的密码。
当 秘密扫描 检测一组凭据时,我们会通知发布密码的服务提供商。 服务提供商会验证该凭据,然后决定是否应撤销密钥、颁发新密钥或直接与您联系,具体取决于与您或服务提供商相关的风险。 有关如何使用令牌颁发合作伙伴的概述,请参阅“密码扫描合作伙伴计划”。
GitHub 当前会扫描公共仓库,查找以下服务提供商发布的密码。
| 合作伙伴 | 支持的密钥 |
|---|---|
| Adafruit IO | Adafruit IO 密钥 |
| Adobe | Adobe 设备令牌 |
| Adobe | Adobe 服务令牌 |
| Adobe | Adobe 短暂访问令牌 |
| Adobe | Adobe JSON Web 令牌 |
| Alibaba Cloud | Alibaba 云端访问密钥 ID 和访问密钥对 |
| Amazon Web Services (AWS) | Amazon AWS 访问密钥 ID 和秘密访问密钥对 |
| Atlassian | Atlassian API 令牌 |
| Atlassian | Atlassian JSON Web 令牌 |
| Azure | Azure DevOps 个人访问令牌 |
| Azure | Azure SAS 令牌 |
| Azure | Azure 服务管理证书 |
| Azure | Azure SQL 连接字符串 |
| Azure | Azure 存储账户密钥 |
| Clojars | Clojars 部署令牌 |
| CloudBees CodeShip | CloudBees CodeShip 凭据 |
| Databricks | Databricks 访问令牌 |
| Datadog | Datadog API 密钥 |
| Discord | Discord 自动程序令牌 |
| Doppler | Doppler 个人令牌 |
| Doppler | Doppler 服务令牌 |
| Doppler | Doppler CLI 令牌 |
| Doppler | Doppler SCIM 令牌 |
| Dropbox | Dropbox 访问令牌 |
| Dropbox | Dropbox 短暂访问令牌 |
| Dynatrace | Dynatrace 访问令牌 |
| Dynatrace | Dynatrace 内部令牌 |
| Finicity | Finicity App 密钥 |
| Frame.io | Frame.io JSON Web 令牌 |
| Frame.io | Frame.io Developer 令牌 |
| GitHub | GitHub 个人访问令牌 |
| GitHub | GitHub OAuth 访问令牌 |
| GitHub | GitHub 刷新令牌 |
| GitHub | GitHub App 安装访问令牌 |
| GitHub | GitHub SSH 私钥 |
| GoCardless | GoCardless 实时访问令牌 |
| GoCardless | GoCardless Sandbox 访问令牌 |
| Google Cloud | Google API 密钥 |
| Google Cloud | Google Cloud 私钥 ID |
| Hashicorp Terraform | Terraform Cloud / Enterprise API 令牌 |
| Hubspot | Hubspot API 密钥 |
| Mailchimp | Mailchimp API 密钥 |
| Mailchimp | Mandril API 密钥 |
| Mailgun | Mailgun API 密钥 |
| MessageBird | MessageBird API 密钥 |
| npm | npm 访问令牌 |
| NuGet | NuGet API 密钥 |
| OpenAI | OpenAI API 密钥 |
| Palantir | Palantir JSON Web 令牌 |
| Plivo | Plivo 验证令牌 |
| Postman | Postman API 密钥 |
| Proctorio | Proctorio 消费者密钥 |
| Proctorio | Proctorio 链接密钥 |
| Proctorio | Proctorio 注册密钥 |
| Proctorio | Proctorio 密钥 |
| Pulumi | Pulumi 访问令牌 |
| PyPI | PyPI API 令牌 |
| RubyGems | RubyGems API 密钥 |
| Samsara | Samsara API 令牌 |
| Samsara | Samsara OAuth 访问令牌 |
| SendGrid | SendGrid API Key |
| Shopify | Shopify App 共享密钥 |
| Shopify | Shopify 访问令牌 |
| Shopify | Shopify 自定义应用访问令牌 |
| Shopify | Shopify 私人应用密码 |
| Slack | Slack API 令牌 |
| Slack | Slack 传入 web 挂钩 URL |
| Slack | Slack 工作流程 web 挂钩 URL |
| SSLMate | SSLMate API 密钥 |
| SSLMate | SSLMate 集群密钥 |
| Stripe | Stripe Live API 密钥 |
| Stripe | Stripe 测试 API 密钥 |
| Stripe | Stripe Live API 限制密钥 |
| Stripe | Stripe 测试 API 限制密钥 |
| Tencent Cloud | 腾讯云密钥 ID |
| Twilio | Twilio 帐户字符串标识符 |
| Twilio | Twilio API 密钥 |
| Valour | Valour 访问令牌 |
关于私有仓库的 秘密扫描
如果您是仓库管理员或组织所有者,您可以为组织拥有的私有仓库启用 秘密扫描。 您可以对您的所有仓库或您组织内的所有新仓库启用 秘密扫描。秘密扫描 不适用于用户拥有的私有仓库。更多信息请参阅“管理仓库的安全和分析设置”和“管理组织的安全和分析设置”。
您也可以定义只应用到您的仓库或组织的自定义 秘密扫描 模式。 更多信息请参阅“定义 秘密扫描 的自定义模式”。
将提交推送到启用了 秘密扫描 的私有仓库时,GitHub 会扫描提交的内容中是否有密码。
当 秘密扫描 在私有仓库中检测到密码时,GitHub 会生成警报。
-
GitHub 向仓库管理员和组织所有者发送电子邮件警报。
-
GitHub 向提交机密到仓库的贡献者发送电子邮件警报,其中包括指向相关 秘密扫描 警报的链接。 然后,提交作者可以在仓库中查看警报,然后解决警报。
-
GitHub 显示仓库中的警报。
有关查看和解析 秘密扫描 警报的详细信息,请参阅“管理来自 秘密扫描 的警报”。
仓库管理员和组织所有者可以授权用户和团队访问 秘密扫描 警报。 更多信息请参阅“管理仓库的安全和分析设置”。
要监控来自私有仓库或组织中的 秘密扫描 的结果,可以使用 秘密扫描 API。 有关 API 端点的更多信息,请参阅“秘密扫描”。
GitHub 目前扫描私有仓库,以检查由以下服务提供者颁发的密码。
| 合作伙伴 | 支持的密钥 | API slug |
|---|---|---|
| Adafruit IO | Adafruit IO Key | adafruit_io_key |
| Adobe | Adobe Device Token | adobe_device_token |
| Adobe | Adobe Service Token | adobe_service_token |
| Adobe | Adobe Short-Lived Access Token | adobe_short_lived_access_token |
| Adobe | Adobe JSON Web Token | adobe_jwt |
| Alibaba Cloud | Alibaba Cloud Access Key ID | alibaba_cloud_access_key_id |
| Alibaba Cloud | Alibaba Cloud Access Key Secret | alibaba_cloud_access_key_secret |
| Amazon Web Services (AWS) | Amazon AWS Access Key ID | aws_access_key_id |
| Amazon Web Services (AWS) | Amazon AWS Secret Access Key | aws_secret_access_key |
| Asana | Asana Personal Access Token | asana_personal_access_token |
| Atlassian | Atlassian API Token | atlassian_api_token |
| Atlassian | Atlassian JSON Web Token | atlassian_jwt |
| Atlassian | Bitbucket Server Personal Access Token | bitbucket_server_personal_access_token |
| Azure | Azure DevOps Personal Access Token | azure_devops_personal_access_token |
| Azure | Azure SAS Token | azure_sas_token |
| Azure | Azure Service Management Certificate | azure_management_certificate |
| Azure | Azure SQL Connection String | azure_sql_connection_string |
| Azure | Azure Storage Account Key | azure_storage_account_key |
| Clojars | Clojars Deploy Token | clojars_deploy_token |
| CloudBees CodeShip | CloudBees CodeShip Credential | codeship_credential |
| Databricks | Databricks Access Token | databricks_access_token |
| Discord | Discord Bot Token | discord_bot_token |
| Doppler | Doppler Personal Token | doppler_personal_token |
| Doppler | Doppler Service Token | doppler_service_token |
| Doppler | Doppler CLI Token | doppler_cli_token |
| Doppler | Doppler SCIM Token | doppler_scim_token |
| Dropbox | Dropbox Access Token | dropbox_access_token |
| Dropbox | Dropbox Short Lived Access Token | dropbox_short_lived_access_token |
| Dynatrace | Dynatrace Access Token | dynatrace_access_token |
| Dynatrace | Dynatrace Internal Token | dynatrace_internal_token |
| EasyPost | EasyPost Production API Key | easypost_production_api_key |
| EasyPost | EasyPost Test API Key | easypost_test_api_key |
| Facebook Access Token | facebook_access_token | |
| Fastly | Fastly API Token | fastly_api_token |
| Finicity | Finicity App Key | finicity_app_key |
| Frame.io | Frame.io JSON Web Token | frameio_jwt |
| Frame.io | Frame.io Developer Token | frameio_developer_token |
| GitHub | GitHub Personal Access Token | github_personal_access_token |
| GitHub | GitHub OAuth Access Token | github_oauth_access_token |
| GitHub | GitHub Refresh Token | github_refresh_token |
| GitHub | GitHub App Installation Access Token | github_app_installation_access_token |
| GitHub | GitHub SSH Private Key | github_ssh_private_key |
| GoCardless | GoCardless Live Access Token | gocardless_live_access_token |
| GoCardless | GoCardless Sandbox Access Token | gocardless_sandbox_access_token |
| Google Cloud | Google API Key | google_api_key |
| Google Cloud | Google Cloud Private Key ID | google_cloud_private_key_id |
| Grafana | Grafana API Key | grafana_api_key |
| Hashicorp Terraform | Terraform Cloud / Enterprise API Token | terraform_api_token |
| Hubspot | Hubspot API Key | hubspot_api_key |
| Intercom | Intercom Access Token | intercom_access_token |
| Lob | Lob Live API Key | lob_live_api_key |
| Lob | Lob Test API Key | lob_test_api_key |
| Mailchimp | Mailchimp API Key | mailchimp_api_key |
| Mailgun | Mailgun API Key | mailgun_api_key |
| MessageBird | MessageBird API Key | messagebird_api_key |
| npm | npm Access Token | npm_access_token |
| NuGet | NuGet API Key | nuget_api_key |
| Onfido | Onfido Live API Token | onfido_live_api_token |
| Onfido | Onfido Sandbox API Token | onfido_sandbox_api_token |
| OpenAI | OpenAI API Key | openai_api_key |
| Palantir | Palantir JSON Web Token | palantir_jwt |
| Postman | Postman API Key | postman_api_key |
| Proctorio | Proctorio Consumer Key | proctorio_consumer_key |
| Proctorio | Proctorio Linkage Key | proctorio_linkage_key |
| Proctorio | Proctorio Registration Key | proctorio_registration_key |
| Proctorio | Proctorio Secret Key | proctorio_secret_key |
| Pulumi | Pulumi Access Token | pulumi_access_token |
| PyPI | PyPI API Token | pypi_api_token |
| RubyGems | RubyGems API Key | rubygems_api_key |
| Samsara | Samsara API Token | samsara_api_token |
| Samsara | Samsara OAuth Access Token | samsara_oauth_access_token |
| SendGrid | SendGrid API Key | sendgrid_api_key |
| Shippo | Shippo Live API Token | shippo_live_api_token |
| Shippo | Shippo Test API Token | shippo_test_api_token |
| Shopify | Shopify App Shared Secret | shopify_app_shared_secret |
| Shopify | Shopify Access Token | shopify_access_token |
| Shopify | Shopify Custom App Access Token | shopify_custom_app_access_token |
| Shopify | Shopify Private App Password | shopify_private_app_password |
| Slack | Slack API Token | slack_api_token |
| Slack | Slack Incoming Webhook URL | slack_incoming_webhook_url |
| Slack | Slack Workflow Webhook URL | slack_workflow_webhook_url |
| SSLMate | SSLMate API Key | sslmate_api_key |
| SSLMate | SSLMate Cluster Secret | sslmate_cluster_secret |
| Stripe | Stripe API Key | stripe_api_key |
| Stripe | Stripe Live API Secret Key | stripe_live_secret_key |
| Stripe | Stripe Test API Secret Key | stripe_test_secret_key |
| Stripe | Stripe Live API Restricted Key | stripe_live_restricted_key |
| Stripe | Stripe Test API Restricted Key | stripe_test_restricted_key |
| Stripe | Stripe Webhook Signing Secret | stripe_webhook_signing_secret |
| Tableau | Tableau Personal Access Token | tableau_personal_access_token |
| Telegram | Telegram Bot Token | telegram_bot_token |
| Tencent Cloud | Tencent Cloud Secret ID | tencent_cloud_secret_id |
| Twilio | Twilio Account String Identifier | twilio_account_sid |
| Twilio | Twilio API Key | twilio_api_key |

