次の方法で共有


レッスン 2: 行レベル セキュリティの属性の作成

一般に、行レベルのセキュリティを定義するには、ユーザーのログイン情報を使用して、どの行を表示するかを決定します。このレッスンでは、ユーザーのログイン情報に基づいてデータをフィルター処理する Employee エンティティ内に属性を作成します。フィルターを作成してからそのフィルターを式として編集し、GetUserID 関数を使用できるようにします。

注意

このレッスンは、コンピューターで Business Intelligence Development Studio を開き、ウィンドウにレポート モデルを表示していると想定して開始します。

式として編集するフィルター処理された属性を作成するには

  1. ツリー ビューで、[Employee] エンティティを選択します。

    リスト ビューに Employee 属性が表示されます。

  2. [Employee] を右クリックし、[新規作成] をポイントして [フィルター] をクリックします。

    [データのフィルター選択] ダイアログ ボックスが開きます。

  3. [フィールド] ボックスの一覧で、[Login ID2] をダブルクリックします。

    レッスン 1 で作成した [Login ID2] フィールドを使用するフィルター条件がフィルターに追加されます。

  4. フィルターで [Login ID2] を右クリックして [式として編集] をクリックします。

    [式の定義] ダイアログ ボックスが開き、Login ID2=Empty という式が表示されます。

  5. [式] ボックスで、[Empty] という語を選択します。

  6. [関数] タブをクリックし、[情報] ノードを展開します。

  7. [GetUserID] 関数をダブルクリックします。

    Empty が、GetUserID() に置き換えられます。

  8. [OK] をクリックします。

    [式の定義] ダイアログ ボックスが閉じ、フィルター句に Login ID2=GetUserID と表示されます。

  9. もう一度 [OK] をクリックします。

    [データのフィルター選択] ダイアログ ボックスが閉じ、NewFilter 属性がリスト ビューに表示されます。次に、属性の名前を変更します。

属性の名前を変更するには

  1. リスト ビューで、[NewFilter] 属性を右クリックし、[名前の変更] を選択します。

  2. 「UserIDFilter」と入力します。

    次に、必要な属性のプロパティを割り当てます。

属性のプロパティを変更するには

  1. リスト ビューで、[UserIDFilter] 属性を選択します。

  2. [プロパティ] ウィンドウで、[IsFilter] プロパティを探します。

  3. [IsFilter] の値が [True] であることを確認します。

  4. [Hidden] プロパティを見つけます。

  5. [Hidden] の下矢印をクリックし、[True] を選択します。

    Hidden プロパティを True に変更すると、モデル ユーザーがモデルを使用してレポートを作成するときに、この属性が表示されなくなります。この属性は、セキュリティを割り当てる際のフィルターとして使用します。したがって、ユーザーが自分のレポートを作成するときは、その属性を参照する必要がありません。

  6. リスト ビューで、[Login ID2] 属性を選択します。

  7. [プロパティ] ウィンドウで、[Nullable] プロパティを探します。

    Login ID2 属性では、Nullable プロパティが True に設定されているため、UserIDFilter 属性では Nullable プロパティが True に設定されている必要があります。ただし、これはセキュリティ フィルターとして使用するための必須プロパティではありません。

  8. [Nullable] の下矢印をクリックし、[True] を選択します。

属性をセキュリティ フィルター コレクションに割り当てるには

  1. ツリー ビューで、[Employee] エンティティを選択します。

  2. [プロパティ] ウィンドウで、[SecurityFilters] プロパティを探します。

  3. [SecurityFilters] プロパティを選択し、参照ボタン ([…]) をクリックします。

    [属性参照コレクション エディター] ダイアログ ボックスが開きます。

  4. [追加] をクリックします。

  5. [セキュリティ フィルター属性] ダイアログ ボックスが表示されます。

  6. [エンティティ] の一覧で、[Employee] エンティティが選択されていることを確認します。

  7. [フィールド] 一覧で、[UserIDFilter] 属性を選択します。

  8. [OK] をクリックし、再度 [OK] をクリックします。

    次に、モデルに加えた変更を保存し、そのモデルをレポート サーバーに再配置します。

レポート モデルを保存して配置するには

  1. [ファイル] メニューの [すべてを保存] をクリックします。

  2. ソリューション エクスプローラーで [Adventure Works Model] プロジェクトを右クリックして、[配置] をクリックします。

    モデルがレポート サーバーに配置されます。

    重要な注意事項重要

    モデルの配置に成功したことを確認するには、[エラー一覧] タブを表示します。エラーが発生した場合は、次に進む前に問題のトラブルシューティングを行う必要があります。

次の手順

ここでは、属性を作成し、SecurityFilters コレクションに割り当てました。次に、SQL Server Management Studio でモデル アイテム セキュリティを有効にする必要があります。「レッスン 3: レポート マネージャーを使用した行レベルのセキュリティの有効化」を参照してください。