Skip to main content
Skip to content

Configuración de directivas de licencia de código abierto

Cree y aplique directivas de licencias de código abierto para controlar qué licencias pueden usar sus dependencias.

¿Quién puede utilizar esta característica?

Organizations owned by a GitHub Enterprise account with GitHub Code Security enabled

Prerrequisitos

Antes de configurar las directivas de licencia, asegúrese de que:

  • Está usando GitHub Enterprise Cloud (incluido GHEC con residencia de datos), y su organización tiene GitHub Code Security habilitado en los repositorios en los que quiere usar el cumplimiento de licencias.
  • Tiene acceso para administrar conjuntos de reglas y directivas empresariales.
  • El gráfico de dependencias está habilitado para los repositorios que desea evaluar.

Acerca del cumplimiento de licencias

El cumplimiento de licencias de código abierto permite definir una directiva que especifica qué licencias pueden usar las dependencias.

Cuando la directiva se aplica con conjuntos de reglas, GitHub evalúa las solicitudes de extracción que modifican los manifiestos de paquetes, comprueba las dependencias directas y transitivas, y compara las licencias detectadas con la directiva. Las solicitudes de incorporación de cambios con dependencias no conformes permanecen bloqueadas hasta que se resuelvan las infracciones.

Normalmente, las infracciones se resuelven mediante:

  • Actualizar la pull request para usar dependencias conformes
  • Aprobación de una excepción para un paquete
  • Actualización de la directiva para permitir una licencia cuando corresponda

Configurar el cumplimiento de licencias

Creación de una directiva de licencia

  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. En la barra lateral, haga clic en Cumplimiento de licencias.
  4. Haga clic en Directiva predeterminada.
  5. En la página Editar directiva de licencia , haga clic en Agregar licencias y elija Seleccionar en la lista.
  6. En el selector de licencias, seleccione las licencias que desea permitir. Las licencias de esta lista se clasifican en función de su nivel de riesgo general para su uso en entornos corporativos, pero esto es meramente informativo y no constituye asesoramiento legal. Consulte siempre con el equipo legal de su organización para obtener instrucciones sobre directivas.
  7. Guarde los cambios.

Como alternativa, si tiene una directiva de licencia existente de otra herramienta, puede importarla como una lista de expresiones SPDX.

  1. En la página Editar directiva de licencia , haga clic en Agregar licencias y elija Entrada manual.
  2. Escriba uno o varios identificadores de licencia de SPDX, cada uno en una nueva línea.
  3. Guarde los cambios.

Las licencias que añada forman la directiva base. Más adelante puede agregar excepciones de nivel de paquete al controlar alertas.

Configuración del acceso para gestores de licencias Enterprise Open-Source

  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 Personas.
  3. En la barra lateral izquierda, haga clic en Roles empresariales.
  4. Haga clic en Asignaciones de roles.
  5. Haga clic en Asignar rol.
  6. Seleccione la función Enterprise Open-Source License Manager.
  7. Elija un usuario o equipo al que asignar el rol.
  8. Haga clic en Asignar rol.

La asignación de este rol también inscribe a los revisores en las notificaciones de solicitudes de desestimación para que puedan responder con rapidez.

Opcionalmente, use propiedades personalizadas para controlar la implementación por repositorio.

Si desea un lanzamiento gradual, use una propiedad personalizada del repositorio para controlar si cada repositorio está inactivo, evaluar o activar el modo de cumplimiento.

  1. En GitHub, navega a la página principal de tu organización.

  2. 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.

  3. En la barra lateral, en "Código, planeamiento y automatización", Haga clic en Repositorio y, a continuación, en Propiedades personalizadas.

    Captura de pantalla de la página de configuración de una organización. En la barra lateral, hay un vínculo destacado en color naranja con la etiqueta «Propiedades personalizadas».

  4. Cree una propiedad personalizada de repositorio de selección única, por ejemplo open_source_license_compliance.

  5. Agregue valores para inactive, evaluatey active.

  6. Establezca el valor predeterminado en inactive.

  7. Decida quién puede cambiar el valor de la propiedad.

  8. Asigne valores de propiedad a repositorios en función de su fase de lanzamiento.

Aplicar políticas en solicitudes de incorporación de cambios con conjuntos de reglas

