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.
- 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.
- 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.
- 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?