2012-11-06 5 views
5

私はエンタープライズプロジェクトのストアドプロシージャの暗号化に取り組んでいます。我々は生産時に保護すべきSPの束を持っています。
sqlprojにある各SPにWITH ENCRYPTIONパラメータを設定することは問題ありません。しかし、私はこのディレクティブをオプションにしたいと思います:私がデバッグモードでプロジェクトをビルドしている場合 - このプロシージャオプションを適用しないでください。実際の主な目標は、開発者向けのデータベースを暗号化なしで取得することですが、プロダクションでは暗号化されたSPを取得します。
ビルドタスクでPowerShellスクリプトを使用すると、生成されたsqlファイルを変更することができます。その結果、暗号化パラメータを持つスクリプトを取得できますが、dacpacとどのように動作するのだろうかと思います。
提案がありますか?ビルドモードに応じたストアドプロシージャのENCRYPTIONオプション

更新:

msbuildと一緒に遊んで過ごしたいくつかの時間後。プロジェクトを再構築した後、我々は暗号化せずにデータベースを作成するためのスクリプトを持って、その結果

<Import Project="$(ExtensionTasksPath)MSBuild.ExtensionPack.tasks" Condition="Exists('$(ExtensionTasksPath)MSBuild.ExtensionPack.dll')" /> 
    <UsingTask TaskFactory="PowershellTaskFactory" TaskName="CreateDecryptedScript" AssemblyFile="$(PowerShellTaskAssembly)" Condition="Exists('$(PowerShellTaskAssembly)')"> 
    <ParameterGroup> 
     <File Required="true" ParameterType="System.String" /> 
     <ResultFile Required="true" ParameterType="System.String" /> 
    </ParameterGroup> 
    <Task> 
     <![CDATA[  
     (Get-Content $file) | Foreach-Object {$_ -replace 'WITH ENCRYPTION', '--WITH ENCRYPTION'} | Set-Content $resultfile  
    ]]> 
    </Task> 
    </UsingTask> 
<Target Name="CreateDecryptedScript" AfterTargets="SqlCore"> 
    <CreateDecryptedScript File="$(OutputPath)$(CreateScriptFileName)" ResultFile="$(OutputPath)$(DecryptedScriptName)" Condition="Exists('$(PowerShellTaskAssembly)')" /> 
</Target> 

:私はSqlCoreターゲットの後PowerShellスクリプトタスクで溶液に(少なくとも今のところ)を停止することを決めました。

しかし、プロジェクトから呼び出されたpublishはこのようなことを強制しません。私たちはすべてのSPを暗号化で変更します。

+0

SPを変更するポストデプロイメントスクリプトがこのトリックを行う可能性があります。 –

+0

@ aclear16はい、私はそれについて考えていましたが、合理的な解決策は見つかりませんでした。 –

+0

"WITH ENCRYPTION"の代わりにプロジェクトレベルの変数を追加することもできます。あなたのdev環境のためにこれを空の文字列またはコメント行として追加してください。暗号化する環境の場合は、値に「WITH ENCRYPTION」を使用します。あなたの公開プロフィールにそれらを設定してください。 –

答えて

2

"暗号化された"ストアドプロシージャを解読するのは簡単です。私は、あなたがそれらを暗号化することを気にしないことをお勧めします。

あなたがそれらを暗号化する必要がある場合、私はすべて暗号化されたストアドプロシージャ、一つ一つを復号化DEVにおけるポスト配備ステップを示唆しています。このようなステップは、sp_execsqlとリンクの情報を使って簡単に作成できます。

+0

はい、これはうまくいく方法ですが、私はまだ開発環境でSPの操作を必要としない柔軟なソリューションを探しています。 –

+1

私はあなたが私を誤解したと思います。私はそれらをまったく暗号化しないことを意味します - それは時間の無駄です。 – Ben

+0

オハイオ州..私は参照してください。しかし、これは私の決定ではありません。残念ながら私はまだSPを暗号化する必要があります。しかし指してくれてありがとう。 +1) –

関連する問題