セキュリティの概要 (Integration Services)

適用対象:yesSQL Server (サポートされているすべてのバージョン) yes Azure Data Factory の SSIS 統合ランタイム

SQL Server Integration Services では、豊富かつ柔軟なセキュリティ環境を提供できるように、複数の階層でセキュリティが構成されています。 このようなセキュリティの階層では、デジタル署名、パッケージのプロパティ、 SQL Server データベース ロール、およびオペレーティング システム権限が使用されます。 こうしたセキュリティ機能のほとんどは、ID およびアクセス制御のカテゴリに分類されます。

脅威と脆弱性の対策

Integration Services はさまざまなセキュリティ メカニズムを備えていますが、パッケージおよびそのパッケージで作成または使用されるファイルが悪用される可能性はあります。

次の表では、リスクの種類と、各リスクを軽減するために必要な予防的措置について説明します。

脅威または脆弱性 定義 対応策
[パッケージ ソース] パッケージのソースは、パッケージを作成した個人または組織です。 不明なソースや信頼されていないソースのパッケージを実行することは危険な場合があります。 デジタル署名を使用してパッケージのソースを特定し、既知の信頼されているソースのパッケージだけを実行します。 詳細については、「 デジタル署名を使用してパッケージのソースを特定する」を参照してください。
パッケージの内容 パッケージの内容には、パッケージの要素とそのプロパティが含まれます。 プロパティには、パスワードなどの機密データや接続文字列を含めることができます。 SQL ステートメントなどのパッケージ要素によって、データベースの構造が明らかにされる場合があります。 次の手順を実行して、パッケージとその内容へのアクセスを制御します。

1) パッケージ自体へのアクセスを制御するには、 SQL Server のインスタンスの msdb データベースに保存されているパッケージに SQL Serverのセキュリティ機能を適用します。 ファイル システムに保存されているパッケージには、アクセス制御リスト (ACL) など、ファイル システムのセキュリティ機能を適用します。

2) パッケージの内容へのアクセスを制御するには、パッケージの保護レベルを設定します。

詳細については、「セキュリティの概要 (Integration Services)」と「パッケージ内の機微なデータへのアクセス制御」を参照してください。
パッケージ出力 構成、チェックポイント、およびログ記録を使用するようパッケージを構成すると、パッケージの外部にこの情報が格納されます。 パッケージに格納されない情報に機密データが含まれている場合があります。 SQL Server データベース テーブルに保存される構成およびログを保護するには、 SQL Server のセキュリティ機能を使用します。

ファイルへのアクセスを制御するには、ファイル システムで使用可能なアクセス制御リスト (ACL) を使用します。

詳細については、「 パッケージで使用されるファイルへのアクセス

ID に関する機能

アクセス制御に関する機能をパッケージに実装することにより、次の目的を達成できます。

信頼できるソースのパッケージのみを開いて実行します

信頼できるソースのパッケージのみを開いて実行するには、まずパッケージのソースを特定する必要があります。 ソースは、証明書を使用してパッケージに署名することによって特定できます。 その後、パッケージを開いたり実行したりする際には、 Integration Services で、デジタル署名が存在するかどうか、および有効かどうかを確認することができます。 詳細については、「 デジタル署名を使用してパッケージのソースを特定する」を参照してください。

アクセス制御に関する機能

アクセス制御に関する機能をパッケージに実装することにより、次の目的を達成できます。

認証済みのユーザーのみがパッケージを開いて実行するようにします

認証済みのユーザーのみがパッケージを開いて実行するには、次の情報へのアクセスを制御する必要があります。

  • パッケージの内容、特に機微なデータ

  • SQL Serverに格納されているパッケージおよびパッケージの構成

  • ファイル システムに格納されているパッケージおよび関連ファイル (構成ファイル、ログ、チェックポイント ファイルなど)。

  • Integration Services サービス、およびサービスによって SQL Server Management Studioに表示されるパッケージに関する情報。

パッケージの内容へのアクセスの制御

パッケージの内容へのアクセスを制限するために、パッケージの ProtectionLevel プロパティを設定してパッケージを暗号化できます。 このプロパティは、パッケージで必要な保護レベルに設定できます。 たとえば、チーム開発環境では、パッケージに関する作業を行っているチーム メンバーだけが知っているパスワードを使用して、パッケージを暗号化できます。

