Skip to content

Épic — rework secrets côté CLI : providers (keychain/sops) + lookup scopé #3

Description

@AlexisLaporte

Contexte

Aujourd'hui oto config provider secrets <file|scaleway> propose deux providers + fallback env vars. Côté usage interne Otomata on utilise aussi SOPS (repo otomata-tech/secrets), mais ce n'est pas exposé comme un provider de premier ordre dans la CLI.

Pour la distribution publique de oto-cli, le défaut "fichier .env" est universel mais peu sécurisé (secrets en clair sur disque). Les CLIs grand public (gh, aws-cli, pip, docker) utilisent le keychain OS comme défaut : macOS Keychain, GNOME Keyring / libsecret sur Linux desktop, Credential Manager sur Windows. Lib Python standard : keyring.

Proposition

Liste cible des providers :

Provider Cible Notes
env (implicite, toujours top-prio) tous déjà là
keychain desktop solo (Mac, Linux desktop, Windows) à ajouter, défaut recommandé pour fresh install
file serveur, CI, fallback .otomata/secrets.env plat — déjà là, à documenter clairement
sops équipes, multi-machine via repo Git à ajouter explicitement (aujourd'hui implicite/maison)
scaleway déploiements prod Otomata déjà là

TODO

  • Ajouter provider keychain via la lib keyring (extra optionnel pipx install oto-cli[keychain])
  • Ajouter provider sops explicite (lit ~/.otomata/secrets/secrets.yaml, déchiffre via sops)
  • Détection auto au premier run : si keychain dispo → suggérer ; sinon file
  • Doc README : section "Secrets" qui présente les 4 options + quand utiliser laquelle
  • Préciser : le repo otomata-tech/secrets est un workflow Otomata interne, pas une dépendance de la CLI

Limites connues

  • Keychain inutilisable sur serveur headless (pas de session déverrouillée) → toujours offrir file en alternative
  • Keychain pas multi-machine → SOPS reste la bonne réponse pour ce cas

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions