Skip to main content

Protecting pushes with secret scanning

You can use escaneo de secretos to prevent supported secrets from being pushed into your organization or repository by enabling push protection.

El Escaneo de secretos para la seguridad avanzada se encuentra disponible para los repositorios que pertenecen a organizaciones de GitHub Enterprise Cloud si tu empresa tiene una licencia de GitHub Advanced Security. Para obtener más información, consulta la sección "Productos de GitHub".

Note: Escaneo de secretos as a protection push is currently in beta and subject to change. Para solicitar acceso al lanzamiento beta, contacta a tu equipo de administración de cuenta.

About push protection for secrets

Up to now, >- escaneo de secretos para la seguridad avanzada checks for secrets after a push and alerts users to exposed secrets. When you enable push protection, escaneo de secretos also checks pushes for high-confidence secrets (those identified with a low false positive rate). Escaneo de secretos lists any secrets it detects so the author can review the secrets and remove them or, if needed, allow those secrets to be pushed.

Escaneo de secretos as a push protection currently scans repositories for secrets issued by the following service providers.

ProveedorSecreto compatibleTipo de secreto
Adafruit IOClave de IO de Adafruitadafruit_io_key
Alibaba CloudID de Clave de Acceso a la Nube de Alibabaalibaba_cloud_access_key_id
Alibaba CloudSecreto de Clave de Acceso a la Nube de Alibabaalibaba_cloud_access_key_secret
AmazonAmazon OAuth Client IDamazon_oauth_client_id
AmazonAmazon OAuth Client Secretamazon_oauth_client_secret
Amazon Web Services (AWS)ID de Clave de Acceso de AWS de Amazonaws_access_key_id
Amazon Web Services (AWS)Clave de Acceso Secreta de AWS de Amazonaws_secret_access_key
Amazon Web Services (AWS)Amazon AWS Session Tokenaws_session_token
Amazon Web Services (AWS)Amazon AWS Temporary Access Key IDaws_temporary_access_key_id
AsanaToken de Acceso Personal de Asanaasana_personal_access_token
AtlassianBitbucket Server Personal Access Tokenbitbucket_server_personal_access_token
AzureSecreto de aplicación de Azure Active Directoryazure_active_directory_application_secret
AzureAzure Cache for Redis Access Keyazure_cache_for_redis_access_key
AzureToken de Acceso Personal de Azure DevOpsazure_devops_personal_access_token
Checkout.comClave secreta de productión de Checkout.comcheckout_production_secret_key
ClojarsToken de Despliegue de Clojarsclojars_deploy_token
DatabricksToken de Acceso de Databricksdatabricks_access_token
DigitalOceanToken de Acceso Personal de DigitalOceandigitalocean_personal_access_token
DigitalOceanToken OAuth de DigitalOceandigitalocean_oauth_token
DigitalOceanToken de Actualización de DigitalOceandigitalocean_refresh_token
DigitalOceanToken de Sistema de DigitalOceandigitalocean_system_token
DiscordToken de Bot de Discorddiscord_bot_token
DopplerToken Personal de Dopplerdoppler_personal_token
DopplerToken de Servicio de Dopplerdoppler_service_token
DopplerToken de CLI de Dopplerdoppler_cli_token
DopplerToken de SCIM de Dopplerdoppler_scim_token
DopplerToken de auditoría de Dopplerdoppler_audit_token
DropboxToken de Acceso de Vida Corta de Dropboxdropbox_short_lived_access_token
DuffelDuffel Live Access Tokenduffel_live_access_token
EasyPostEasyPost Production API Keyeasypost_production_api_key
FlutterwaveFlutterwave Live API Secret Keyflutterwave_live_api_secret_key
FullstoryLlave de la API de FullStoryfullstory_api_key
GitHubToken de Acceso Personal de GitHubgithub_personal_access_token
GitHubToken de Acceso de OAuth para GitHubgithub_oauth_access_token
GitHubToken de Actualización de GitHubgithub_refresh_token
GitHubToken de Acceso a la Instalación de GitHub Appgithub_app_installation_access_token
GitHubClave Privada de SSH de GitHubgithub_ssh_private_key
GoogleGoogle Cloud Storage Access Key Secretgoogle_cloud_storage_access_key_secret
GoogleGoogle Cloud Storage Service Account Access Key IDgoogle_cloud_storage_service_account_access_key_id
GoogleGoogle Cloud Storage User Access Key IDgoogle_cloud_storage_user_access_key_id
GrafanaClave de la API de Grafanagrafana_api_key
HubspotClave de API de Hubspothubspot_api_key
IntercomToken de Acceso de Intercomintercom_access_token
JFrogToken de Acceso a la Plataforma de JFrogjfrog_platform_access_token JFrog
redirect.pizzaToken de la API de redirect.pizzaredirect_pizza_api_token Samsara

Enabling escaneo de secretos as a push protection

For you to use escaneo de secretos as a push protection, the organization or repository needs to have both GitHub Advanced Security and escaneo de secretos enabled. Para obtener más información, consulta las secciones "Administrar los ajustes de seguridad y análisis de tu organización", "Administrar los ajustes de seguridad y análisis de tu repositorio" y "Acerca de la GitHub Advanced Security".

Organization owners, security managers, and repository administrators can enable push protection for escaneo de secretos via the UI and API. Para obtener más información, consulta la sección "Repositorios" y expande la sección de "Propiedades del objeto security_and_analysis" en la documentación de la API de REST.