パッケージの ProtectionLevel プロパティを設定すると、 Integration Services は機微なプロパティを自動的に検出し、指定されたパッケージ保護レベルに応じてこれらのプロパティを処理します。 たとえば、パッケージの ProtectionLevel プロパティを、機微な情報がパスワードで暗号化されるレベルに設定します。 このパッケージでは、 Integration Services によってすべての機微なプロパティの値が自動的に暗号化されます。正しいパスワードを指定しないと、対応するデータは表示されません。

通常、 Integration Services では、パスワードや接続文字列などの情報がプロパティに含まれている場合、またはタスクによって生成された XML ノードや変数にプロパティが対応する場合、このようなプロパティは機微なプロパティとして扱われます。 Integration Services でプロパティが機微と見なされるかどうかは、接続マネージャーやタスクなど、 Integration Services コンポーネントの開発者がプロパティを機微として指定したかどうかによって決まります。 機微と見なされているプロパティの一覧では、ユーザーはプロパティを追加することも削除することもできません。カスタム タスク、接続マネージャー、またはデータ フロー コンポーネントを作成する場合は、 Integration Services で機微なデータとして扱う必要のあるプロパティを指定できます。

詳しくは、「 Access Control for Sensitive Data in Packages」をご覧ください。

パッケージへのアクセスの制御

Integration Services パッケージは、 SQL Serverのインスタンス内の msdb データベースに保存するか、.dtsx というファイル名拡張子の付いた XML ファイルとしてファイル システムに保存することができます。 詳細については、「 パッケージを保存する」を参照してください。

msdb データベースへのパッケージの保存

パッケージを msdb データベースに保存すると、サーバー レベル、データベース レベル、およびテーブル レベルのセキュリティを実現できます。 msdb データベースでは、 Integration Services パッケージは sysssispackages テーブルに格納されます。 パッケージは、msdb データベースの sysssispackages テーブルと sysdtspackages テーブルに保存されるため、msdb データベースのバックアップ時に自動的にバックアップされます。

SQL Server msdb データベースに格納されるパッケージは、 Integration Services のデータベース レベルのロールを適用して保護することもできます。 Integration Services には、パッケージへのアクセスを制御するための、db_ssisadmin、db_ssisltduser、および db_ssisoperator というデータベース レベルの 3 つの固定ロールがあります。 各パッケージにはリーダー ロールおよびライター ロールを関連付けることができます。 また、 Integration Services パッケージで使用する、データベース レベルのカスタム ロールを定義することもできます。 ロールは、 SQL Serverインスタンス内の msdb データベースに保存されるパッケージにのみ実装できます。 詳細については、「Integration Services のロール (SSIS Service)」を参照してください。

ファイル システムへのパッケージの保存

パッケージを msdb データベースではなくファイル システムに格納する場合は、パッケージ ファイル、およびパッケージ ファイルが格納されるフォルダーをセキュリティで保護してください。

パッケージで使用するファイルへのアクセスの制御

構成、チェックポイント、およびログ記録を使用するように構成されているパッケージでは、パッケージの外部に格納される情報が生成されます。 この情報は重要な場合があるため、保護する必要があります。 チェックポイント ファイルはファイル システムにしか保存できませんが、構成とログはファイル システム、または SQL Server データベースのテーブルに保存できます。 SQL Server に保存される構成とログは SQL Server のセキュリティの対象ですが、ファイル システムに書き込まれる情報のセキュリティには別の方法が必要です。

詳細については、「 パッケージで使用されるファイルへのアクセス」を参照してください。

パッケージの構成の安全な格納

パッケージの構成は、 SQL Server データベースのテーブル、またはファイル システムに保存できます。

構成は、msdb データベースだけでなく、すべての SQL Server データベースに保存できます。 このため、パッケージ構成のリポジトリとして機能するデータベースを指定できます。 また、構成を格納するテーブルの名前を指定すると、 Integration Services は正しい構造のテーブルを自動的に作成します。 構成をテーブルに保存すると、サーバー レベル、データベース レベル、およびテーブル レベルのセキュリティを実現できます。 さらに、 SQL Server に保存した構成は、データベースのバックアップ時に自動的にバックアップされます。

構成を SQL Serverではなくファイル システムに格納する場合は、パッケージ構成ファイルが格納されるフォルダーをセキュリティで保護してください。

