Skip to main content

Blocking pull request merges that contain secrets

Prevent exposed secrets from reaching protected branches by requiring contributors to resolve secret scanning alerts before merging.

¿Quién puede utilizar esta característica?

Propietarios de la organización, administradores de seguridad y miembros de la organización con el rol de administrador, and enterprise owners

GitHub Secret Protection es un conjunto de características dentro de GitHub Advanced Security que está disponible para los siguientes usuarios:

  • Plan de usuarios de GitHub Team
  • Organizaciones empresariales en GitHub Enterprise Cloud y GitHub Enterprise Server

Nota:

The rule to require secret scanning alerts to be resolved before merging is in versión preliminar pública and subject to change.

The Require secret scanning alerts are resolved rule is available for rulesets that target branches in repositories. You can use the rule to block a pull request from merging when either of these conditions applies:

  • A secret scanning scan has not completed for the head commit of the pull request.
  • A commit in the pull request introduced an open secret scanning alert that matches a secret type selected in the ruleset.

The rule supports provider, custom, and generic patterns. It does not support AI-detected secrets.

Prerequisites

The repositories that you want to protect must have:

Creating a merge protection ruleset for a repository

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. Debajo del nombre del repositorio, haz clic en Settings. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la barra lateral izquierda, en "Código y automatización", haga clic en Conjuntos de reglas y, a continuación, haga clic en Conjuntos de reglas.

  4. Click New ruleset.

  5. Click New branch ruleset.

  6. En «Nombre del conjunto de reglas», escribe un nombre para el conjunto de reglas.

  7. Opcionalmente, para cambiar el estado de cumplimiento predeterminado, haz clic en Disabled y selecciona un estado de cumplimiento. Para definir ramas o etiquetas, en la sección "Ramas objetivo" o "Etiquetas objetivo", seleccione Agregar un objetivo y, a continuación, seleccione cómo desea incluir o excluir ramas o etiquetas. Puedes usar la sintaxis fnmatch para incluir o excluir ramas o etiquetas en función de un patrón. Para más información, consulta Uso de la sintaxis de fnmatch.

Puedes agregar varios criterios de selección de destino al mismo conjunto de reglas. Por ejemplo, podrías incluir la rama predeterminada, incluir cualquier rama que coincida con el patrón *feature* y, a continuación, excluir específicamente una rama que coincida con el patrón not-a-feature.

  1. Under "Branch protections", select Require secret scanning alerts are resolved.
  2. Under "Secret types", select one or more types of secrets that should block merging:
    • Provider patterns
    • Custom patterns
    • Generic patterns Para terminar de crear el conjunto de reglas, haga clic en Crear. Si el estado de cumplimiento del conjunto de reglas se establece en "Activo", el conjunto de reglas entra en vigor inmediatamente.

Puede ver información sobre el conjunto de reglas para ver cómo afectan las reglas a los colaboradores. Si el estado de cumplimiento se establece en "Evaluar", puede ver qué acciones habrían pasado o fallado si el conjunto de reglas estaba activo. Para más información sobre la información para conjuntos de reglas, consulta Administración de conjuntos de reglas de un repositorio.

For information about configuring bypass permissions and other ruleset settings, see Creación de conjuntos de reglas de un repositorio.

Creating a merge protection ruleset for repositories in an organization or enterprise

You can create this ruleset for repositories in your organization, or create it for an enterprise to apply merge protection consistently across repositories in multiple organizations.

Accessing organization ruleset settings

  1. En la esquina superior derecha de GitHub, haz clic en la foto del perfil y luego en Your organizations.

  2. Seleccione una organización haciendo clic en ella.

  3. Debajo del nombre de la organización, haz clic en Settings. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de las pestañas en el perfil de una organización. La pestaña "Configuración" se destaca en naranja oscuro.

  4. En la barra lateral, en "Código, planeamiento y automatización", Haga clic en Repositorio y, a continuación, haga clic en Conjuntos de reglas.

Accessing enterprise ruleset settings

  1. Vaya a su empresa. Por ejemplo, desde la página Empresas en GitHub.com.
  2. En la parte superior de la página, haga clic en Directivas.
  3. Under "Policies", click Code.

Configuring the ruleset

  1. Click New ruleset.

  2. Click New branch ruleset.

  3. En «Nombre del conjunto de reglas», escribe un nombre para el conjunto de reglas.

  4. Opcionalmente, para cambiar el estado de cumplimiento predeterminado, haz clic en Disabled y selecciona un estado de cumplimiento.

  5. If you are creating an enterprise-level ruleset, under "Target organizations", choose the organizations that the ruleset will apply to.

  6. Under "Target repositories", choose the repositories that the ruleset will apply to. Para definir ramas o etiquetas, en la sección "Ramas objetivo" o "Etiquetas objetivo", seleccione Agregar un objetivo y, a continuación, seleccione cómo desea incluir o excluir ramas o etiquetas. Puedes usar la sintaxis fnmatch para incluir o excluir ramas o etiquetas en función de un patrón. Para más información, consulta Uso de la sintaxis de fnmatch.

Puedes agregar varios criterios de selección de destino al mismo conjunto de reglas. Por ejemplo, podrías incluir la rama predeterminada, incluir cualquier rama que coincida con el patrón *feature* y, a continuación, excluir específicamente una rama que coincida con el patrón not-a-feature.

  1. Under "Branch protections", select Require secret scanning alerts are resolved.
  2. Under "Secret types", select one or more types of secrets that should block merging:
    • Provider patterns
    • Custom patterns
    • Generic patterns Para terminar de crear el conjunto de reglas, haga clic en Crear. Si el estado de cumplimiento del conjunto de reglas se establece en "Activo", el conjunto de reglas entra en vigor inmediatamente.

Puede ver información sobre el conjunto de reglas para ver cómo afectan las reglas a los colaboradores. Si el estado de cumplimiento se establece en "Evaluar", puede ver qué acciones habrían pasado o fallado si el conjunto de reglas estaba activo. Para más información sobre la información para conjuntos de reglas, consulta Administración de conjuntos de reglas de un repositorio.

For information about configuring bypass permissions and other ruleset settings, see Creación de conjuntos de reglas para repositorios de la organización and Imposición de la gobernanza del código en la empresa con conjuntos de reglas.

Unblocking a pull request

When this rule blocks a pull request because of open alerts, you must resolve each alert that matches the secret types selected in the ruleset. See Resolución de alertas del análisis de secretos.