2011-02-10 4 views
12

Sto usando RoR ospitato da Heroku e mi piacerebbe memorizzare i file su s3 usando paperclip. Il mio codice sorgente è ospitato su github ed è leggibile a livello mondiale. Qual è la migliore pratica per tenere segrete le chiavi dal resto del mondo?
Paperclip suggerisce che le chiavi di accesso vengono memorizzate in un file di configurazione (o nel codice), così per esempio ho:Ruby on Rails, Paperclip, Heroku, GitHub e AWS - chiavi di fissaggio

di file: config/s3.yml

access_key_id: my_access_key_id 
secret_access_key: my_very_secret_key 
bucket: bucket_name 

Heroku funziona impegnandosi codice git locale e poi spingendolo a Heroku. Dato che sto usando anche github, spingo lo stesso codice anche su github. Ciò significa che spingo anche lì le chiavi segrete.
Attualmente sto usando un account github leggibile in tutto il mondo, quindi se ho pagato Github, potrei far passare metà del problema, ma non sono soddisfatto delle chiavi segrete che si trovano in un file di configurazione nel codice. Non so se ci sia una pratica migliore per questo però.

Qual è la prassi migliore per mantenere le chiavi segrete e continuare a utilizzare l'elenco di librerie e servizi sopra menzionato?

BTW, ho iniziato solo con ror e heroku la scorsa settimana, quindi potrei essere considerato un neofita, per favore sii premuroso;) Grazie!

risposta

21

È necessario utilizzare la variabile ENV dall'app heroku.

Se si esegue una configurazione di heroku, è possibile accedere a tutte le variabili ENV. Basta aggiungere un po 'e usarlo direttamente nella tua applicazione.

Con questo trucco non è necessario aggiornare il codice per modificare la configurazione e la configurazione se non definita nel codice base.

Nella tua s3.yml si solo bisogno di fare:

access_key_id: <%= ENV['S3_ACCESS_KEY'] %> 
secret_access_key: <%= ENV['S3_SECRET_KEY'] %> 
bucket: <%= ENV['S3_BUCKET_NAME'] %> 

E aggiungere questo ENV variabile nel Heroku app

heroku config:add S3_ACCESS_KEY='your_key' 
heroku config:add S3_SECRET_KEY='your_secret' 
heroku config:add S3_BUCKET_NAME='your_nucket_name' 
+0

Per informazioni, 'config: add' è stato sostituito da' config: set'. – thomasb

-5

err .. non c'è altro modo se si utilizza heroku. Devi mettere tutto in un pronti contro termine e spingerlo a loro.

Reg github, se hai intenzione di utilizzare i repository pubblici - "privati" se hai bisogno di quelle chiavi per far funzionare la tua app. Devi fidarti dei membri del tuo team anche se dai accesso a quel repository privato di github a poche persone selezionate.

Non sono a conoscenza di altre idee.

+1

Questa risposta dovrebbe essere cancellata. – user664833

1

Non molto tempo fa, Amazon ha rilasciato ufficiale AWS SDK for Ruby. Funziona piuttosto bene con S3, supporta istanze S3 americane, europee e giapponesi dalla scatola e ben mantenuto.

Ho creato un modulo di archiviazione per Paperclip chiamato paperclip-aws per funzionare con AWS SDK.

Sentitevi liberi di usarlo. Spero che possa essere d'aiuto.