Compartir por


Protección del entorno de desarrollador para Confianza cero

Este artículo le ayuda, como desarrollador, a proteger el entorno de desarrollo para que pueda implementar principios de confianza cero (comprobar explícitamente, usar el acceso con privilegios mínimos, asumir la vulneración). Incluye contenido de nuestro libro electrónico Protección de entornos de Enterprise DevOps y resalta los procedimientos recomendados para la seguridad de las ramas y las herramientas de confianza, las extensiones y las integraciones.

La rapidez del desarrollador se basa en su capacidad de trabajar de la manera que quiera y desde donde quiera para maximizar los resultados de negocio. Quiere máquinas eficaces y personalizables con acceso raíz o de administrador. Sin embargo, las demandas de los desarrolladores pueden ir en contra de las normativas de cumplimiento y la necesidad de auditar y controlar el acceso y almacenamiento en los entornos privados de los empleados.

Máquinas no administradas que se conectan a la red de la organización presentan un desafío para los equipos de seguridad, el departamento de compras y la junta de gobernanza. El mejor escenario de proporcionar a los desarrolladores entornos de empleados predeterminados y protegidos crea desdén en ambos lados. Cuando los empleados se conectan desde cualquier lugar, las redes de Wi-Fi vulnerables son una puerta abierta para el ciberataque. El robo y la pérdida de hardware son problemas importantes.

Las vulnerabilidades se extienden a las integraciones del entorno de desarrollo. Las herramientas de desarrollo que incluyen una amplia extensibilidad pueden tener integraciones sin mantenimiento en sus marketplaces. Las extensiones malintencionadas pueden poner en peligro las herramientas de desarrollo y provocar infracciones en toda la empresa.

En el diagrama siguiente, observe cómo el entorno de desarrollador se conecta al entorno de herramientas de DevOps para afectar a las ramas de Git. Amplía la superficie del entorno a través de la conexión a paquetes de código abierto y extensiones de aplicación. Las extensiones presentan vulnerabilidades tanto en las dependencias como en la aplicación de las extensiones.

En el diagrama se muestran los entornos de desarrollador y las amenazas de seguridad.

Proporcionar a los miembros del equipo de DevOps flexibilidad y control al tiempo que evita ataques malintencionados es un desafío fundamental para las oficinas de seguridad. DevOps puede controlar el entorno de desarrollador con un entorno de nube (consulte Inicio seguro para máquinas virtuales de Azure y GitHub Enterprise Cloud Docs) y proteger el entorno de desarrollador con contenedores (consulte la documentación de GitHub Codespaces).

Además, los desarrolladores pueden implementar las siguientes medidas de confianza cero para ayudar a proteger el entorno para desarrolladores:

  • Configurar privilegios mínimos.
  • Limite el acceso a quienes pueden cambiar y aprobar el código mediante la seguridad de la rama.
  • Adopte solo herramientas de confianza, extensiones e integraciones.

Procedimientos recomendados para privilegios mínimos

A menudo, los desarrolladores creen que pueden detectar malware, suplantación de identidad e infracciones en sus entornos. Las grandes superficies de amenaza en los entornos de desarrollo hacen que sea poco realista para los desarrolladores mantener un conocimiento ubicuo del sistema. Una organización pierde un tiempo de corrección precioso cuando detecta una infracción después de un ataque pone en peligro un entorno de desarrollador que tiene acceso de administrador a todos los sistemas.

Para corregir posibles oportunidades de acceso que provocan que los actores incorrectos tengan como destino el rol de desarrollador de software, tenga en cuenta los siguientes procedimientos recomendados de seguridad con privilegios mínimos de Confianza cero para las aplicaciones.

  • Implemente los privilegios mínimos y el acceso Just-In-Time para DevOps. Asegúrese de que los miembros del equipo mantienen solo el acceso mínimo a los entornos durante el menor tiempo necesario. Coloque directivas para cubrir los derechos de acceso de administrador en los dispositivos principales, las herramientas de DevOps, las canalizaciones de versión, los repositorios de código, los entornos, los almacenes secretos y las bases de datos. Para los equipos de DevOps, el requisito base es una conexión al almacén de identidades de la organización. Use la federación de identidades para la integración con entornos SaaS para evitar la duplicación de identidades en plataformas que no son de Microsoft y para reducir el riesgo de exposición.
  • No use tokens de acceso personal para el acceso al código fuente. Entre los procedimientos seguros para los equipos de DevOps se incluye el acceso a herramientas de DevOps basadas en SaaS, repositorios de código (mediante SSH, HTTPS o token de acceso personal). Para el acceso al entorno basado en SaaS, tiene instrucciones claras sobre cómo los principios de acceso dictan quién puede descargar (clonar) los repositorios de código de los sistemas y desde qué dispositivos (locales, en la nube y en el contenedor). Por ejemplo, OneDrive puede bloquear o limitar el acceso a dispositivos no administrados.
  • Normalice y sincronice las cuentas de usuario de Usuario administrado (EMU) de GitHub Enterprise con identidades corporativas. Con los usuarios administrados por la empresa, puede controlar las cuentas de usuario de los miembros de la empresa a través del proveedor de identidades (IdP). En el almacén de identidades de la organización, defina explícitamente nombres de usuario, nombres visibles y correos electrónicos de GitHub. A continuación, los usuarios identifican fácilmente a los colaboradores.
  • Para las tres formas en que un desarrollador puede conectarse a un entorno de SaaS (HTTPS con una identidad, un token de acceso personal, conectarse con la clave SSH), realizar conexiones con el almacén de identidades de la organización. En GitHub (excepto para las cuentas EMU de GitHub), tu identidad es siempre tu identidad pública. El acceso controlado a través del inicio de sesión único (SSO) requiere conexión con el almacén de identidades de la organización.
  • Use una entidad de certificación (CA) SSH para proporcionar certificados SSH firmados para que los miembros accedan de forma segura a los recursos con Git. Un certificado SSH es un mecanismo para que una clave SSH firme otra clave SSH. GitHub Enterprise Cloud admite certificados SSH para proporcionar a las organizaciones más control sobre cómo acceden los miembros a los repositorios. Los administradores pueden cargar su clave pública de la autoridad certificadora SSH y emitir certificados para la autenticación de Git por parte de los miembros. Los certificados solo pueden acceder a repositorios que pertenecen a la organización. Los administradores pueden requerir que los miembros usen certificados al acceder a sus repositorios.
  • Use un administrador de credenciales de Git para proteger el acceso al código. Las herramientas como Visual Studio (VS) tienen compatibilidad integrada con identidades. VS Code recurre a un administrador de credenciales de Git.

