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 ;-/