Passa al contenuto principale

Key Store

Il Key Store funge da archivio centralizzato delle credenziali di Semaphore. Gestisce i materiali di autenticazione necessari per clonare repository Git remoti, connettersi agli host dell'infrastruttura di destinazione, elevare i privilegi (sudo/become) e decifrare i segreti di Ansible Vault.

Key Store

Il Key Store è suddiviso in due visualizzazioni principali:

  • Scheda Keys: Elenca tutte le credenziali configurate per il progetto corrente, mostrandone nome, backend di archiviazione, tipo e stato di sincronizzazione.
  • Scheda Storages (Pro): Configura backend di segreti esterni (come HashiCorp Vault, OpenBao, AWS Secrets Manager o CyberArk) per la risoluzione dinamica e la sincronizzazione automatizzata.

Tipi di credenziali​

Semaphore suddivide le credenziali archiviate in tre tipologie fondamentali:

1. Chiavi SSH​

Le chiavi SSH forniscono un'autenticazione crittografica asimmetrica per connettersi a nodi Linux/UNIX e clonare repository Git tramite SSH ([email protected]:...).

Durante la configurazione di una credenziale di tipo chiave SSH, è possibile specificare:

  • Nome chiave: Un'etichetta descrittiva per la credenziale negli inventari e modelli del progetto.
  • Nome utente (Opzionale): L'account utente remoto predefinito utilizzato per la connessione SSH (ad esempio ansible o ubuntu).
  • Passphrase (Opzionale): La passphrase necessaria per decifrare chiavi private protette. I campi di immissione della passphrase includono un'icona di visibilità (occhio) e sono mascherati per impostazione predefinita.
  • Chiave privata: Il testo non crittografato della chiave privata PEM/OpenSSH.

Generatore di chiavi SSH integrato​

Anziché eseguire manualmente ssh-keygen su macchine esterne, Semaphore include un generatore di coppie di chiavi SSH integrato con un clic direttamente nella finestra modale:

Generate SSH Key Modal

  1. Seleziona Chiave SSH dal menu a discesa Tipo.
  2. Seleziona la casella Genera chiave SSH.
  3. L'area di testo per la chiave privata manuale verrà automaticamente disabilitata e bloccata.
  4. Fai clic su Crea. Semaphore genererà automaticamente una coppia di chiavi crittograficamente sicura (ED25519/RSA), cifrerà la chiave privata nel database e mostrerà la chiave pubblica in una finestra di dialogo dedicata:

Generated SSH Public Key

Usa il pulsante Copia negli appunti per copiare la chiave pubblica e incollala nelle deploy key del tuo provider Git o nel file ~/.ssh/authorized_keys dei tuoi nodi di destinazione.

Recupero delle chiavi pubbliche in un secondo momento (Cassetto chiave pubblica)​

Se chiudi la finestra di dialogo o hai bisogno di recuperare la chiave pubblica in seguito, non è necessario rigenerare la coppia di chiavi. Quando modifichi una chiave creata con il generatore, Semaphore mette a disposizione un cassetto espandibile Chiave pubblica:

Public Key Drawer

  • Fai clic su Mostra / Nascondi per visualizzare la chiave pubblica.
  • Fai clic sull'icona degli appunti per copiare immediatamente la chiave pubblica.

Collegamento delle deploy key ai principali provider Git​

Per i repository Git che richiedono l'autenticazione SSH, aggiungi la chiave pubblica generata come deploy key in sola lettura:


2. Accesso con password​

Il tipo di credenziale Accesso con password supporta sia l'autenticazione tradizionale con nome utente e password sia stringhe di segreti isolate:

  • Autenticazione host e sudo: Fornisce l'accesso SSH basato su password e l'elevazione dei privilegi sudo sugli host di destinazione.
  • Autenticazione Git HTTPS: Autentica sui repository remoti tramite HTTPS utilizzando nome utente e token di accesso personale (PAT).
  • Password Ansible Vault: Sblocca file e variabili crittografati di Ansible Vault in fase di esecuzione.
Stringhe segrete e token di accesso personale (PAT)