Procedimientos recomendados para la seguridad de las ramas

Cuando los actores incorrectos obtienen acceso al repositorio de código, pueden estudiar la seguridad del sistema y modificar el código sin que los equipos se fíjense. Para evitar el acceso no autorizado al repositorio de código, implemente una estrategia de bifurcación para establecer el control sobre los cambios de código (vea el ejemplo que se muestra en el diagrama siguiente).

En el diagrama se muestra una estrategia de bifurcación de ejemplo que protege el repositorio principal.

Para corregir posibles oportunidades de acceso al repositorio, tenga en cuenta los siguientes procedimientos recomendados de seguridad de rama.

  • Proteja las ramas con revisiones de código para proporcionar a los equipos de DevOps control sobre los cambios de código y los avances de auditoría. La estrategia de bifurcación del diagrama anterior articula un flujo controlado de cambios que ofrece una cadena clara de comandos y planos técnicos para abordar los cambios de código. De los distintos enfoques de la estrategia de bifurcación, una comúnidad es que las ramas protegidas actúan como origen de nuevas versiones en producción.
  • Hacer que los administradores de repositorios de Git controle las autorizaciones de aprobación. El mecanismo de control de las estrategias de bifurcación se encuentra en el flujo de trabajo de aprobación. Las ramas protegidas requieren validaciones, revisiones y aprobaciones antes de aceptar cambios. Una opción es crear una regla de protección de rama para imponer flujos de trabajo. Por ejemplo, requerir una revisión de aprobación o una comprobación de estado superadas para todas las solicitudes de incorporación de cambios combinadas en la rama protegida. Las directivas de rama ayudan a los equipos a proteger las ramas importantes del desarrollo. Las directivas aplican los estándares de calidad de código y administración de cambios de su equipo.

Procedimientos recomendados para confiar en herramientas, extensiones e integraciones

La extensibilidad en entornos de desarrollo integrados (IDE) es tan productiva que se considera una característica obligatoria. Confía en la capacidad de aplicar y gestionar extensiones dentro del mercado de un IDE específico para diseñar su entorno de trabajo ideal.

Para corregir los IDE seguros, tenga en cuenta las siguientes herramientas, extensiones y procedimientos recomendados de integración.

  • Asegúrese de que solo integre herramientas de marketplace y publicadores de confianza. Por ejemplo, el marketplace de VS Code tiene miles de extensiones para facilitar la vida. Sin embargo, cuando los equipos adoptan nuevas herramientas o extensiones, el aspecto más importante puede ser comprobar la confiabilidad de un publicador.
  • Configure prácticas seguras para controlar el uso de la extensión para limitar la superficie expuesta a ataques de los entornos de desarrollador. La mayoría de las extensiones ide requieren aprobar determinados privilegios para funcionar, a menudo como un archivo con permisos de lectura en el sistema para analizar el código. Las extensiones requieren conexiones a entornos en la nube para funcionar (comunes en las herramientas de métricas). Aprobar funcionalidades adicionales sobre el IDE abre organizaciones a más amenazas.
  • En las máquinas de desarrollador, realice un seguimiento del número y la madurez de las extensiones usadas para comprender la posible superficie expuesta a ataques. Incorpore solo extensiones de Marketplace de VS Code de publicadores comprobados. Al instalar extensiones de aplicación con VS Code, compruebe periódicamente las extensiones que está ejecutando con la línea de comandos, código --list-extensions --show-versions. Tenga una buena comprensión de los componentes extensibles que está ejecutando en su entorno de desarrollador.

Pasos siguientes