Voglio effettuare il deploy da GitLab ad AWS - quindi dove esattamente memorizzo la mia chiave privata?

2

Questa sembra una domanda strana e semplice, ma sto cercando di capire il principio di " non controllare mai una chiave privata nel controllo di versione ".

Sto provando a creare una sorta di avvio, in cui i client hanno distribuzioni private / separate basate su una piattaforma comune.

Per gestire tutto questo il codice per ogni client verrà archiviato in un repository GitLab privato (memorizzato su GitLab.com) e verrà quindi distribuito su Amazon Web Services per gestire l'implementazione e la scalabilità . Spero di ridimensionarlo a un numero elevato di client, quindi l'automazione è la chiave.

Ho trovato una serie di scenari ciascuno con pro / contro, ma tutti cadono fuori strada delle "no chiavi private" nel problema dei repository.

  1. Utilizzare pipeline / runner GitLab per testare il codice e quindi distribuire in produzione ... tranne per fare ciò, il corridore GitLab richiederà l'accesso ad AWS che richiede una chiave privata. E la chiave sarà in tutti i repository client.
  2. Fai in modo che ogni implementazione AWS effettui periodicamente il polling degli aggiornamenti, scarichi dal repository GitLab e installi gli aggiornamenti ... a parte questo script AWS richiede l'accesso a GitLab che richiede una chiave privata.
  3. Crea un sistema di gestione che gestisca le distribuzioni di codice da GitLab a AWS ... ma richiede comunque chiavi private per entrambi. Fortunatamente le chiavi sono solo in un posto.

Supponendo che il repository GitLab sia privato e accessibile solo a me stesso (o eventualmente ai dipendenti fidati) come fai a realizzare un'integrazione continua tra servizi privati?

    
posta Community 14.06.2016 - 06:41
fonte

1 risposta

0

Quello che stai affrontando qui è il problema della gestione segreta. È una specie di grande punto interrogativo nell'architettura cloud. Il consiglio di non archiviare mai segreti nel controllo della versione è corretto. È solo un po 'difficile farlo accadere qualche volta.

Alcuni modi per avanzare:

  • Gitlab ha una nozione di segreti. Questo è un modo per il server CI mantenere le chiavi in un modo in cui non sono nel repository ma lo sono disponibile per le attività di distribuzione. I fornitori di servizi cloud supportano anche la creazione di chiavi con restrizioni che possono eseguire solo un'attività specifica. Raccomando di farlo invece di utilizzare le credenziali di root o di amministratore.

  • Esiste anche una nozione di chiavi di rilascio. Chiavi specializzate un server e autorizzato solo a caricare un nuovo codice per quel progetto.

  • I principali provider di cloud offrono anche una gestione segreta sicura. Potrebbe vale la pena implementare un sistema di gestione segreto ospitato.

  • O distribuisci il tuo negozio segreto sicuro come Hashicorp Vault per un controllo dei segreti a grana fine.

risposta data 24.04.2018 - 20:59
fonte

Leggi altre domande sui tag