Quiero implementar desde GitLab a AWS. ¿Dónde exactamente almaceno mi clave privada?

2

Esto parece una pregunta extraña y simple, pero estoy tratando de entender el principio de " nunca compruebe una clave privada en el control de versiones ".

Estoy tratando de construir una especie de inicio, donde los clientes tienen implementaciones privadas / separadas basadas en una plataforma común.

Para administrar todo esto, el código para cada cliente se almacenará en un repositorio privado de GitLab (almacenado en GitLab.com) , y luego se implementará en los Servicios Web de Amazon para manejar la implementación y la escalabilidad . Espero escalar esto a un gran número de clientes, por lo que la automatización es la clave.

He encontrado una serie de escenarios, cada uno con ventajas y desventajas, pero todos se desvían de las "claves privadas" en el problema de repositorios.

  1. Use las tuberías / corredores de GitLab para probar el código y luego implementarlo en producción ... excepto para hacer esto, el corredor de GitLab requerirá acceso a AWS, que requiere una clave privada. Y la clave estará en todos los repositorios del cliente.
  2. Haga que cada implementación de AWS busque periódicamente actualizaciones, descargue desde el repositorio de GitLab e instale las actualizaciones ... excepto para hacer que este script de AWS requiera acceso a GitLab que requiere una clave privada.
  3. Cree un sistema de administración que maneje las implementaciones de código de GitLab a AWS ... pero aún así requiere claves privadas para ambos. Afortunadamente, las llaves están en un solo lugar.

Suponiendo que el repositorio de GitLab es privado y solo accesible para mí (o, eventualmente, para empleados de confianza), ¿cómo hace para tener una integración continua entre servicios privados?

    
pregunta Community 14.06.2016 - 06:41
fuente

1 respuesta

0

Lo que estás enfrentando aquí es el problema de la administración secreta. Es una especie de gran interrogante en la arquitectura de la nube. El consejo de nunca almacenar secretos en el control de versiones es correcto. Es un poco difícil hacer que eso suceda a veces.

Algunas formas de avanzar:

  • Gitlab tiene una noción de secretos. Esta es una manera para que el servidor de CI mantener las claves de una manera en la que no están en el repositorio pero son disponible para las tareas de despliegue. Los proveedores de la nube también admiten la creación de claves restringidas que solo pueden realizar una tarea específica. Recomiendo hacerlo en lugar de usar credenciales de administrador o raíz.

  • También hay una noción de claves de liberación. Llaves especializadas para un servidor y solo está autorizado para extraer código nuevo para ese proyecto.

  • Los principales proveedores de la nube también ofrecen administración secreta segura. Que podría merece la pena implementarse en un sistema de administración secreta alojado.

  • O implementa tu propia tienda secreta segura, como Hashicorp Vault, para un control muy detallado de los secretos.

respondido por el jorfus 24.04.2018 - 20:59
fuente

Lea otras preguntas en las etiquetas