@drawoharami piace questo! << clicca qui 🐛 🫖 🧚
/ann-sekrets-rb-easily-managed-encrypted-data-in-your-rails-applications
pubblicato il: 2013-02-21

ref: https://github.com/ahoward/sekrets


NOME
  sekrets.rb

SINOSSI
  sekrets è uno strumento a riga di comando e una libreria utilizzata per gestire in modo sicuro file e impostazioni crittografati nelle tue applicazioni rails e nei repository git.

INSTALLAZIONE
  gem install sekrets
  gem 'sekrets'

DESCRIZIONE
  TL;DR
    # crea un file di configurazione crittografato

      ruby -r yaml -e'puts({:api_key => 1234}.to_yaml)' | sekrets write config/settings.yml.enc --key 42

    # visualizzalo

      sekrets read config/settings.yml.enc --key 42

    # modificalo

      sekrets edit config/settings.yml.enc --key 42

    # verifica che sia crittografato

      cat config/settings.yml.enc

    # committalo

      git add config/settings.yml.enc

    # metti la chiave di decrittazione in un file

      echo 42 > .sekrets.key

    # ignora questo file in git

      echo .sekrets.key >> .gitignore

    # ora non è più necessario fornire l'argomento --key ai comandi

      sekrets read config/settings.yml.enc

      sekrets edit config/settings.yml.enc

    # assicurati che questo file venga distribuito sul tuo server

      echo " require 'sekrets/capistrano' " >> Capfile

    # committa e distribuisci

      git add config/settings.yml.enc
      git commit -am'impostazioni crittografate yo'
      git pull && git push && cap staging deploy

    # accedi a queste impostazioni nel codice della tua applicazione

      settings = Sekrets.settings_for('./config/settings.yml.enc')

  DESCRIZIONE
    sekrets fornisce strumenti da riga di comando e una libreria per gestire e accedere ai file crittografati nel tuo codice sorgente.

    consente di inserire informazioni crittografate in un repository e di gestirle insieme al resto del codice sorgente. elimina la necessità di inserire informazioni non crittografate, chiavi o altre informazioni sensibili.

    sekrets fornisce sia un meccanismo generale per gestire file crittografati arbitrari, sia un meccanismo specifico per gestire file di configurazione crittografati.

  RICERCA DELLA CHIAVE
    per *tutte* le operazioni, dalla riga di comando o altrimenti, sekrets utilizza il seguente algoritmo per cercare una chiave di decrittazione:

    - qualsiasi chiave passata direttamente come parametro a una chiamata di libreria sarà preferita

    - altrimenti il codice cerca un file di chiave compagno. per esempio, dato il file 'config/sekrets.yml.enc' sekrets cercherà una chiave a

        config/.sekrets.yml.enc.key

      se uno di questi viene trovato non vuoto, il contenuto del file verrà utilizzato come chiave di decrittazione per quel file. non dovresti *mai* committare questi file di chiave e aggiungerli anche al tuo .gitignore - o simili.

    - successivamente viene cercato un file di chiave del progetto. il percorso di questo file è

        ./.sekrets.key

      normalmente e, in un'applicazione rails

        RAILS_ROOT/.sekrets.key

    - se non viene trovato sekrets cerca la chiave nell'ambiente sotto la variabile di ambiente

        SEKRETS_KEY

      la variabile di ambiente utilizzata è configurabile nella libreria

    - successivamente viene cercato il file di chiave globale, il percorso di questo file è

        ~/.sekrets.key

    - infine, se nessuna chiave è stata ancora specificata o trovata, all'utente viene richiesto di inserire la chiave. la richiesta si verifica solo se l'utente è collegato a un tty. quindi, ad esempio, nessuna richiesta farà bloccare un'applicazione avviata in background come un'applicazione rails gestita da passenger.

    vedi Sekrets.key_for per ulteriori dettagli

  DISTRIBUZIONE DELLA CHIAVE
    sekrets non *cerca* di risolvere il problema della distribuzione della chiave per te, con un'eccezione:

    se stai utilizzando capistrano per eseguire una distribuzione 'vaniglia' basata su ssh, viene fornita una semplice ricetta che rileverà un file di chiave locale e lo copierà scp sul server remoto/i al momento della distribuzione.

    sekrets presume che il file di chiave locale, se esiste, sia corretto.

    in inglese semplice la ricetta capistrano fa:

      scp ./sekrets.key deploy@remote.host.com:/rails_root/current/sekrets.key

    è ovvio che il file di chiave locale non dovrebbe *mai* essere committato e dovrebbe anche essere in .gitignore

    la distribuzione di questa chiave tra gli sviluppatori è al di fuori della portata della libreria. probabilmente l'email non crittografata è il miglior meccanismo per la distribuzione ;-/