9

本番環境で Azure にデプロイされる ASP.NET MVC 4 プロジェクトがあり、本番環境では SQL Azure データベースを使用しています。私の問題は、SQL Azure データベースに接続するのは、開発中ではなく、運用環境でのみにしたいことと SQL Azure 接続文字列を暗号化する必要があることです。

これで、Azure へのデプロイ時にデータベース接続文字列が置き換えられるように、Web.config 変換によって最初の要件を解決できます。ただし、これを接続文字列の暗号化と組み合わせる方法がわかりませんか? SQL Azure 接続文字列を暗号化し、デプロイ時に開発用接続文字列に置き換えるにはどうすればよいでしょうか? このシナリオのベストプラクティスは大歓迎です:)

4

2 に答える 2

8

ここでの良い解決策は、本番<connectionStrings>セクションをWeb.configに入力して暗号化し、暗号化され<connectionStrings>たセクションを変換ファイル(Web.Release.configなど)に移動して、変換<connectionStrings>時にセクション全体を置き換えるように注釈を付けることです。 。これにより、暗号化された本番接続文字列を使用してWeb.configをデプロイするという目標が達成されます。

Web.configの暗号化方法を理解するために、 「Windows Azureでの接続文字列のセキュリティ保護」のパート1、2、3、および4ガイドに従いました完全な参考のために、他の人も同じことをすることをお勧めします。シナリオを解決するために実行した主な手順の概要を説明します。

<connectionStrings>Web.configのセクションを本番環境の設定で更新した後、 Pkcs12 Protected Configuration Providerをインストールし、 aspnet_regiis.exeを実行してセクションを暗号化しました(プロジェクトディレクトリにあるVisual Studioコマンドプロンプトで)。

aspnet_regiis -pef "connectionStrings" "." -prov "CustomProvider"

CustomProviderまた、 Web.configに次の定義を追加しました。

<configProtectedData>
  <providers>
    <add name="CustomProvider" thumbprint="<your thumbprint here>"
       type="Pkcs12ProtectedConfigurationProvider.Pkcs12ProtectedConfigurationProvider, PKCS12ProtectedConfigurationProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=34da007ac91f901d"/>
  </providers>
</configProtectedData>

その後、暗号化された<connectionStrings>セクションをWeb.Release.config(Azureへの展開時にWeb.configを変換するために使用)に移動し、Web.configの対応するセクションを置き換えるようにセクションに注釈を付けました。

connectionStrings configProtectionProvider="CustomProvider" xdt:Transform="Replace">
...
</connectionStrings>

最後に<connectionStrings>、Web.configの開発セクションを復元しました。このソリューションをテストしたところ、デプロイされたWeb.configに、<connectionStrings>後と同じように暗号化されたセクションが含まれていることがわかりました。

于 2012-08-12T18:06:50.183 に答える
1

web.config ファイル内のセクションを暗号化します。

web.config ファイルのセクションを暗号化する方法については、MSDN を参照してください。

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

あなたの場合に私がセットアップするのは、そのコマンドラインオプションを条件付きでその特定のビルド構成に対してのみ実行する POST ビルドイベントです。

例えば:

if $(ConfigurationName) == Release_Production {path-to-.net-framework}\aspnet_regiis\Aspnet_regiis.exe {your options here}

ビルド後のイベントは単なる DOS コマンドであることを忘れないでください。() を使用して、複数のコマンドをスコープすることもできます。範囲を指定しない限り、if はその 1 行でのみ機能します。標準のコマンドライン制限。設定に問題がある場合は、ここにコメントしてください。ただし、コマンドラインを投稿してください。

于 2012-08-12T12:10:56.187 に答える