¿Cuál es la mejor práctica para proteger las bases de código por IP / Instance en AWS pero permitir el desarrollo remoto como Nuclide?

Hola, estoy configurando un nuevo entorno de desarrollo para mis empleados.

¿Cómo puedo restringir el acceso al repository / base de código de Github a determinadas instancias de AWS EC2, que mis empleados utilizarán como entorno de desarrollo remoto en lugar de desarrollar en sus máquinas locales.

Al igual que Nuclide en Facebook, conectas SSH remoto a tu máquina virtual y trabajas localmente, pero con Github puedes exportar código a través de gitub.com o simplemente clonar en otra PC. Necesito algún tipo de restricciones.

Estoy preparado para cambiar a un proveedor privado de git pero no estoy seguro de qué soporte estas características.

Muchas gracias de antemano

Si se encuentra bajo restricciones de cumplimiento, debe consultar a su equipo legal, equipo de desarrollo y auditores sobre los methods de implementación adecuados. Será difícil evitar completamente la exfiltración de datos por parte de los desarrolladores que tienen acceso a su código fuente y, aunque es una muy buena pregunta, no es adecuada para el desbordamiento de la stack.

En definitiva, se trata de dos cuestiones distintas:

  1. controlando lo que los desarrolladores pueden hacer con el código fuente y
  2. alojar un server seguro de Git.

Tenga en count que hay una variedad de opciones que van desde la detección hasta la prevención de acciones.

Restricciones del desarrollador

TLDR Un usuario con acceso a una máquina con código fuente Git probablemente tendrá acceso a keys SSH o passwords que les permitan conectarse con GitHub y mover datos entre una computadora local y un entorno remoto. Una buena lectura sobre la prevención de la exfiltración de datos

  • ¿Tiene políticas internas que rodean las responsabilidades de cada desarrollador para cifrar computadoras portátiles, utilizar software / herramientas aprobadas y el manejo adecuado de los datos?
  • ¿Puede identificar y restringir los protocolos de networking en el entorno de desarrollo (VM) para evitar la copy de files?
  • Puede usar processs automáticos para mover el código entre máquinas (ChatOps)
  • ¿Se puede usar la implementación continua (CI / CD) para configurar automáticamente los entornos utilizados para las testings y limitar el número de desarrolladores que necesitan acceder al código fuente?
  • ¿Está preparado para personalizar el entorno de desarrollo para restringir los commands y configurar las herramientas de supervisión para identificar comportamientos no deseados?
  • Se consideró crear un entorno de networking con espacio de air junto con controles físicos de security. Esto evita que los datos salgan de su networking a costa de impedir el acceso a Internet.

Controles Github Repos

  • Use la firma GPG para verificar quién está cometiendo el código.
  • Use SAML en github.com o SAML, LDAP, CAS si ejecuta GitHub Enterprise para usuarios a bordo / fuera de la networking.
  • Es suficiente Github.com para proteger su código fuente. De lo contrario, puede instalar Github Enterprise (o una solución similar de Git) en
    • su networking local que requiere VPN
    • una networking privada de AWS como usted describe.
  • Use los loggings de auditoría y el reenvío de loggings con GitHub Enteprise para detectar el comportamiento en lugar de prevenirlo.

Seguridad y Legal

  • ¿Hay otros controles de compensación que sean less restrictivos y que satisfagan las normas de su empresa?
  • ¿Las regulaciones de la compañía se implementan internamente (a través de la security) o externamente a través del cumplimiento? ¿Son flexibles?
  • ¿Puede modificar las regulaciones de la compañía o limitar qué desarrolladores / proyectos están sujetos a estas restricciones?

Consulte con sus equipos legales / de security internos sobre cómo definir el process y las restricciones. También puede comunicarse con los proveedores de Git que pueden ofrecer mejores prácticas sobre cumplimiento y SDLC en general.

Github Enterprise proporciona restricciones de IP mediante keys SSH

Cada vez que agrega una key SSH a GitHub Enterprise a través de Management Console, también puede especificar qué direcciones IP permiten o niegan conexiones.

Asignaría un set de direcciones IP elásticas para el número de instancias (desarrolladores) que necesita, luego permitiré el acceso solo desde ese set de direcciones IP para cada una de las keys del desarrollador. Por ejemplo, si tiene 4 desarrolladores, asigne 4 52.44.1.1,52.44.1.2,52.44.1.3,52.44.1.4 por ejemplo, 52.44.1.1,52.44.1.2,52.44.1.3,52.44.1.4 . Luego, en la console de administración de Github, el file from se vería así:

 from="52.44.1.1,52.44.1.2,52.44.1.3,52.44.1.4" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYk7k1RM49DPq8UrWhO8bIgheqAZfjqXczCjRSHshq2/qt8tWBHeiLpgAUVYFoY5Hv3+JXvMkuFE4h7HZYUWp+xXVg63L0wosrq+cVo1od2ddwiyYsnUypguSqjNxRPQ4PGQoWCTGfTLLPh2Su1nHmAf/Z0fdZo3ojunLb42ErbvJ2cIWbM/PMzdEDpUMZyLrG1JL4tGVnSRweWoaFgK6EkfE+gkyytKPuOIZREVNrO4+awTXpLDqdC0h/FFmkQCrwEFqdsm6JPARfJKVnHm7RgedLN1cpFi9Jo7ZFu5dJPTbYBKnpwsmTQkJSahNVGGDO4fQUBdC9tcKUW0gvNkRR== GitHub Enterprise Admin User 

De esta forma, una instancia determinada puede configurarse con un número de IP conocido y la key de desarrollador funcionaría para cualquier instancia determinada.