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.

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
ansibleoubuntu). - 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:

- Seleziona Chiave SSH dal menu a discesa Tipo.
- Seleziona la casella Genera chiave SSH.
- L'area di testo per la chiave privata manuale verrà automaticamente disabilitata e bloccata.
- 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:

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:

- 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
sudosugli 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.
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 archivio | Disponibilità | Descrizione |
|---|---|---|
| Locale | Open Source & Pro | Il segreto è archiviato nel database di Semaphore protetto da crittografia a busta. |
| Storage | Pro | Il segreto fa riferimento a un motore esterno (ad es. HashiCorp Vault, AWS Secrets Manager). |
| Env | Open Source & Pro | Il segreto viene risolto dinamicamente all'esecuzione da una variabile d'ambiente del server. |
| File | Open Source & Pro | Il segreto viene letto da un file protetto memorizzato nella directory dei segreti configurata. |

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

- 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:
- HashiCorp Vault: Connessione tramite autenticazione AppRole o Token per leggere e scrivere segreti KV v1/v2.
- OpenBao: Fork open-source compatibile con l'API di HashiCorp Vault.
- AWS Secrets Manager Enterprise: Integrazione con ruoli IAM AWS o credenziali statiche.
- Devolutions Server: Integrazione per la gestione centralizzata degli accessi privilegiati.
- CyberArk PAM Enterprise: Lettura e scrittura di segreti tramite l'API REST PVWA di CyberArk.
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.