@drawoharajag ❤️ det här! << klicka på mig 🐛 🫖 🧚
/ann-sekrets-rb-easily-managed-encrypted-data-in-your-rails-applications
publicerad den: 2013-02-21

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


NAMN
  sekrets.rb

ÖVERBLICK
  sekrets är ett kommandoradsverktyg och ett bibliotek som används för att säkert hantera krypterade filer och inställningar i dina rails-applikationer och git-lagringsplatser.

INSTALLERA
  gem install sekrets
  gem 'sekrets'

BESKRIVNING
  TL;DR
    # skapa en krypterad konfigurationsfil

      ruby -r yaml -e'puts({:api_key => 1234}.to_yaml)' | sekrets skriv config/inställningar.yml.enc --nyckel 42

    # visa den

      sekrets läs config/inställningar.yml.enc --nyckel 42

    # redigera den

      sekrets redigera config/inställningar.yml.enc --nyckel 42

    # se att den är krypterad

      cat config/inställningar.yml.enc

    # bekräfta den

      git add config/inställningar.yml.enc

    # placera dekrypteringsnyckeln i en fil

      echo 42 > .sekrets.nyckel

    # ignorera den här filen i git

      echo .sekrets.nyckel >> .gitgnore

    # du behöver nu inte längre ange --nyckel argumentet till kommandon

      sekrets läs config/inställningar.yml.enc

      sekrets redigera config/inställningar.yml.enc

    # se till att den här filen distribueras på din server

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

    # bekräfta och distribuera

      git add config/inställningar.yml.enc
      git commit -am'krypterade inställningar yo'
      git pull && git push && cap staging distribuera

    # kom åt dessa inställningar i din applikationskod

      inställningar = Sekrets.inställningar_för('./config/inställningar.yml.enc')


  BESKRIVNING
    sekrets tillhandahåller kommandoradsverktyg och ett bibliotek för att hantera och komma åt krypterade filer i din kodbas.

    det gör det möjligt att kontrollera krypterad information i en lagringsplats och att hantera den tillsammans med resten av kodbasen. det eliminerar behovet av att kontrollera okrypterad information, nycklar eller annan känslig information.

    sekrets tillhandahåller både en generell mekanism för att hantera godtyckliga krypterade filer och en specifik mekanism för att hantera krypterade konfigurationsfiler.


  NYCKELUPPSLAG
    för *alla* operationer, från kommandoraden eller annars, använder sekrets följande algoritm för att söka efter en dekrypteringsnyckel:

    - alla nycklar som passeras direkt som en parameter till ett biblioteksanrop kommer att föredras

    - annars letar koden efter en följesedig nyckelfil. till exempel, givet filen 'config/sekrets.yml.enc' kommer sekrets att leta efter en nyckel på

        config/.sekrets.yml.enc.nyckel

      om någon av dessa hittas och inte är tom kommer innehållet i filen att användas som dekrypteringsnyckeln för den filen. du bör *aldrig* bekräfta dessa nyckelfiler och även lägga till dem i din .gitignore - eller liknande.

    - nästa en projektnyckelfil letas efter. sökvägen för den här filen är

        ./.sekrets.nyckel

      normalt och, i en rails-applikation

        RAILS_ROOT/.sekrets.nyckel

    - om det inte hittas letar sekrets efter nyckeln i miljön under miljövariabeln

        SEKRETS_NYCKEL

      den miljövariabel som används är konfigurerbar i biblioteket

    - nästa den globala nyckelfilen söks efter, sökvägen för den här filen är

        ~/.sekrets.nyckel

    - slutligen, om ingen nyckel ännu har specificerats eller hittats, ombeds användaren att ange nyckeln. uppmuntran sker endast om användaren är kopplad till en tty. så, till exempel, ingen uppmuntran kommer att hänga och en applikation startas i bakgrunden som en rails-applikation som hanteras av passagerare.

    se Sekrets.nyckel_för för mer information

  NYCKELDISTRIBUTION
    sekrets försöker *inte* lösa nyckeldistributionsproblemet för dig, med ett undantag:

    om du använder capistrano för att göra en 'vanlig' ssh-baserad distribution tillhandahålls ett enkelt recept som kommer att upptäcka en lokal nyckelfil och scp den till den fjärranslutna servern(arna) vid distribution.

    sekrets antar att den lokala nyckelfilen, om den finns, är korrekt.

    på vanligt engelska gör capistrano-receptet:

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

    det går utan att säga att den lokala nyckelfilen *aldrig* bör bekräftas och även bör vara i .gitignore

    distribution av den här nyckeln bland utvecklare ligger utanför bibliotekets omfång. sannolikt okrypterad e-post är den bästa mekanismen för distribution ;-/