構成の詳細については、「 パッケージ構成」を参照してください。

Integration Services サービスへのアクセスの制御

SQL Server Management Studio では、格納されているパッケージの一覧を表示する際に SQL Server サービスが使用されます。 権限のないユーザーが、ローカル コンピューターまたはリモート コンピューターに格納されているパッケージに関する情報を参照してプライベート情報を取得できないようにするには、 SQL Server サービスを実行するコンピューターへのアクセスを制限します。

詳細については、「 Integration Services サービスへのアクセスの制御」を参照してください。

パッケージで使用されるファイルへのアクセス

パッケージに格納されないファイルは、パッケージ保護レベルでは保護されません。 このようなファイルには、次のファイルが含まれます。

  • 構成ファイル

  • チェックポイント ファイル

  • ログ ファイル

特に機密情報が含まれている場合、これらのファイルは個別に保護する必要があります。

構成ファイル

ログイン情報やパスワード情報などの機密情報が構成に含まれている場合は、その構成を SQL Serverに保存することを検討するか、アクセス制御リスト (ACL) を使用して、ファイルを保存する場所またはフォルダーへのアクセスを制限し、特定のアカウントにのみアクセスを許可する必要があります。 通常は、パッケージの実行を許可するアカウント、およびパッケージの管理とトラブルシューティング (構成の内容、チェックポイント、およびログ ファイルの確認) を行うアカウントにアクセス権を許可します。 SQL Server では、サーバー レベルおよびデータベース レベルでの保護により、さらに堅牢なセキュリティが提供されます。 構成を SQL Serverに保存するには、 SQL Server 構成の種類を使用します。 ファイル システムに保存するには、XML 構成の種類を使用します。

詳細については、「 パッケージ構成」、「 パッケージ構成を作成する」、および「 SQL Server インストールにおけるセキュリティの考慮事項」を参照してください。

チェックポイント ファイル

同様に、パッケージで使用するチェックポイント ファイルに機密情報が含まれている場合も、アクセス制御リスト (ACL) を使用して、ファイルが格納されている場所またはフォルダーを保護する必要があります。 チェックポイント ファイルは、パッケージの進行状況に関する現在の状態情報と変数の現在の値を格納します。 たとえば、電話番号を格納するカスタム変数がパッケージに含まれることがあります。 詳細については、「 Restart Packages by Using Checkpoints」を参照してください。

ログ ファイル

ファイル システムに書き込まれるログ エントリも、アクセス制御リスト (ACL) を使用して保護する必要があります。 ログ エントリは、 SQL Server テーブルに保存して SQL Server セキュリティで保護することもできます。 ログ エントリには機密情報が含まれることがあります。たとえば、パッケージに含まれる SQL 実行タスクによって、電話番号を参照する SQL ステートメントが構築される場合、SQL ステートメントのログ エントリにも電話番号が含まれています。 また、SQL ステートメントにより、データベース内のテーブル名や列名に関するプライベートな情報が明らかにされる場合もあります。 詳細については、「 Integration Services (SSIS) のログ記録」を参照してください。

Integration Services サービスへのアクセス

パッケージの保護レベルによって、パッケージを編集および実行できるユーザーを制限できます。 サーバーで現在実行中のパッケージの一覧を表示できるユーザー、および SQL Server Management Studioで現在実行中のパッケージを停止できるユーザーを制限するには、追加の保護が必要です。

SQL Server Management Studio では、実行中のパッケージを一覧表示する際に SQL Server サービスが使用されます。 Windows の Administrators グループのメンバーは、実行中のすべてのパッケージを表示および停止できます。 Administrators グループのメンバーではないユーザーは、本人が起動したパッケージのみを表示および停止できます。

SQL Server サービス (特に、リモート フォルダーの列挙を行う可能性のある SQL Server サービス) を実行するコンピューターへのアクセスを制限することは重要です。 認証を受けたユーザーであれば、パッケージの列挙を要求できます。 サービスが見つからない場合でも、サービスはフォルダーを列挙します。 これらのフォルダー名が、悪意あるユーザーに悪用される場合があります。 管理者がリモート コンピューターのフォルダーを列挙できるようにサービスを設定した場合、ユーザーも通常は参照できないフォルダー名を参照することができます。

セキュリティに関連する特定のタスクを実行する方法を示すトピックへのリンクを次に示します。