Skip to main content
Publicamos actualizaciones para la documentación con frecuencia y es posible que aún se esté traduciendo esta página. Para obtener la información más reciente, consulta la documentación en inglés.

Seguridad en GitHub Codespaces

Información general sobre la arquitectura de seguridad de GitHub Codespaces, con instrucciones para ayudarte a mantener la seguridad y minimizar el riesgo de ataque.

Resumen de la seguridad de un codespace

GitHub Codespaces está diseñado con seguridad reforzada de forma predeterminada. Como consecuencia, necesitarás garantizar que tus prácticas de desarrollo de software no arriesguen el reducir la postura de seguridad de tu codespace.

En esta guía se describe la forma en la que GitHub Codespaces mantiene seguro el entorno de desarrollo y se proporcionan algunos de los procedimientos recomendados que ayudarán a mantener tu seguridad mientras trabajas. Como con cualquier herramienta de desarrollo, recuerda que solo debes intentar abrir y trabajar en repositorios que conoces y confías.

Aislamiento de entorno

GitHub Codespaces se diseñó para mantener los codespaces separados unos de otros, cada uno con su propia máquina virtual y red.

Máquinas virtuales aisladas

Cada codespace se hospeda en su máquina virtual (MV) recién creada. Dos codespaces jamás podrán ubicase en la misma MV.

Cada vez que reinicias un codespace, este se lanza en una MV nueva con las actualizaciones más recientes de seguridad disponibles.

Conexiones aisladas

Cada codespace tiene su propia red virtual aislada. Utilizamos cortafuegos para bloquear las conexiones entrantes de la internet y para prevenir que los codespaces se comuniquen entre sí en redes internas. Predeterminadamente, se permite que los codespaces hagan conexiones salientes a la internet.

Authentication

Puedes conectarte a un codespace mediante un explorador web o desde Visual Studio Code. Si te conectas desde VS Code, se te pedirá que te autentiques con GitHub Enterprise Cloud.

Cada vez que se cree o reinicie un codespace, se le asignará un token de GitHub nuevo con un periodo de vencimiento automático. Este periodo te permite trabajar en el codespace sin necesitar volver a autenticarte durante un día de trabajo habitual, pero reduce la oportunidad de que dejes la conexión abierta cuando dejas de utilizar el codespace.

El alcance del token variará dependiendo del tipo de acceso que tengas en el repositorio en donde se creó el codespace:

  • Si tiene acceso de escritura al repositorio: el token tendrá como ámbito el acceso de lectura y escritura al repositorio.
  • Si solo tiene acceso de lectura al repositorio: el token solo permitirá que el código se clone desde el repositorio de origen. Si realizas una confirmación en el espacio de código, GitHub Codespaces crea automáticamente una bifurcación del repositorio o vincula el espacio de código a una bifurcación existente si ya tienes una para el repositorio ascendente y el token se actualiza para tener acceso de lectura y escritura a la bifurcación. Para más información, vea "Uso del control de código fuente en el codespace".
  • Si has autorizado el espacio de código para acceder a otros repositorios: el token tendrá como ámbito el acceso de lectura o lectura y escritura al repositorio de origen y a cualquier otro repositorio al que hayas autorizado el acceso. Para obtener más información, consulta "Administración del acceso a otros repositorios del codespace".

Conexiones de los codespaces

Puedes conectarte a tu codespace utilizando el túnel cifrado de TLS que proporciona el servicio GitHub Codespaces. Solo el creador de un codespace puede conectarse a este. Las conexiones se autentican con GitHub Enterprise Cloud.

Si necesitas permitir el acceso externo a los servicios que se ejecutan en un codespace, puedes habilitar el reenvío de puertos para acceso público o privado.

Reenvío de puertos

Si necesitas conectarte a un servicio (tal como un servidor web de desarrollo) que se ejecute en tu codespace, puedes configurar el reenvío de puertos para hacer que el servicio esté disponible en la internet.

Los propietarios de la organización pueden restringir la capacidad de hacer que los puertos de reenvío estén disponibles públicamente o dentro de la organización. Para más información, vea "Restricción de la visibilidad de los puertos reenviados".

Puertos reenviados de forma privada: se puede acceder a ellos a través de Internet, pero solo puede hacerlo el creador del codespace después de autenticarse en GitHub Enterprise Cloud.

