Allstar es una aplicación de GitHub que monitorea continuamente las organizaciones o repositorios de GitHub para verificar el cumplimiento de las mejores prácticas de seguridad. Si Allstar detecta una violación de la política de seguridad, crea un problema para alertar al propietario del repositorio o de la organización. Para algunas políticas de seguridad, Allstar también puede cambiar automáticamente la configuración del proyecto que causó la infracción, volviéndola al estado esperado.
El objetivo de Allstar es brindarle un control preciso sobre los archivos y configuraciones que afectan la seguridad de sus proyectos. Puede elegir qué políticas de seguridad monitorear tanto a nivel de organización como de repositorio, y cómo manejar las violaciones de políticas. También puedes desarrollar o aportar nuevas políticas.
Allstar se desarrolla como parte del proyecto OpenSSF Scorecard.
Si recibe problemas no deseados creados por Allstar, siga estas instrucciones para cancelar su suscripción.
Allstar es altamente configurable. Hay tres niveles principales de controles:
Estas configuraciones se realizan en el repositorio .allstar
de la organización.
Nivel de repositorio: los mantenedores de repositorios en una organización que utiliza Allstar pueden optar por incluir o no su repositorio en las aplicaciones a nivel de organización. Nota: estos controles a nivel de repositorio solo funcionan cuando se permite la "anulación de repositorio" en la configuración a nivel de organización. Estas configuraciones se realizan en el directorio .allstar
del repositorio.
Nivel de política: los administradores o mantenedores pueden elegir qué políticas se habilitan en repositorios específicos y qué acciones toma Allstar cuando se viola una política. Estas configuraciones se realizan en un archivo yaml de política en el repositorio .allstar
de la organización (administradores) o en el directorio .allstar
del repositorio (mantenedores).
Antes de instalar Allstar a nivel de organización, debe decidir aproximadamente en cuántos repositorios desea que se ejecute Allstar. Esto le ayudará a elegir entre las estrategias de participación y exclusión.
La estrategia Opt In le permite agregar manualmente los repositorios en los que desea que se ejecute Allstar. Si no especifica ningún repositorio, Allstar no se ejecutará a pesar de estar instalado. Elija la estrategia Optar por participar si desea aplicar políticas solo en una pequeña cantidad de sus repositorios totales, o si desea probar Allstar en un solo repositorio antes de habilitarlo en más. Desde la versión v4.3, se admiten globs para agregar fácilmente varios repositorios con un nombre similar.
La estrategia de exclusión voluntaria (recomendada) habilita Allstar en todos los repositorios y le permite seleccionar manualmente los repositorios para optar por no participar en las aplicaciones de Allstar. También puede optar por excluirse de todos los repositorios públicos o de todos los repositorios privados. Elija esta opción si desea ejecutar Allstar en todos los repositorios de una organización, o desea excluir solo una pequeña cantidad de repositorios o un tipo específico (es decir, público o privado) de repositorio. Desde la versión v4.3, se admiten globs para agregar fácilmente varios repositorios con un nombre similar.
Optar por no participar (recomendado) optOutStrategy = verdadero | Optar por optOutStrategy = falso | |
---|---|---|
Comportamiento predeterminado | Todos los repositorios están habilitados | No hay repositorios habilitados |
Agregar repositorios manualmente | Agregar repositorios manualmente deshabilita Allstar en esos repositorios | Agregar repositorios manualmente habilita Allstar en esos repositorios |
Configuraciones adicionales | optOutRepos: Allstar se desactivará en los repositorios enumerados optOutPrivateRepos: si es verdadero, Allstar se desactivará en todos los repositorios privados optOutPublicRepos: si es verdadero, Allstar se desactivará en todos los repositorios públicos (optInRepos: esta configuración se ignorará) | optInRepos: Allstar se habilitará en los repositorios enumerados (optOutRepos: esta configuración se ignorará) |
Anulación de repositorio | Si es verdadero: los repositorios pueden optar por no participar en las aplicaciones Allstar de su organización utilizando la configuración en su propio archivo de repositorio. Se ignoran las configuraciones de participación voluntaria a nivel de organización que se aplican a ese repositorio. Si es falso: los repositorios no pueden optar por no participar en las aplicaciones de Allstar según lo configurado a nivel de organización. | Si es verdadero: los repositorios pueden optar por las aplicaciones Allstar de su organización incluso si no están configurados para el repositorio a nivel de organización. Se ignoran las configuraciones de exclusión voluntaria a nivel de organización que se aplican a ese repositorio. Si es falso: los repositorios no pueden optar por las implementaciones de Allstar si no están configurados a nivel de organización. |
Tanto la opción de Inicio rápido como la de Instalación manual implican la instalación de la aplicación Allstar. Puede revisar los permisos solicitados. La aplicación solicita acceso de lectura a la mayoría de las configuraciones y contenidos de archivos para detectar el cumplimiento de la seguridad. Solicita acceso de escritura a los problemas y verifica para poder crear problemas y permitir la acción block
.
Esta opción de instalación permitirá a Allstar utilizar la estrategia de exclusión voluntaria en todos los repositorios de su organización. Se habilitarán todas las políticas actuales y Allstar le alertará sobre infracciones de políticas presentando un problema. Esta es la forma más rápida y sencilla de comenzar a usar Allstar, y aún puedes cambiar cualquier configuración más adelante.
Esfuerzo: muy fácil
Pasos:
.allstar
¡Eso es todo! Todas las políticas actuales de Allstar ahora están habilitadas en todos sus repositorios. Allstar creará un problema si se viola una política.
Para cambiar cualquier configuración, consulte las instrucciones de instalación manual.
Esta opción de instalación lo guiará a través de la creación de archivos de configuración de acuerdo con la estrategia de participación o exclusión. Esta opción proporciona un control más granular sobre las configuraciones desde el principio.
Esfuerzo: moderado
Pasos:
Cada política se puede configurar con una acción que Allstar tomará cuando detecte que un repositorio no cumple.
log
: esta es la acción predeterminada y, en realidad, se lleva a cabo para todas las acciones. Se registran todos los resultados y detalles de la ejecución de políticas. Actualmente, los registros solo son visibles para el operador de la aplicación; los planes para exponerlos están en discusión.issue
: esta acción crea un problema de GitHub. Solo se crea un problema por política y el texto describe los detalles de la infracción de la política. Si el problema ya está abierto, se hace ping con un comentario cada 24 horas sin actualizaciones (actualmente no es configurable por el usuario). Si el resultado de la política cambia, se dejará un nuevo comentario sobre el tema y se vinculará en el cuerpo del tema. Una vez que se solucione la infracción, Allstar cerrará el problema automáticamente en un plazo de 5 a 10 minutos.fix
: esta acción es específica de la política. La política realizará cambios en la configuración de GitHub para corregir la infracción de la política. No todas las políticas podrán respaldar esto (ver más abajo).Acciones propuestas, pero aún no implementadas. Las definiciones se agregarán en el futuro.
block
: Allstar puede establecer una verificación de estado de GitHub y bloquear cualquier PR en el repositorio para que no se fusione si la verificación falla.email
: Allstar enviaría un correo electrónico a los administradores del repositorio.rpc
: Allstar enviaría un rpc a algún sistema específico de la organización.Hay dos opciones disponibles para configurar la acción del problema:
issueLabel
está disponible a nivel de organización y repositorio. Configurarlo anulará la etiqueta allstar
predeterminada utilizada por Allstar para identificar sus problemas.
issueRepo
está disponible a nivel de organización. Configurarlo obligará a que todos los problemas creados en la organización se creen en el repositorio especificado.
De manera similar a la configuración de habilitación de la aplicación Allstar, todas las políticas se habilitan y configuran con un archivo yaml en el repositorio .allstar
de la organización o en el directorio .allstar
del repositorio. Al igual que con la aplicación, las políticas se aceptan de forma predeterminada y la acción log
predeterminada no producirá resultados visibles. Una forma sencilla de habilitar todas las políticas es crear un archivo yaml para cada política con el contenido:
optConfig:
optOutStrategy: true
action: issue
Los detalles de cómo funciona la acción fix
para cada política se detallan a continuación. Si se omite a continuación, la acción fix
no es aplicable.
El archivo de configuración de esta política se denomina branch_protection.yaml
y las definiciones de configuración se encuentran aquí.
La política de protección de sucursales verifica que la configuración de protección de sucursales de GitHub esté configurada correctamente de acuerdo con la configuración especificada. El texto del problema describirá qué configuración es incorrecta. Consulte la documentación de GitHub para corregir la configuración.
La acción fix
cambiará la configuración de protección de sucursales para que cumpla con la configuración de política especificada.
El archivo de configuración de esta política se denomina binary_artifacts.yaml
y las definiciones de configuración se encuentran aquí.
Esta política incorpora la verificación del cuadro de mando. Elimine el artefacto binario del repositorio para lograr el cumplimiento. Como los resultados del cuadro de mando pueden ser detallados, es posible que necesite ejecutar el cuadro de mando para ver toda la información detallada.
El archivo de configuración de esta política se denomina codeowners.yaml
y las definiciones de configuración se encuentran aquí.
Esta política verifica la presencia de un archivo CODEOWNERS
en sus repositorios.
El archivo de configuración de esta política se denomina outside.yaml
y las definiciones de configuración se encuentran aquí.
Esta política verifica si algún colaborador externo tiene acceso de administrador (predeterminado) o de inserción (opcional) al repositorio. Solo los miembros de la organización deben tener este acceso; de lo contrario, los miembros que no sean de confianza pueden cambiar la configuración del nivel de administrador y cometer código malicioso.
El archivo de configuración de esta política se denomina security.yaml
y las definiciones de configuración se encuentran aquí.
Esta política verifica que el repositorio tenga un archivo de política de seguridad en SECURITY.md
y que no esté vacío. La incidencia creada tendrá un enlace a la pestaña GitHub que le ayudará a comprometer una política de seguridad en su repositorio.
El archivo de configuración de esta política se llama dangerous_workflow.yaml
y las definiciones de configuración están aquí.
Esta política verifica los archivos de configuración del flujo de trabajo de GitHub Actions ( .github/workflows
) en busca de patrones que coincidan con un comportamiento peligroso conocido. Consulte la documentación de OpenSSF Scorecard para obtener más información sobre esta verificación.
El archivo de configuración de esta política se denomina scorecard.yaml
y las definiciones de configuración se encuentran aquí.
Esta política ejecuta cualquier verificación del cuadro de mando enumerada en la configuración checks
. Todas las comprobaciones realizadas deben tener una puntuación igual o superior al threshold
establecido. Consulte la documentación del OpenSSF Scorecard para obtener más información sobre cada verificación.
El archivo de configuración de esta política se denomina actions.yaml
y las definiciones de configuración se encuentran aquí.
Esta política verifica los archivos de configuración del flujo de trabajo de GitHub Actions ( .github/workflows
) (y las ejecuciones del flujo de trabajo en algunos casos) en cada repositorio para garantizar que estén en línea con las reglas (por ejemplo, requerir, denegar) definidas en la configuración a nivel de organización para el política.
El archivo de configuración de esta política se denomina admin.yaml
y las definiciones de configuración se encuentran aquí.
Esta política comprueba que, de forma predeterminada, todos los repositorios deben tener un usuario o grupo asignado como administrador. Le permite configurar opcionalmente si los usuarios pueden ser administradores (a diferencia de equipos).
Vea este repositorio como un ejemplo del uso de la configuración de Allstar. Como administrador de la organización, considere un archivo README.md con información sobre cómo se utiliza Allstar en su organización.
De forma predeterminada, se espera que los archivos de configuración a nivel de organización, como el archivo allstar.yaml
anterior, estén en un repositorio .allstar
. Si este repositorio no existe, entonces el directorio allstar
del repositorio .github
se utiliza como ubicación secundaria. Para aclarar, para allstar.yaml
:
Precedencia | Repositorio | Camino |
---|---|---|
Primario | .allstar | allstar.yaml |
Secundario | .github | allstar/allstar.yaml |
Esto también se aplica a los archivos de configuración a nivel de organización para las políticas individuales, como se describe a continuación.
Allstar también buscará configuraciones de políticas a nivel de repositorio en el repositorio .allstar
de la organización, en el directorio con el mismo nombre que el repositorio. Esta configuración se utiliza independientemente de si la "anulación de repositorio" está deshabilitada.
Por ejemplo, Allstar buscará la configuración de política para un repositorio determinado myapp
en el siguiente orden:
Repositorio | Camino | Condición |
---|---|---|
myapp | .allstar/branch_protection.yaml | Cuando se permite la "anulación de repositorio". |
.allstar | myapp/branch_protection.yaml | Todo el tiempo. |
.allstar | branch_protection.yaml | Todo el tiempo. |
.github | allstar/myapp/branch_protection.yaml | Si el repositorio .allstar no existe. |
.github | allstar/branch_protection.yaml | Si el repositorio .allstar no existe. |
Para los archivos de configuración de políticas y Allstar a nivel de organización, puede especificar el campo baseConfig
para especificar otro repositorio que contenga la configuración base de Allstar. Esto se explica mejor con un ejemplo.
Suponga que tiene varias organizaciones de GitHub, pero desea mantener una única configuración de Allstar. Su organización principal es "acme" y el repositorio acme/.allstar
contiene allstar.yaml
:
optConfig :
optOutStrategy : true
issueLabel : allstar-acme
issueFooter : Issue created by Acme security team.
También tienes una organización satélite de GitHub llamada "acme-sat". Desea reutilizar la configuración principal, pero aplicar algunos cambios además deshabilitando Allstar en ciertos repositorios. El repositorio acme-sat/.allstar
contiene allstar.yaml
:
baseConfig : acme/.allstar
optConfig :
optOutRepos :
- acmesat-one
- acmesat-two
Esto utilizará toda la configuración de acme/.allstar
como configuración base, pero luego aplicará cualquier cambio en el archivo actual además de la configuración base. El método que se aplica se describe como JSON Merge Patch. La baseConfig
debe ser un GitHub <org>/<repository>
.
Ver CONTRIBUCIÓN.md