Vault di team
Un team condivide accessi (utente, password, chiave privata) e note in un vault che solo i suoi membri possono leggere. Non c'è un server Shellvane: il file del team sta su uno storage che il team già condivide — una cartella condivisa (Dropbox, OneDrive, una condivisione di rete), un server WebDAV, un repository Git o un bucket S3 — ed è cifrato end-to-end su ogni computer.
Apri Team
La tua identità
Ognuno crea una volta la propria identità di team, con il nome che vedranno i colleghi: una coppia di chiavi conservata nel proprio vault. Il suo codice di adesione contiene solo le chiavi pubbliche: invialo a un admin del team per essere aggiunto. Confronta con l'admin l'impronta della chiave (al telefono, di persona), così nessuno può inserire un'altra chiave.
Creare un team
Crea un team, dagli un nome e scegli dove va il suo file. Chi lo crea è il primo admin.
Per aggiungere qualcuno: incolla il suo codice di adesione in Membri, scegli Membro o Admin, poi mandagli l'invito che compare. L'invito dice dov'è il team e di quale chiave admin fidarsi; non contiene segreti.
Unirsi a un team
Unisciti a un team e incolla l'invito. Controlla dove si vede il file del team dal tuo computer (una cartella condivisa può avere un altro percorso sul tuo) e scrivi la password dello storage se ne ha una: viene conservata nel tuo vault.
Storage e credenziali
- Cartella condivisa: ogni membro deve avere la cartella sincronizzata sul proprio computer (Dropbox, OneDrive, una condivisione di rete); il percorso può cambiare da un computer all'altro.
- WebDAV e S3: utente e password (o access key e secret key) vengono chiesti alla creazione o all'adesione e conservati nel vault di ciascun membro.
- Git: crea un repository vuoto (privato) su cui i membri possono scrivere (GitHub, GitLab, Gitea…) e usa il suo indirizzo.
- Con un indirizzo SSH (
git@github.com:team/shellvane.git) o un indirizzo HTTPS a cui il tuo computer accede già (credential helper di Git, portachiavi di macOS, Git Credential Manager su Windows), lascia vuoti utente e token: Shellvane eseguegitcon le tue credenziali. Una chiave SSH con passphrase deve essere caricata nell'agent SSH, perché Shellvane non può rispondere a una richiesta. - Altrimenti inserisci un token di accesso personale con permesso di scrittura sul repository (e il nome utente, se il servizio lo richiede). Viene conservato nel tuo vault, passato a
gittramite l'ambiente e mai scritto nel clone o nell'invito. - Con un utente e senza token, Shellvane chiede al credential helper di Git la password salvata per quell'utente. Su una rete con proxy, Shellvane usa le variabili di proxy e certificati del profilo della shell (
HTTPS_PROXY,NO_PROXY,SSL_CERT_FILE…) o l'http.proxydi Git, come il terminale. - Funzionano anche utente e password (ad esempio Bitbucket Server): metti la password nel campo del token. Se il server non accetta password (login a due fattori, SSO), crea invece un HTTP access token.
- Password cambiata o token scaduto? Apri il team › Storage e credenziali, scrivi la nuova e salva (un campo vuoto mantiene quella salvata). Lo stesso pulsante compare quando un team non si apre, anche per correggere l'indirizzo.
- Ogni membro usa le proprie credenziali: l'invito contiene solo l'indirizzo. Shellvane tiene un clone del repository sul tuo computer; quando due persone salvano nello stesso momento, la seconda modifica viene rifatta automaticamente sopra la prima, senza merge a mano.
- Con un indirizzo SSH (
Condividere accessi
Aggiungi un accesso con un'etichetta, un utente, una password e/o una chiave privata. Tutti i membri lo vedono; i segreti non compaiono mai nell'elenco, e modificando senza riscriverli restano invariati.
Un host usa un accesso del team dalle opzioni avanzate: Credenziali da un plugin o da un team › l'accesso del team. Ogni connessione legge il valore attuale, quindi cambiare una password nel team la cambia per tutti insieme.
Condividere gruppi di host
Tasto destro su un gruppo nel pannello host › Condividi con il team: il gruppo, i suoi sottogruppi e host (con impostazioni, jump host e accessi del team) vanno al team. Ogni membro lo riceve come gruppo proprio, in cima ai suoi host, e Shellvane lo tiene aggiornato — all'avvio, ogni pochi minuti e con Aggiorna ora i gruppi condivisi in Team.
- Per cambiare un gruppo condiviso, modificalo come al solito, poi tasto destro › Pubblica le modifiche al team. Le copie dei membri vengono aggiornate sul posto: gli host mantengono la propria identità, quindi tunnel, ambienti e preferiti che li usano continuano a funzionare. Un gruppo modificato sul tuo computer e non pubblicato viene mantenuto, non sostituito dagli aggiornamenti del team: i dialoghi di modifica lo segnalano, e tasto destro › Scarta le modifiche locali riprende la versione del team.
- Anche qui i comandi richiedono la tua approvazione: un gruppo condiviso può contenere comandi che girano sul tuo computer (ProxyCommand, comandi per password, certificato e pre-connessione), comandi scritti sui server con il tuo account (comandi di avvio e remoti) e l'inoltro X11. Finché non li rivedi e approvi (scudo rosso sul gruppo, o tasto destro › Rivedi i comandi) la tua copia arriva senza di essi; ogni modifica lo chiede di nuovo.
- Ciò che ha senso solo su un computer resta locale: la chiave scelta per un host, il tema del terminale, Wake-on-LAN e port knocking, e un plugin di credenziali di quel computer.
- Smetti di condividere (in Team) toglie il gruppo dal team; ogni membro mantiene la propria copia come gruppo normale.
Condividere ambienti, snippet, workspace e regole
Accanto a ogni ambiente, snippet, workspace salvato e regola di automazione c'è un pulsante team: Condividi con il team (oppure, una volta condiviso, Pubblica le modifiche al team). I membri ne ricevono una copia propria, tenuta aggiornata come i gruppi condivisi:
- Un ambiente viaggia con i tunnel che usa; host, tunnel e workspace sono collegati per nome, prima tra i gruppi condivisi del team. Un tunnel viene creato sul computer di un membro solo se non ne ha già uno con quel nome.
- Un workspace apre gli stessi host per nome; i pannelli di host che il membro non ha vengono tralasciati.
- Una regola mantiene il gruppo o l'host a cui si applica, per nome; se il membro non lo ha, resta spenta.
- Una copia che modifichi in locale viene mantenuta: gli aggiornamenti del team non la sostituiscono, e il team non la vede finché non la pubblichi. Il dialogo di modifica ti avvisa, e il pulsante team diventa arancione: cliccalo per Pubblicare le modifiche o Scartare le modifiche locali (prendere la versione del team).
- Un workspace condiviso non sostituisce mai uno tuo con lo stesso nome: arriva come Nome (Team).
I comandi richiedono la tua approvazione. Un ambiente condiviso esegue comandi sul tuo computer (verifica login, login, preparazione, comandi sul jump host), e una regola di risposta scrive testo nelle tue sessioni. La prima volta, e dopo ogni modifica fatta nel team, l'ambiente non parte e la regola resta spenta finché non rivedi i comandi (pulsante con lo scudo rosso, o quando lo avvii) e li Approvi. Ciò che condividi tu è già approvato.
Sincronizzazione, e quando lo storage non c'è
Shellvane legge il team all'avvio, ogni 5 minuti e con Sincronizza ora (nell'intestazione del team, o Sincronizza ora i team nella palette).
L'ultima copia verificata del team resta su questo computer. Quando lo storage non è raggiungibile (offline, VPN spenta, server Git giù, repository eliminato), il team si apre da quella copia, in sola lettura, con un avviso: gli accessi continuano a funzionare per le connessioni, mentre le modifiche aspettano che lo storage torni.
Se lo storage risponde ma non ha il file del team (un repository o una cartella nuovi o svuotati), l'avviso offre Pubblica qui questa copia: qualsiasi membro può riportare il team, perché il file è già firmato. Per spostare un team in un nuovo repository: crealo vuoto, impostalo in Storage e credenziali, poi pubblica la copia; gli altri membri cambiano l'indirizzo nel proprio Storage e credenziali.
Membri e sicurezza
- Gli admin aggiungono e rimuovono membri e cambiano i ruoli; un team mantiene almeno un admin.
- Il proprietario (chi ha creato il team, indicato con Proprietario in Membri) è l'unico che può eliminare il team, e nessun admin può rimuoverlo o declassarlo. Il proprietario può cedere il team a un altro membro con Rendi proprietario: quel membro diventa admin e nuovo proprietario, e il precedente resta admin. Il passaggio è firmato dal proprietario precedente, quindi un admin non può rendersi proprietario da solo.
- Rimuovere un membro cambia la chiave del team: da quel momento non può più leggerlo. Può aver conservato ciò che ha visto prima: cambia le password che conosceva.
- L'elenco dei membri è firmato da un admin, e ogni modifica degli elementi condivisi dal membro che l'ha fatta. Entrambi hanno un numero di versione che cresce sempre, e ogni computer ricorda il più alto che ha visto: Shellvane rifiuta un file non firmato da un admin di cui si fida già, e qualsiasi versione precedente rimessa sullo storage (dalla storia del repository, o una copia vecchia) — il team mostra allora la tua copia con Ripristina questa copia. Gli inviti contengono la versione attuale, così anche un nuovo membro rifiuta una copia vecchia.
- Elimina il team (il proprietario, nell'intestazione del team) lo elimina per tutti: accessi e note vengono cancellati e sullo storage resta solo una nota firmata che dice chi l'ha eliminato, con una nuova chiave e nessun segreto. I membri lo vedono alla prossima apertura del team, tengono i gruppi condivisi come gruppi normali e scelgono Esci su questo computer. Non si può annullare, e una copia del file vecchio rimessa sullo storage viene rifiutata. Per smettere di usare un team solo sul tuo computer usa Esci su questo computer.
- Due persone che modificano elementi diversi nello stesso momento mantengono entrambe le modifiche; sullo stesso elemento vince l'ultimo salvataggio.