Puertos reenviados públicamente dentro de la organización: se puede acceder a ellos a través de Internet, pero solo pueden hacerlo los miembros de la misma organización que el codespace después de autenticarse en GitHub Enterprise Cloud.

Puertos reenviados de forma pública: cualquier persona puede acceder a ellos en Internet. No se necesita autenticación para acceder a los puertos públicos reenviados.

Todos los puertos reenviados son privados predeterminadamente, lo cual significa que necesitarás autenticarte antes de poder acceder al puerto. El acceso a los puertos privados reenviados de un codespace se controla mediante cookies de autenticación con un periodo de vencimiento de 3 horas. Cuando la cookie venza, necesitarás volver a autenticarte.

Un puerto público renviado se revertirá automáticamente a privado cuando elimines y vuelvas a agregar dicho puerto o si reinicias el codespace.

Puedes utilizar el panel de "Puertos" para configurar uno de ellos para su acceso público o privado y puedes detener el reenvío de puertos cuando ya no sea necesario. Para más información, vea "Reenvío de puertos en el codespace".

Buenas prácticas de seguridad para tus codespaces

Los codespaces se diseñan para estar fortalecidos en seguridad predeterminadamente. Para ayudar a mantener esta postura, te recomendamos que sigas las buenas prácticas de seguridad durante tus procedimientos de desarrollo:

  • Como con cualquier herramienta de desarrollo, recuerda que solo debes intentar abrir y trabajar en repositorios que conoces y confías.
  • Antes de agregar cualquier dependencia nueva al codespace, revisa si se mantienen bien y si lanzan actualizaciones para arreglar cualquier vulnerabilidad de seguridad que se encuentre en su código.

Utilizar secretos para acceder a la información sensible

Utiliza siempre secretos cifrados cuando quieras utilizar información sensible (tal como tokens de acceso) en un codespace. Puedes acceder a tus secretos como variables de ambiente en el codespace, incluso desde la terminal. Por ejemplo, puede iniciar un terminal en el codespace y usar echo $SECRET_NAME para ver el valor de un secreto.

Los valores secretos se copian en variables de entorno cada vez que se reanuda o se crea el codespace y también se sincronizan cuando cambian.

Los secretos no se copian en el entorno si no tienes acceso de escritura al repositorio del codespace.

Para obtener más información sobre los secretos, consulta:

Trabajar con las contribuciones y repositorios de otros

Cuando creas un codespace desde una rama de solicitud de cambios desde una bifurcación, el token en el codespace variará dependiendo de si el repositorio es público o privado:

  • En el caso de un repositorio privado, el codespace obtiene acceso tanto a la bifurcación como al padre.
  • En el caso de un repositorio público, el codespace solo tendrá acceso a la bifurcación y a abrir solicitudes de cambios en el padre.

También te protegemos aún más en estos escenarios, ya que no insertamos ninguno de los secretos de codespace en el entorno.

Buenas prácticas adicionales

Existen algunos procedimientos recomendados y riesgos adicionales de los que debes ser consciente cuando uses GitHub Codespaces.

Entender el archivo de devcontainer.json de un repositorio

Al crear un codespace, si se encuentra un archivo devcontainer.json para el repositorio, se analiza y se usa para configurar el codespace. El archivo postCreateCommand contiene características eficaces, por ejemplo, permite instalar extensiones de terceros y ejecutar código arbitrario a través de una propiedad devcontainer.json.

Para obtener más información, consulte "Introducción a los contenedores de desarrollo".

Otorgar acceso a través de características

Ciertas características de desarrollo pueden agregar riesgos a tu ambiente potencialmente. Por ejemplo, el firmar confirmaciones, inyectar secretos en las variables de ambiente, tener acceso autenticado al registro y acceder a los paquetes pueden representar problemas potenciales de seguridad. Te recomendamos que solo otorgues acceso a aquellos que lo necesiten y que adoptes una política de ser tan restrictivo como sea posible.

Uso de extensiones

Cualquier extensión adicional de VS Code que hayas instalado puede introducir más riesgos potencialmente. Para ayudar a mitigar este riesgo, asegúrate de que solo instales extensiones confiables y de que siempre se mantengan actualizadas.

Uso de la Sincronización de la configuración

La Sincronización de la configuración de VS Code puede permitir que el contenido potencialmente malintencionado se transfiera entre dispositivos. Si vas a crear un espacio de código para un repositorio en cuyo contenido no confías, debes abrir el espacio de código en el explorador y dejar la Sincronización de la configuración deshabilitada.