2

I read the solution at: Best way to create custom config options for my Rails app? which seems promising. i.e. storing development and production credentials in config/config.yml. But then I thought.

If we have a team of developers, and interns, they would be exposed to this file with all production credentials. The consensus, is to trust your team. But honest human mistakes do happen: computer left on / unlocked, trojans, friends using the computer, etc.

I know Heroku has something called config vars + foreman. However, for things like AWS, its not as simple as creating a new access key and delegating that access key to a specific bucket. It doesn't work like that. The only way I can think of is to create a new AWS account solely for development purposes. If I go this route, I would have to create development accounts for other similar 3rd party services too.

Is there an alternative option?

4

2 に答える 2

1

私はSettingsLogicを使用しています。

そのために、Settings と PrivateSettings の 2 つのモデルを作成します。そして、パスワード、トークン、API キーなどの設定を PrivateSettings に、残りを Settings に分けます。

設定の場合:

class Settings < Settingslogic
  source "#{Rails.root}/config/settings.yml"
  namespace Rails.env
end

settings.ymlファイルは Git に保存されます。

PrivateSettings の場合:

class PrivateSettings < Settingslogic
  source "#{Rails.root}/config/private_settings.yml"
  namespace Rails.env
end

private_settings-sample.ymlサンプルの同期を保つために、Git にファイルを保存します。本番データは明らかに入力されていません。開発者はレポを複製し、名前を変更しprivate_settings.ymlて機能できるようにします。

config/private_settings.yml.gitignore誤挿入を避けるためでもあります。

prod に移動し、Capistrano で特定のタスクを使用してprivate_settings.yml、サーバーに保存されている適切なファイルへのシンボリック リンクを作成します ( 、およびconfigの横のディレクトリに) :currentreleasesshared

namespace :deploy do
  task :config_settings do
    run "cd #{current_path}/config && ln -sf #{shared_path}/../config/private_settings.yml private_settings.yml"
  end
end
after "deploy:update", "deploy:config_settings"
于 2012-06-08T08:03:30.810 に答える
0

開発者がパスワードを知るのを防ぐことができるかどうかはわかりません。正しい資格情報/キーを提供するサービスを完全に分離した場合でも、開発者はいつでも動作中のアプリケーションをデバッグしたり、パスワードをログに記録するコードを追加したりできます。これらは信頼する必要がある人です。可能だと思う唯一の方法は、必要なキーをクラスパスに配置し、常にコードレビューを行って、実行時に資格情報を読み取ろうとするすべての試みを防ぐ管理者を配置することです

于 2012-06-08T15:19:10.017 に答える