2011-03-06 3 views

Répondre

0

Il y a plusieurs façons de faire quelque chose comme ça.

La façon la plus simple de faire quelque chose comme ça dans le monde à la disposition de votre application est de définir une constante au sein config/environment.rb (ou config/environments/production.rb.

Cependant, avec des données sensibles, il est important qu'ils découplés de votre primaire SCM et seulement disponible au sein de l'environnement de production - au moins de cette façon, si votre code est compromis, votre clé de chiffrement est sûre

Il y a deux façons de le faire que je connais - l'une serait de mettre les clés dans un environnement variable, qui peut ensuite être consulté dans Ruby par ENV['variable_name]

Une autre option est de le stocker dans un fichier externe qui est découplé de votre référentiel de code, puis de le lire avec un initialiseur.

Quelle que soit la façon dont vous le faites, vous pouvez combiner cette approche avec une déclaration constante config/environment.rb:

# config/environment.rb 
ENCRYPTION_KEY = ENV['encryption_key'] 

De cette façon, si vous changez l'emplacement de stockage de votre clé, il vous suffit de changer une ligne de code.

0

Vous pouvez définir toutes vos constantes secrètes dans un fichier config/initializers/01_secrets.rb. Voici quelques choses à penser:

  • Le préfixe 01 est pour vous assurer que les constantes secrètes sont définies avant les autres initializers qui font usage de ces constantes sont chargées. Le fichier 01_secrets.rb ne doit pas être enregistré dans votre SCM.

  • Le (s) serveur (s) qui stockent ce fichier doivent être correctement sécurisés et le fichier lui-même doit avoir une sécurité maximale.

E.g.

# config/initilizers/01_secret.rb 
ENV['ENCRYPTION_KEY'] = "your_key" 
Questions connexes