KB2890052 - SQL Server 2012 または SQL Server 2014 の Windows グループでは Integration Services カタログのアクセス許可が機能しない

適用先
SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

現象

たとえば次のようなシナリオを考えてみます。

  • Microsoft SQL Server 2012 または SQL Server 2014 で Integration Services カタログと SSISDB カタログのインスタンスを実行する。

  • Windows グループのメンバーにアクセス許可を付与して、SSIS カタログ フォルダー、プロジェクト、または環境で保護可能なアイテムにアクセスできるようにします。

    注: アクセス許可は、次のいずれかの方法で付与できます。

    • Management Studio を使用している。 これを行うには、Integration Services カタログでオブジェクトを右クリックし、[ プロパティ] を選択し、[ アクセス許可] ページでグループを参照し、グループを追加して、そのグループのアクセス許可を選択します。
    • 次のストアド プロシージャを呼び出します。
      [SSISDB].[catalog].[grant_permission]
  • Windows グループのメンバーである Windows ユーザーが、Management Studio またはストアド プロシージャを使用して、Integration Services カタログの SSISDB データベースのパッケージを表示および実行しようとします。

このシナリオでは、ユーザーはアクセス許可を付与されたパッケージを表示できず、それらのパッケージを検証または実行できません。

原因

この問題は、SSISDB 内部ビューの問題が原因で発生します。 これにより、Windows グループ メンバーシップを使用してアクセス許可が付与された場合に、ユーザーが期待される有効なアクセス許可を持たなくなります。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで最初に修正されました。

SQL Server 2014 用の累積的な更新プログラム 1 /en-us/help/2931693

SQL Server 2012 SP1 用の累積的な更新プログラム 7 /en-us/help/2894115

SQL Server 用の累積的な更新プログラムについて

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

      

回避策

この問題を回避するには、さまざまなユーザーの Windows グループを使用して SSIS のセキュリティ保護可能なモジュールにアクセスしないでください。 代わりに、SQL Server でユーザー定義のデータベース ロールを使用して、必要な Windows ユーザーの一覧をカプセル化し、そのデータベース ロールにアクセス許可を割り当てます。

回避策の手順

手順は次のとおりです。

  1. SQL Server のインスタンスに必要な Windows ログインを作成し、ユーザーに SSISDB データベースへのアクセス権を与えます。 たとえば、[ セキュリティ] を選択し、[ ログイン]、[ 新しいログイン] の順にクリックすることで、Management Studio を使用できます。 または、Windows ユーザー ログオンごとに次のスクリプトを使用することもできます。

    USE master
    GO
    WINDOWS から DEFAULT_DATABASE=master でログイン ドメイン\ユーザー名を作成する
    GO
    SSISDB を使用する
    GO
    ログイン ドメイン\ユーザー名用のユーザー ドメイン\ユーザー名を作成する
    GO

  2. SSISDB データベースに、ssis_users などのユーザー定義データベース ロールを作成します。 たとえば、[データベース] に移動し、[SSISDB]、[セキュリティ]、[ロール]、[データベース ロール]、[新しいデータベース ロール] の順にクリックすることで、Management Studio を使用できます。 または、次のスクリプトを使用できます。

    SSISDB を使用する
    GO
    ロール ssis_usersの作成
    GO

  3. SSISDB 内の目的のユーザーをロール ssis_usersに追加します。 たとえば、[ データベース]、[ SSISDB]、[ セキュリティ]、[ ロール]、[ データベース ロール]、[ロール メンバー]、[ 追加] の順にクリックすることで、Management Studio を使用できます。 または、次のスクリプトを使用できます。

    SSISDB を使用する
    GO
    ロールの変更 ssis_users メンバー ドメイン\ユーザー名を追加する
    GO

  4. Integration Services カタログでセキュア オブジェクトを右クリックし、[ プロパティ]、[アクセス許可] ページの [ 参照 ] をクリックしてデータベース ロールをアクセス許可に追加し、次のように目的の明示的なアクセス許可で [付与 ] または [拒否] を選択します。

    目的の明示的なアクセス許可で [付与] または [拒否] を選択する

注: これらのアクセス許可では、SSIS パッケージを正常に実行するには不十分な場合があります。 各 SSIS パッケージはカスタム設計であり、特定のサーバー、データベース、または共有にアクセスして SSIS パッケージを正常に検証または実行するために、追加の特定の要件がある場合があります。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

詳細については、Microsoft Developer Network (MSDN) Web サイトにある以下のトピックを参照してください。

SSIS カタログ
        
         [フォルダーのプロパティ] ダイアログ ボックス
        
         [プロジェクト プロパティ] ダイアログ ボックス
        
         [環境プロパティ] ダイアログ ボックス
        
        
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語を参照してください。