Enabling escaneo de secretos as a push protection for an organization

  1. En GitHub.com, navega hasta la página principal de la organización.
  2. Debajo del nombre de tu organización, da clic en Ajustes. Botón de configuración de organización
  1. En la sección de "Seguridad" de la barra lateral, haz clic en Análisis y seguridad de código.

  2. Debajo de "Seguridad y análisis de código", encuentra "GitHub Advanced Security".

  3. Under "Escaneo de secretos", under "Push protection", click Enable all. Screenshot showing how to enable push protection for escaneo de secretos for an organization

  4. Optionally, click "Automatically enable for private repositories added to escaneo de secretos."

Enabling escaneo de secretos as a push protection for a repository

  1. En GitHub.com, visita la página principal del repositorio.

  2. Debajo de tu nombre de repositorio, da clic en Configuración. Botón de configuración del repositorio

  3. En la sección de "Seguridad" de la barra lateral, haz clic en Análisis y seguridad de código.

  4. Debajo de "Seguridad y análisis de código", encuentra "GitHub Advanced Security".

  5. Under "Escaneo de secretos", under "Push protection", click Enable. Screenshot showing how to enable push protection for escaneo de secretos for a repository

Using escaneo de secretos as a push protection from the command line

When you attempt to push a supported secret to a repository or organization with escaneo de secretos as a push protection enabled, GitHub will block the push. You can remove the secret from your commit or follow a provided URL to allow the push.

Up to five detected secrets will be displayed at a time on the command line. Si ya se detectó un secreto en particular en el repositorio y la alerta ya existe, GitHub no lo bloqueará.

Screenshot showing that a push is blocked when a user attempts to push a secret to a repository

Si necesitas eliminar el secreto de tu última confirmación (es decir, HEAD) en la rama que se está subiendo y cualquier confirmación anterior que lo contenga, puedes eliminarlo de HEAD y luego combinar las confirmaciones que haya entre ellos cuando la confirmación se introdujo y la primera versión de HEAD para la cual se eliminó el secreto.

Notas:

  • If your git configuration supports pushes to multiple branches, and not only to the default branch, your push may be blocked due to additional and unintended refs being pushed. For more information, see the push.default options in the Git Docs.
  • If escaneo de secretos upon a push times out, GitHub will still run a scan after the push.

Allowing a blocked secret to be pushed

Si GitHub bloquea un secreto que piensas se puede subir con seguridad, puedes permitirlo y especificar la razón por la cual se debería de permitir.

Si confirmas que un secreto es real y que pretendes corregirlo después, debes intentar remediarlo tan pronto como sea posible. For example, you might revoke the secret and remove the secret from the repository's commit history. For more information, see "Removing sensitive data from a repository."

When you allow a secret to be pushed, an alert is created in the "Security" tab. GitHub closes the alert and doesn't send a notification if you specify that the secret is a false positive or used only in tests. If you specify that the secret is real and that you will fix it later, GitHub keeps the security alert open and sends notifications to the author of the commit, as well as to repository administrators. Para obtener más información, consulta la sección "Administrar alertas del escaneo de secretos."

  1. Visit the URL returned by GitHub when your push was blocked. Captura de pantalla que muestra un formulario con opciones para desbloquear la subida de un secreto
  2. Choose the option that best describes why you should be able to push the secret.
    • If the secret is only used in tests and poses no threat, click It's used in tests.
    • If the detected string is not a secret, click It's a false positive.
    • If the secret is real but you intend to fix it later, click I'll fix it later.
  3. Click Allow me to push this secret.
  4. Reattempt the push on the command line within three hours. If you have not pushed within three hours, you will need to repeat this process.

Using secret scanning as a push protection from the web UI

When you use the web UI to attempt to commit a supported secret to a repository or organization with secret scanning as a push protection enabled, GitHub will block the commit. You will see a banner at the top of the page with information about the secret's location, and the secret will also be underlined in the file so you can easily find it.

Screenshot showing commit in web ui blocked because of secret scanning push protection

GitHub will only display one detected secret at a time in the web UI. Si ya se detectó un secreto en particular en el repositorio y la alerta ya existe, GitHub no lo bloqueará.

You can remove the secret from the file using the web UI. Once you remove the secret, the banner at the top of the page will change and tell you that you can now commit your changes.

Screenshot showing commit in web ui allowed after secret fixed

Bypassing push protection for a secret

Si GitHub bloquea un secreto que piensas se puede subir con seguridad, puedes permitirlo y especificar la razón por la cual se debería de permitir. Si confirmas que un secreto es real y que pretendes corregirlo después, debes intentar remediarlo tan pronto como sea posible.

When you allow a secret to be pushed, an alert is created in the "Security" tab. GitHub closes the alert and doesn't send a notification if you specify that the secret is a false positive or used only in tests. If you specify that the secret is real and that you will fix it later, GitHub keeps the security alert open and sends notifications to the author of the commit, as well as to repository administrators. Para obtener más información, consulta la sección "Administrar alertas del escaneo de secretos."

Si confirmas que un secreto es real y que pretendes corregirlo después, debes intentar remediarlo tan pronto como sea posible.

  1. In the banner that appeared at the top of the page when GitHub blocked your commit, click Bypass protection.

  2. Choose the option that best describes why you should be able to push the secret.

    • If the secret is only used in tests and poses no threat, click It's used in tests.
    • If the detected string is not a secret, click It's a false positive.
    • If the secret is real but you intend to fix it later, click I'll fix it later.

    Captura de pantalla que muestra un formulario con opciones para desbloquear la subida de un secreto

  3. Click Allow secret.