2010-09-16 5 views
8

Derzeit lege ich die Schlüssel, die ich verwende, um auf andere APIs und ähnliches zuzugreifen, in der Datei environment.rb ab. So ist es verfügbar, wenn ich lokal und auch auf Heroku laufe.Wie schütze ich meine privaten Schlüssel, wenn ich github, heroku verwende und lokal entwickle?

Ich möchte jedoch beginnen, meinen Code über github öffentlich zugänglich zu machen, damit ich Hilfe bekommen kann.

Was sind die Schritte, die ich tun muss, um dies zu erreichen, vor allem, so dass ich lokal testen und auf Heroku testen kann.

Es scheint, als ob es einen Weg auf Heroku gibt, um die Schlüssel von einer Befehlszeile hinzuzufügen, so dass sie nicht in der Ruby-on-Rails App liegen müssen. Aber was ist mit lokaler Entwicklung?

Antwort

4

sie zu einem initializer bewegen und die Datei hinzufügen

EDIT .gitignore:

Es ist ein Verzeichnis in Config initializers genannt. Hier platzieren Sie Code, der beim Start Ihrer Anwendung einmal ausgeführt werden soll. In der Vergangenheit wurde environment.rb für diese Einstellungen verwendet, aber Initialisierer sorgen für eine bessere Organisation. Ich würde eine Datei im Initialisierungsverzeichnis namens "load_keys.rb" oder etwas ähnliches erstellen. In dieser Datei würden Sie den genauen Code eingeben, der in Ihrer Datei "environment.rb" enthalten war, die Sie nicht in GitHub haben möchten.

+0

hi, entschuldigung, was meinst du mit Umzug zu einem Initiator? – Angela

+0

Nein, ich habe meinen ursprünglichen Post mit mehr Informationen über Initialisierer aktualisiert. Ich nehme an, du weißt, was .gitignore ist, da du nicht gefragt hast. –

+0

ja, danke, ich bin vertraut mit .gitignore :) Ich bin vertraut mit dem Verzeichnis, aber war mir nicht sicher, was ich damit machen soll .... – Angela

1
  1. Setzen Sie Ihre privaten Schlüssel wie gewohnt in ~/.ssh.
  2. Verschlüsseln Sie Ihre privaten Schlüssel mit einer Passphrase.
  3. Installieren Sie keychain.
  4. Fügen Sie eval $(keychain private-key-file1 private-key-file2 private-key-file3; source ~/.keychain/${HOSTNAME}-sh) zu Ihrem ~/.bashrc, ~/.profile, ~/.bash_profile oder was haben Sie. (Siehe die Schlüsselbund Manpage für csh, tcsh, zsh, oder was auch immer)
16

Sie Umgebungsvariablen verwenden (config vars auf Heroku) API-Schlüssel zu speichern und sie nicht in Quelle überprüfen.

Für eine project, die an dem ich arbeite, verwende ich eine Gabel von twitter-auth und änderte es den Client-Schlüssel und Schlüssel aus env Variablen zu lesen:

http://github.com/dpmcnevin/twitter-auth/blob/ace5d60a8ed8121cca4c97ef30a0cd025b99bfe1/lib/twitter_auth.rb#L68

OAuth::Consumer.new(
    ENV['oauth_consumer_key'] || config['oauth_consumer_key'],   
    ENV['oauth_consumer_secret'] || config['oauth_consumer_secret'], 
    options 
) 

ich dann einrichten die Schlüssel in meiner .rvmrc im Projektverzeichnis für den lokalen Gebrauch:

export oauth_consumer_key=xxxxxxxxxxxx 
export oauth_consumer_secret=xxxxxxxxxxxxxxxxxxx 
rvm [email protected] 

Und schließlich die envi einrichten gebung Variablen auf Heroku:

$ heroku config:add oauth_consumer_key=xxxxxxxxxxxxx 
$ heroku config:add oauth_consumer_secret=xxxxxxxxxxxxx 
$ heroku config 
DATABASE_URL   => postgres://..... 
RACK_ENV    => production 
oauth_consumer_key => xxxxxxxxxxxxxxxx 
oauth_consumer_secret => xxxxxxxxxxxxxxxxxxx 

Dann nur sicherstellen, dass Ihre .rvmrc im .gitignore ist und dann können Sie auf Github schieben, ohne API-Schlüssel auszusetzen.

+0

entfernen möchten kann nicht jeder, der Zugriff auf Ihren Heroku drücken Sie einfach die Tasten mit Heroku Config lesen ? – TLK

Verwandte Themen