2012-02-27 9 views
11

TeamCityを使用して継続的な統合環境を展開しています。 CIプロセスを進め、継続的な導入に移行するにつれて、運用パスワードの管理方法に問題が生じました。 configの他の変更については、Web.Configトランスフォームを使用します。しかし、私は本当にビルドプロファイルでプロダクションパスワードを焼きたいとは思わない。継続的な配備におけるパスワードの管理

CI/CDを入手する前に、Web.configを使用し、aspnet_regiisを使用して接続文字列を復号化し、パスワードを変更してから再暗号化します。明らかに、これはエラーが発生しやすく、CI/CDの精神では全くありません。

私は基本的には、展開スクリプトで何かを使ってファイルの接続文字列セクションを書き換えてから暗号化するという考え方がいくつかありましたが、共通の問題である必要があります。一般的に認められている解決策でなければなりません。しかし、これまでのところ、私はそれを見つけることができません。 「正しい道」はありますか?

ありがとうございます!

+1

もしあなたがCDに行くなら、明らかにあなたが構築している/展開中の何かがパスワード(あるいはパスワードのプロキシ)を知っていなければなりません。 –

+0

[TeamCityをプライベートファイルで設定するには?](http://stackoverflow.com/questions/6721000/how-to-configure-teamcity-with-private-files) –

+1

@Damien_The_Unbelieverはい、でも可能ですあなたのVCSとは異なる人によってアクセスされるTeamCityサーバーである必要があります。 – thelem

答えて

12

TeamCity 7.0から入手可能なソリューションの1つは、型付きパラメータを使用することです(http://confluence.jetbrains.net/display/TCD7/What%27s+New+in+TeamCity+7.0#What%27sNewinTeamCity7.0 - 型付けされたビルドパラメータ)。パスワードをTeamCityで定義し、ビルドスクリプトに何らかの形で渡すことができます(環境変数またはビルドスクリプトのプロパティとして)。

TeamCityは、このようなパラメータの値を独自の設定ファイルとスクランブルされた形式のデータベースに格納します。ビルドログまたはビルドパラメータページにパスワードが表示された場合は、*に置き換えられます。

+0

Rawパスワードがログに記録され、TeamCityサイトでさえ「パスワードを入力するようにパラメータを設定しても、未処理の値を取得できないという保証はありません。' 私が直面した状況:git pushが失敗すると、'要求されたURLが返されました:エラー:400 Bad Request access 'という行が表示されます。だからあなたが適切な方法で入力した場合でも、ここで****と置き換えられないユーザー/パスワード情報のパスワードでgit urlを使用する場合 –

2

設定変換を使用します。暗号化/復号化を処理できる独自の変換を構築することもできます。最も簡単な方法は、release.web.config内のプロダクション文字列を暗号化し、変換文字列を置き換える処理を行うことです。

http://msdn.microsoft.com/en-us/library/dd465318.aspx

http://sedodream.com/2010/09/09/ExtendingXMLWebconfigConfigTransformation.aspx

これはます。aspnet_regiisを呼び出すためにポストビルドイベントを使用し、あなたのために動作しない場合。設定変換を拡張することを選択した場合は、それを使って何かを行うことができます。あなたがそれらにアクセスできる限り、暗号鍵は月にある可能性があります。

+0

暗号鍵をどこに保存するのが簡単ではないのですか? – oleksii

+0

postbuildイベントはどうですか?私がTeamCityでそれをできるかどうかは分かりませんが、Jenkinsはそれをサポートしています。 – Darthg8r

0

INISの接続文字列を定義できません。彼らは多くを変えますか?私はちょうどサイトのためにそれらをIISに設定して、アプリケーションの一部としてそれらを配備しないと思うか、少なくとも私のIIS設定を優先します。

+2

私は、IISツールがアプリケーションのweb.configファイルを編集するための素敵なフロントエンドを提供したと思っていますが、今すぐ確認できるドキュメントは見つかりません。 – Jacob

+0

継続的な配信/展開を行う場合は、ビルドサーバーがIISの構成も担当する必要があります。これは手作業ではありません。 –

関連する問題