[解決済み] バージョン管理システムで秘密鍵とパスワードを安全に保存するにはどうすればよいですか?
質問
私は、開発サーバーと本番サーバーのホスト名やポートなどの重要な設定をバージョン管理システムで管理しています。しかし、私はそれが バッドプラクティス であることはわかっています。 秘密 (秘密鍵やデータベースパスワードのような) 秘密を VCS リポジトリに保存します。
しかし、パスワードは--他のどんな設定とも似ていますが--バージョン管理されるべきもののように思われます。そのため は はどのようなものでしょうか?
を維持することになると想像しています。 秘密 を自分のファイルに保存して、そのファイルに その ファイルを暗号化し、バージョン管理します。しかし、どのような技術なのでしょうか?そして、これを適切に行うにはどうしたらよいのでしょうか?もっと良い方法はないのでしょうか?
私は一般的に質問していますが、私の特定の例では、秘密キーとパスワードは Django/Python を使用したサイトの git と github .
また 理想的な 例えば、暗号化されたパスワードファイルが変更された場合、パスワードを要求するスクリプトが実行され、所定の位置に復号化されます。
編集:わかりやすくするために、私は am を格納する場所について質問しています。 生産 の秘密です。
どのように解決するのですか?
Herokuのプッシュ 環境変数の使用について を利用することを推奨します。
このような設定値を処理するための従来のアプローチは、それらをソースの下に置くことです - ある種のプロパティ ファイルに。これはエラーが発生しやすいプロセスであり、アプリ固有の設定を持つ別の (そして非公開の) ブランチを維持しなければならないことが多いオープン ソース アプリでは特に複雑です。
より良い解決策は、環境変数を使用し、キーをコードから除外することです。従来のホストまたはローカルで作業する場合、bashrc で環境変数を設定できます。Herokuでは、設定変数を使用します。
Foremanと
.env
ファイル Heroku は環境変数のエクスポート、インポート、同期を行うためのうらやましいツールチェーンを提供します。
個人的には、コードと一緒に秘密鍵を保存するのは間違っていると思います。これはソース管理とは根本的に矛盾しています。 コードに外在するサービス . 1つの利点は、開発者が HEAD をクローンして、何の設定もなしにアプリケーションを実行できることです。しかしながら、開発者が歴史的なコードのリビジョンをチェックアウトしたとします。そのコピーには昨年のデータベースパスワードが含まれているため、アプリケーションは今日のデータベースに対して失敗します。
上記の Heroku の方法では、開発者は昨年のアプリケーションをチェックアウトし、今日のキーで構成し、今日のデータベースに対して正常に実行することができます。
関連
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] 割り当て後にリストが予期せず変更されました。その理由と防止策を教えてください。
-
[解決済み] .gitignoreで一部のファイル以外を無視するようにする
-
[解決済み] Gitでユーザー名とパスワードを保存するには?
-
[解決済み] git clone [email protected] "を実行する際に、ユーザ名とパスワードを指定するにはどうすればよいですか?
-
[解決済み] .ideaフォルダーから何をgitignoreするか?
-
[解決済み] Git の履歴から機密性の高いファイルやそのコミットを削除する
-
[解決済み】データベースをgit(バージョン管理)下に置くには?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピロウズ画像色処理の具体的な活用方法
-
pythonを使ったオフィス自動化コード例
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Python: OverflowError: 数学の範囲エラー