基本的な考え方は、コードまたはコンパイル済みバイナリに機密値をチェックインしないということです。特に、プロジェクトがオープンソースの場合、実際にはそうすべきではありません。そのためには、いくつかの構成戦略を使用できます。
コード内のプレースホルダー(ハードコードされた値)
コード内のプレースホルダー -提案されたように-これは、コードを変更するのが簡単であるため(コンパイルする必要なしに)動的プログラミング言語で最も健全で最も簡単です。MediaWikiのようにこれを行う多くのオープンソースプロジェクトを見てきましたLocalSettings.php
。
この戦略の欠点は、キーがハードコーディングされていることです。そのため、プログラムがバイナリとして配布されている場合、キーがハードコーディングされていても、特にメンテナンスが容易になりません。
構成テキストファイル
また、設定テキストファイルを実装することでこれを実行できます。つまり、プログラム/アプリケーションは設定ファイルを検索し、そこから値を読み取ります。プレースホルダーを使用してサンプル構成をチェックインできますが、実際の構成はマシンのローカルにあります。
あなたの場合key.conf
、実際のキーでテキストファイルを作成し、プログラムにそのファイルを使用させ、バージョン管理に無視させることができます。役に立つためにkey.conf.example
、偽のキーでテキストファイルをチェックインし、チェックインすることができます。プログラム/アプリケーションがユーザーに正しいエラーメッセージを作成して、正しいファイルに実際のキーを追加するようにしてください。
次のような一部のプログラミング言語には、これを自動的に提供するAPIがあります。
アプリケーションがデータベースアプリの場合は、データベースにキーまたは他の構成変数を配置することを検討してください。上記の構成テキストファイルと同じですが、代わりにキーなどのすべての構成変数をデータベーステーブルに入れます。
設定ビューまたはBack Officeアプリから
プログラムがウィンドウまたはビューを備えたWebアプリケーションである場合、並べ替えの設定ビューを使用して、アプリケーションに構成ファイルを作成させることもできます。そうすれば、上記のようにサンプルの設定ファイルをチェックインする必要はありません。
MediaWiki LocalSettings.php
は、初期インストールプロセスでファイルを自動生成することで同様にこれを解決しました。
確かに、これはバックグラウンドプロセス、サービス、またはデーモンとしてのみ実行されるプログラムのオプションではありません。ただし、これらの個別のGUIプロジェクトを作成して、通常Back Officeアプリケーションと呼ばれるWebアプリで、管理および設定のエントリポイントを作成する理由です。