パッケージの保護レベルの設定
Integration Services パッケージ内のデータを保護するために、保護レベルを設定できます。保護レベルを使用すると、パッケージ内の機密データのみを保護することも、すべてのデータを保護することもできます。さらに、パスワードまたはユーザー キーでこのデータを暗号化したり、データベースを使用してデータを暗号化したりすることもできます。また、パッケージに使用する保護レベルは静的である必要はなく、パッケージのライフ サイクルの各段階で変更できます。多くの場合、開発中に保護レベルを 1 つ設定し、パッケージを配置した時点で別の保護レベルを設定します。
注意 |
---|
このトピックで説明する保護レベルに加え、msdb データベースに保存されるパッケージは、固定データベース レベル ロールを使用して保護することもできます。Integration Services には、パッケージに権限を割り当てるための、db_ssisadmin、db_ssisltduser、および db_ssisoperator の 3 つの固定データベース レベル ロールがあります。詳細については、「Integration Services のロールの使用」を参照してください。 |
機密情報の定義
Integration Services パッケージでは、以下の情報が機微として定義されます。
接続文字列のパスワード部。すべてを暗号化するオプションを選択した場合は、接続文字列全体が機微であると見なされます。
タスクによって生成され、「機微」とタグ付けされている XML ノード。XML ノードのタグ付けは Integration Services によって制御されるので、ユーザーが変更することはできません。
「機微」とマークされている任意の変数。変数のマーク付けは、Integration Services によって制御されます。
Integration Services でプロパティが機微と見なされるかどうかは、接続マネージャやタスクなど、Integration Services コンポーネントの開発者がプロパティを機微として指定したかどうかによって決まります。機微と見なされているプロパティの一覧では、ユーザーはプロパティを追加することも削除することもできません。
暗号化の使用
パッケージ保護レベルに採用されている暗号化処理は、マイクロソフトの暗号化 API (CryptoAPI) の一部である Microsoft Data Protection API (DPAPI) を使用して実行されます。
パスワードを使用してパッケージを暗号化するパッケージ保護レベルでは、パスワードも指定する必要があります。パスワードを使用しないレベルから使用するレベルに保護レベルを変更すると、パスワードを指定するよう要求されます。
また、Integration Services では、パスワードを使用する保護レベルに対しては、.NET Framework クラス ライブラリ (FCL) で提供される、キーの長さが 192 ビットの Triple DES 暗号アルゴリズムを使用しています。
保護レベルについて
Integration Services で提供される保護レベルを次の表に示します。かっこで囲まれた値は、DTSProtectionLevel 列挙の値です。これらの値は、Business Intelligence Development Studio でパッケージを操作するときにパッケージのプロパティを構成するために使用する [プロパティ] ウィンドウに表示されます。
保護レベル |
説明 |
---|---|
[機微なデータを保存しない] (DontSaveSensitive) |
パッケージの保存時、パッケージ内の機微なプロパティの値は出力されません。この保護レベルでは暗号化は行われません。その代わり、「機微」とマークされたプロパティは、パッケージと一緒に保存されません。その結果、他のユーザーが機微なデータを利用することはできません。異なるユーザーがパッケージを開いた場合は、機微な情報が空白と置き換えられます。したがって、ユーザーは、機微な情報を指定する必要があります。 dtutil ユーティリティ (dtutil.exe) で使用する場合、この保護レベルに対応する値は 0 です。 |
[すべてのデータをパスワードで暗号化する] (EncryptAllWithPassword) |
パスワードを使用してパッケージ全体を暗号化します。暗号化処理には、パッケージを作成またはエクスポートしたときにユーザーによって指定されたパスワードが使用されます。パッケージを SSIS デザイナで開いたり、dtexec コマンド プロンプト ユーティリティを使用して実行したりするには、ユーザーはパッケージ パスワードを指定する必要があります。パスワードを指定しないと、パッケージにアクセスしたりパッケージを実行したりできません。 dtutil ユーティリティで使用する場合、この保護レベルに対応する値は 3 です。 |
[すべてのデータをユーザー キーで暗号化する] (EncryptAllWithUserKey) |
現在のユーザー プロファイルに基づいたキーを使用してパッケージ全体を暗号化します。パッケージを SSIS デザイナで開いたり、dtexec コマンド プロンプト ユーティリティを使用して実行したりできるのは、パッケージを作成またはエクスポートしたユーザーだけです。 dtutil ユーティリティで使用する場合、この保護レベルに対応する値は 4 です。
注意
ユーザー キーを使用する保護レベルに対しては、Integration Services では DPAPI 標準を使用しています。DPAPI の詳細については、MSDN ライブラリ (https://msdn.microsoft.com/library) を参照してください。
|
[機微なデータをパスワードで暗号化する] (EncryptSensitiveWithPassword) |
パスワードを使用して、パッケージ内の機微なプロパティの値だけを暗号化します。暗号化処理には、DPAPI が使用されます。機微なデータはパッケージの一部として保存されます。ただし、このデータは、パッケージを作成またはエクスポートしたときに現在のユーザーによって指定されたパスワードを使用して暗号化されます。パッケージを SSIS デザイナで開くには、ユーザーはパッケージ パスワードを指定する必要があります。ユーザーがパスワードを指定しなかった場合、パッケージは機微なデータが取り除かれて開かれます。したがって、現在のユーザーは、機微なデータの新しい値を指定する必要があります。パスワードを指定しないでパッケージを実行しようとした場合、パッケージの実行は失敗します。パスワードとコマンド ラインの実行の詳細については、「dtexec ユーティリティ」を参照してください。 dtutil ユーティリティで使用する場合、この保護レベルに対応する値は 2 です。 |
[機微なデータをユーザー キーで暗号化する] (EncryptSensitiveWithUserKey) |
現在のユーザー プロファイルに基づいたキーを使用して、パッケージ内の機微なプロパティの値だけを暗号化します。同じプロファイルを使用している同じユーザーだけがパッケージを読み込むことができます。異なるユーザーがパッケージを開いた場合は、機微な情報が空白と置き換えられます。したがって、現在のユーザーは、機微なデータの新しい値を指定する必要があります。ユーザーがパッケージを実行しようとした場合、パッケージの実行は失敗します。暗号化処理には、DPAPI が使用されます。 dtutil ユーティリティで使用する場合、この保護レベルに対応する値は 1 です。
注意
ユーザー キーを使用する保護レベルに対しては、Integration Services では DPAPI 標準を使用しています。DPAPI の詳細については、MSDN ライブラリ (https://msdn.microsoft.com/library) を参照してください。
|
[暗号化をサーバー ストレージに依存する] (ServerStorage) |
SQL Server データベース ロールを使用して、パッケージ全体を保護します。このオプションは、パッケージを SQL Server msdb データベースに保存する場合にのみサポートされます。このオプションは、Business Intelligence Development Studio からパッケージをファイル システムに保存するときはサポートされません。 |
パッケージのライフ サイクルに基づく保護レベルの変更
Business Intelligence Development Studio で初めて SQL ServerIntegration Services パッケージを開発するときは、パッケージの保護レベルを設定します。パッケージの保護レベルは、後でパッケージを配置するとき、SQL Server Management Studio の Integration Services からインポートまたはエクスポートするとき、または Business Intelligence Development Studio から SQL Server、SSIS パッケージ ストア、またはファイル システムにコピーするときに、更新できます。たとえば、作成したパッケージをユーザー キー保護レベル オプションの 1 つを指定してコンピュータに保存している場合、通常はそのパッケージを他のユーザーに渡すときに保護レベルを変更します。そのままでは、相手ユーザーがパッケージを開くことができません。
通常、次に示す手順に従って保護レベルを変更します。
開発中は、パッケージの保護レベルを既定値である EncryptSensitiveWithUserKey のままにします。この設定により、開発者のみがパッケージの機密情報を参照できるようになります。また、EncryptAllWithUserKey または DontSaveSensitive を使用することもできます。
パッケージを配置する時点で、開発者のユーザー キーに依存しない保護レベルに変更する必要があります。したがって、通常は、EncryptSensitiveWithPassword または EncryptAllWithPassword を選択する必要があります。運用環境の運用チームも知っている一時的な複雑なパスワードを割り当てて、パッケージを暗号化します。
パッケージが運用環境に配置されたら、運用チームは、チーム メンバだけが知っている複雑なパスワードを割り当てて、配置されたパッケージを再度暗号化できます。また、EncryptSensitiveWithUserKey または EncryptAllWithUserKey を選択し、パッケージを実行するアカウントのローカルの資格情報を使用して、配置されたパッケージを暗号化することもできます。
|