Se recomienda crear dos conjuntos de reglas, uno para el modo Evaluar y otro para el modo Activo . Si ha creado propiedades personalizadas para controlar el lanzamiento, puede tener como destino esas propiedades aquí.

  1. Vaya a la página de conjuntos de reglas del ámbito en el que desea aplicar la directiva.

  2. Cree un conjunto de reglas de rama.

  3. En el nombre del conjunto de reglas, establezca Estado de cumplimiento:

    • En el primer conjunto de reglas, seleccione Evaluar.
    • En el segundo conjunto de reglas, seleccione Activo.
  4. Elija cómo dirigirse a los repositorios:

    • Si usa propiedades personalizadas, use open_source_license_compliance para seleccionar el destino:
      • Para el conjunto de reglas en modo de evaluación, seleccione los repositorios de destino en los que el valor de la propiedad sea evaluate.
      • Para el conjunto de reglas en modo activo, diríjase a los repositorios de destino donde el valor de la propiedad sea active.
    • Si no usa propiedades personalizadas, diríjase a los repositorios mediante un patrón de repositorio o una selección explícita de repositorios.
  5. Activar Exigir resultados de cumplimiento de licencias antes de fusionar.

  6. Guarde los cambios.

Para obtener más información sobre los conjuntos de reglas, consulte Acerca de los conjuntos de reglas y Creación de conjuntos de reglas para repositorios de la organización.

Aplicación de directivas de prueba

  1. En un repositorio de destino, abra una solicitud de incorporación de cambios que cambie los manifiestos de dependencia.
  2. Confirme que las anotaciones de la pull request muestran los resultados de conformidad de licencias.
  3. Si una dependencia infringe la directiva, revise la alerta generada y solicite el descarte si se necesita una excepción.

Si el conjunto de reglas está en modo Activo , la solicitud de incorporación de cambios permanece bloqueada hasta que se resuelvan todas las infracciones de la directiva de licencia.

Gestión de solicitudes de cumplimiento de licencias y directivas

Revisión y control de solicitudes de excepciones

  1. Como administrador de licencias de código abierto de empresa, abra la lista de solicitudes de alertas de licencia pendientes en las vistas de seguridad de la empresa.
  2. Revise cada solicitud y decida si desea denegarla o aprobarla.
  3. Si aprueba, elija si la excepción debe aplicarse a un paquete, una licencia o un patrón de paquete.
  4. Elija si desea aplicar la excepción en el ámbito del repositorio o en el ámbito de empresa.
  5. Guarde la excepción.

Una vez aprobada una solicitud, la alerta se cierra y se desbloquea la solicitud de incorporación de cambios, siempre que no se producen otras comprobaciones necesarias.

Revisión de una directiva efectiva para un repositorio

  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, en "Seguridad", haga clic en Directiva de licencia.

  4. Revise la directiva combinada y el conjunto de excepciones en vigor para ese repositorio.

  5. Actualice la directiva de nivel empresarial o de nivel de repositorio según sea necesario.

Las entradas de paquete y licencia establecidas en el nivel empresarial no se podrán editar en la directiva de repositorio. Los elementos marcados con indican entradas de nivel de repositorio que se pueden eliminar.

Eventos de auditoría

Los cambios en la directiva de licencia emiten eventos al registro de auditoría. Estos eventos son útiles para revisar el historial de cambios o para alimentar sistemas externos con fines de cumplimiento. Los eventos de registro se clasifican como Administración de directivas, con un prefijo de license_compliance_policy. Tendrán un tipo create de acción o modify. Para obtener más información sobre el contenido de los eventos de registro de auditoría, consulte Eventos de registro de auditoría para tu organización.

API de cumplimiento de licencias

Hay varios puntos de conexión de API REST para administrar la directiva de cumplimiento de licencias. Puede usar la API para realizar copias de seguridad y restaurar la directiva de empresa mediante programación y consultar si una lista de paquetes crearía infracciones de directiva si se incluyeban en las dependencias de un repositorio. Además, las operaciones en las solicitudes de cierre de cumplimiento de licencias pueden generar eventos de webhook cuando se crea una solicitud, recibe una respuesta o se cancela.

Para más información sobre la API de administración de directivas empresariales, consulte Puntos de conexión de la API de REST para el gráfico de dependencias. Para más información sobre la API package-check, consulte Puntos de conexión de la API de REST para repositorios. Para obtener más información sobre webhooks, consulte Eventos y cargas de webhook.

Lectura adicional