Tengo un repositorio privado con una acción de GitHub que envía el código a un depósito de AWS S3 cuando hay un nuevo envío a la rama principal. Necesito un par de claves de acceso para poder enviar los contenidos y los almaceno como GitHub Secrets y hago referencia a ellos como variables de entorno en el script de compilación. Ahora me gustaría hacer público este repositorio en un futuro cercano, y me preguntaba si es algo seguro de hacer. El flujo de trabajo (.github/workflows/main.yml) en sí mismo para la acción es de hecho visible públicamente y lo que hace, pero solo tiene el comando único aws s3 cp myfile s3://my-bucket y absolutamente ninguna clave de acceso en el código en sí.
¿Es seguro usar GitHub Secrets para las acciones en un repositorio público? Soy el único propietario y el único contribuyente, esto no cambiará en el futuro. Es posible que cambie a CodePipeline con un webhook más tarde, pero primero quería probar GitHub Actions. Gracias.
Sí, los secretos son seguros para usar en repositorios públicos, pero hay algunas cosas con las que debe tener cuidado.
Todos los secretos se enmascaran automáticamente en los registros de compilación y se muestran como *** . Sin embargo, si durante su flujo de trabajo crea una credencial confidencial a partir de un secreto (por ejemplo, base64 una clave API), entonces debe enmascarar el nuevo valor para que no se filtre en el registro de compilación.
echo "::add-mask::My sensitive value"Si está muy preocupado por la seguridad de sus secretos, también le sugiero que no use acciones de GitHub de terceros directamente siguiendo las etiquetas o ramas de la acción. Bifurque la acción y use su bifurcación en los flujos de trabajo. Esto evitará la posibilidad de que alguien modifique una acción que está utilizando para capturar los secretos que utiliza la acción y enviarlos a algún servidor externo bajo su control.
Alternativamente, use la acción directamente y haga referencia al hash de confirmación para la versión a la que desea apuntar.
- uses: thirdparty/foo-action@172ec762f2ac8e050062398456fccd30444f8f30Utilice la autenticación de dos factores (2FA) en su cuenta. Si su cuenta está comprometida, es trivial que un atacante cree un flujo de trabajo y exporte sus secretos.
Los colaboradores del repositorio o cualquier usuario de la organización con acceso de write pueden crear un flujo de trabajo para exportar secretos. Así que administre el acceso a su repositorio con cuidado.
Puntos relacionados con las solicitudes de extracción:
pull_request del repositorio público activados por bifurcaciones no tienen acceso a los secretos, excepto por el GITHUB_TOKEN predeterminado . Además, GITHUB_TOKEN tiene acceso de solo lectura cuando un repositorio bifurcado desencadena un evento . Estas son restricciones intencionales aplicadas por GitHub Actions para evitar que un atacante cree una solicitud de extracción que contenga un flujo de trabajo que capture secretos o use secretos para realizar operaciones.pull_request_target no tiene restricciones secretas para eventos activados por bifurcaciones. De forma predeterminada, verifica la última confirmación en la rama base, pero es posible verificar la solicitud de extracción HEAD. La elección de hacer esto requiere extrema precaución. Pasar secretos a cualquier código que pueda modificarse en una solicitud de extracción podría permitir que un atacante escriba código para exportar secretos.Sí, parece que sí. Según Github , tiene políticas de control de acceso a nivel de organización para quién puede acceder a sus secretos.
Para los secretos almacenados a nivel de organización, puede usar políticas de acceso para controlar qué repositorios pueden usar secretos de organización. Los secretos a nivel de organización le permiten compartir secretos entre varios repositorios, lo que reduce la necesidad de crear secretos duplicados. Actualizar un secreto de organización en una ubicación también garantiza que el cambio surta efecto en todos los flujos de trabajo del repositorio que usan ese secreto.
Que el repositorio sea público o privado no afecta esto, y eso tiene sentido. Los proyectos públicos también necesitan secretos.