FIPS が有効な Windows で SSIS 2012 パッケージを実行するときのエラー

適用対象: SQL Server 2012 EnterpriseSQL Server 2016 DeveloperSQL Server 2016 Enterprise

現象


これは、Microsoft SQL Server 2012 または 2016 を、Federal Information Processing Standard (FIPS) が有効なサーバーで実行している場合に発生する問題です。データ フロー スクリプト コンポーネントを含む Microsoft SQL Server Integration Service パッケージを実行または検証すると、次のエラー メッセージが表示されます。

System.InvalidOperationException: この実装は Windows プラットフォーム FIPS 検証暗号化アルゴリズムの一部ではありません。at System.Security.Cryptography.MD5 CryptoserviceProvider..ctor()
注: この問題は、次のレジストリ サブキーが 1 に設定されている場合に発生します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy

原因


この問題が起こるのは、SSIS で MD5 アルゴリズムを使用しているためです。MD5 アルゴリズムは FIPS に準拠していません。

解決方法


Service Pack の情報

この問題は、SQL Server 2016 Service Pack 1 (SP1) で解決されています。SQL Server 2016 build versions (英語情報) を参照してください。

SQL Server 2012 でこの問題を解決するには、SQL Server 2012 の Service Pack 3 を入手してください。

SQL Server 2012 Service Pack 3 (SP3) の詳細については、bugs that are fixed in SQL Server 2012 Service Pack 3 (英語情報) を参照してください。

回避策


この問題を回避するには、以下のいずれかの方法を試します。

  • サーバーの FIPS ポリシーを無効にします。この手順については、次の TechNet Web サイトの「To configure FIPS policy settings」を参照してください。注:

    • 新しい設定を有効にするには、アプリケーションを再起動する必要があります。
    • この設定は、Windows Server の次のレジストリ値に影響します。

      HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabled
      このレジストリ値は、現在の FIPS 設定を反映しています。この設定が有効になっている場合は、値が 1 です。無効になっている場合は、0 です。
  • スクリプト コンポーネントの代わりに、他の Microsoft .NET ソリューションを使用します。

    注: MD5 アルゴリズムは、データ フロー スクリプト コンポーネント内にハードコードされています。そのため、このスクリプト コンポーネントを変更することはできません。

詳細


SQL Server Integration Services は、暗号モジュールのセキュリティ要件である FIPS 140-2 に準拠していない、Windows 暗号化アルゴリズムをいくつか使用します。たとえば、SSIS 2012 は MD5 を使用しています。MD5 はセキュリティに使用されないハッシュ値を計算するためのアルゴリズムであり、FIPS 140-2 に準拠していません。FIPS 140-2 は、米国政府とカナダ政府が、暗号化を実装する製品のセキュリティ レベルを検証するために使用するセキュリティ規格です。

状況


マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。