Administración de secretos en GitHub
Los secretos son variables que se crean en un entorno de organización, repositorio o ambiente de repositorio. Los secretos están disponibles para su uso en flujos de trabajo de Acciones de GitHub. Acciones de GitHub solo puede leer un secreto si incluye explícitamente el secreto en un flujo de trabajo.
En el caso de los secretos almacenados en el nivel de organización, puede usar directivas de acceso para controlar qué repositorios pueden usar secretos de la organización. Los secretos de nivel de organización permiten compartir secretos entre varios repositorios. Esto reduce la necesidad de crear secretos duplicados. La actualización de un secreto de organización en una ubicación también garantiza que el cambio surte efecto en todos los flujos de trabajo del repositorio que usan ese secreto.
En el caso de los secretos almacenados a nivel de entorno, puede permitir que los revisores necesarios controlen el acceso a los secretos. Un trabajo de flujo de trabajo no puede acceder a secretos de entorno a menos que los aprobadores necesarios lo aprueben.
Nota
Puede configurar los flujos de trabajo para autenticarse directamente en Azure para acceder a los recursos.
Asignación de nombres a los secretos
Las reglas siguientes se aplican a los nombres secretos:
- Los nombres solo pueden contener caracteres alfanuméricos (
[a-z],[A-Z],[0-9]) o caracteres de subrayado (_). No están permitidos los espacios. - Los nombres no deben comenzar con el prefijo
GITHUB_. - Los nombres no deben comenzar con un número.
- Los nombres no distinguen mayúsculas de minúsculas.
- Los nombres deben ser únicos en el nivel en el que se crean.
Para ayudar a garantizar que GitHub redacte el secreto en los registros, evite el uso de datos estructurados como valores de secretos. Por ejemplo, evite crear secretos que contengan blobs json o de Git codificados.
Accediendo a tus secretos
Establezca el secreto como una variable de entrada o entorno en el archivo de flujo de trabajo para que esté disponible para una acción. Puede usar y leer secretos en un archivo de flujo de trabajo si tiene acceso para editar el archivo. Para obtener más información, visite Permisos de acceso en GitHub.
Los secretos de organización y repositorio se leen cuando se pone en cola una ejecución de flujo de trabajo y los secretos de entorno se leen cuando se inicia un trabajo que hace referencia al entorno. También puede administrar secretos mediante la API REST.
Limitación de permisos de credenciales
Se recomienda conceder los permisos mínimos posibles. Por ejemplo, en lugar de usar credenciales personales, use las claves de implementación o una cuenta de servicio. Considere la posibilidad de conceder permisos de solo lectura si es todo lo necesario y limitar el acceso tanto como sea posible.
Al generar un token de acceso personal (clásico), seleccione los ámbitos más mínimos necesarios. Al generar un token de acceso personal específico, seleccione los permisos mínimos y el acceso al repositorio necesarios.
Creación de secretos
Para crear secretos o variables en GitHub para un repositorio de cuentas personales, debe ser el propietario del repositorio. Para crear secretos o variables en GitHub para un repositorio de la organización, debe tener acceso admin. Por último, para crear secretos o variables para un repositorio de cuentas personales o un repositorio de la organización a través de la API REST, debe tener acceso de colaborador.
Los secretos se pueden crear mediante:
- Seleccione Configuración en la barra de navegación superior del repositorio.
- En la sección Seguridad del panel de navegación izquierdo, seleccione la lista desplegable Secretos y variables.
- Seleccione Acciones para acceder a la página Secretos y variables de acciones .
Uso de secretos en un flujo de trabajo
Para proporcionar una acción con un secreto como entrada o variable de entorno, puede usar el contexto de secrets para acceder a los secretos creados en el repositorio. En el código siguiente se muestra un ejemplo de acceso a secretos en un flujo de trabajo.
steps:
- name: Hello world action
with: # Set the secret as an input
super_secret: ${{ secrets.SuperSecret }}
env: # Or as an environment variable
super_secret: ${{ secrets.SuperSecret }}
Los secretos no pueden hacerse referencia directamente a ellos en condicionales if:. Considere establecer secretos como variables de entorno del trabajo y luego utilice esas variables para ejecutar los pasos del trabajo de manera condicional.
Si no se establece el valor de un secreto, el valor devuelto de una expresión que hace referencia al secreto (como ${{ secrets.SuperSecret }} en el ejemplo) es una cadena vacía.