Per memorizzare una stringa segreta pura (come un token API Bearer, una passphrase di Vault o un PAT), lascia vuoto il campo Nome utente. Semaphore tratterà la voce come un segreto isolato senza associarvi un utente.

Mascheramento dei segreti e protezione dalla sovrascrittura​

Per proteggere le credenziali da accessi non autorizzati e modifiche accidentali:

  • I campi di immissione di password e passphrase sono mascherati con controlli di visibilità opzionali.
  • Durante la modifica di una credenziale esistente, i campi sensibili sono disabilitati per impostazione predefinita.
  • Per aggiornare o sostituire un segreto esistente, è necessario selezionare esplicitamente la casella Sovrascrivi in calce al modulo. Questa protezione previene sovrascritture involontarie durante modifiche ordinarie.

3. Nessuno​

La credenziale Nessuno funge da segnaposto per l'assenza di autenticazione. Viene utilizzata per repository Git open-source pubblici (come su GitHub o GitLab) ed esecuzioni locali di playbook che non richiedono chiavi SSH né password.


Archivi di segreti​

Semaphore supporta architetture disaccoppiate di archiviazione dei segreti. Durante la creazione o la modifica, puoi scegliere dove risiede il materiale tramite le schede:

Scheda archivioDisponibilitàDescrizione
LocaleOpen Source & ProIl segreto è archiviato nel database di Semaphore protetto da crittografia a busta.
StorageProIl segreto fa riferimento a un motore esterno (ad es. HashiCorp Vault, AWS Secrets Manager).
EnvOpen Source & ProIl segreto viene risolto dinamicamente all'esecuzione da una variabile d'ambiente del server.
FileOpen Source & ProIl segreto viene letto da un file protetto memorizzato nella directory dei segreti configurata.

Archivi di segreti

Archiviazione nel database (Locale)​

Per impostazione predefinita, i segreti vengono archiviati nel database applicativo in formato cifrato mediante crittografia simmetrica AES. La chiave principale è configurata tramite l'impostazione del server:

  • Chiave di configurazione: access_key_encryption
  • Variabile d'ambiente: SEMAPHORE_ACCESS_KEY_ENCRYPTION
Generazione della chiave crittografica principale

Genera una chiave crittografica sicura da 32 byte in base64 prima di avviare istanze di produzione:

head -c32 /dev/urandom | base64

Assicurati di conservare un backup sicuro di questa chiave. Se viene smarrita, i segreti archiviati nel database non potranno più essere recuperati.

Origini da variabili d'ambiente e file (Sola lettura)​

Quando selezioni la scheda Env o File, Semaphore considera l'archivio come un'origine esterna in sola lettura. L'interfaccia mostra un avviso informativo:

Read-only secret storage chosen.

Archiviazione in sola lettura

  • Origine Env: Specifica il nome esatto della variabile d'ambiente esportata sul server (ad esempio SEMAPHORE_EXTERNAL_VAULT_TOKEN).
  • Origine File: Specifica il percorso relativo alla directory dei segreti configurata (dirs.secrets / SEMAPHORE_SECRETS_PATH, predefinito /tmp/semaphore).

Per le chiavi strutturate, il contenuto di file e variabili deve essere formattato come oggetto JSON valido. Per i dettagli, consulta Origini da variabili d'ambiente e file.

Motori di segreti aziendali esterni (Pro & Enterprise)​

Semaphore Pro ed Enterprise ampliano il Key Store con connettori nativi per i principali gestori di segreti aziendali:


Sincronizzazione dei segreti da archivi remoti​

Anziché registrare manualmente le credenziali una per una, Semaphore supporta la sincronizzazione automatizzata da vault esterni.

Quando un segreto viene gestito tramite sincronizzazione:

  • Viene contrassegnato con un badge synchronized attivo nella tabella del Key Store.
  • La modifica manuale del segreto nell'interfaccia viene disabilitata per mantenere il vault esterno come unica fonte di verità.
  • Qualsiasi aggiornamento o rotazione nel motore esterno si propaga automaticamente in Semaphore in base all'intervallo configurato.

Per le istruzioni di configurazione complete, consulta Sincronizzazione dei segreti.