Tableau で行レベルセキュリティの使用方法について

2022.12.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

(Click here for English)

はじめに:

Tableau ダッシュボードは、ユーザーに割り当てられた権限に従ってデータを制限するように設定することができます。たとえば、従業員は自分の仕事に関連するデータのみを表示することで、マネージャーは複数の従業員または複数のチームをカバーするためにより多くのデータを表示することができます。これは行レベル セキュリティと呼ばれ、Tableau 開発者は複数のユーザー用のダッシュボードを構築するときにこの問題に対処する必要があります。Tableau でこのような行レベルのデータセキュリティを実現するにはいくつかの方法があります。最も一般的な使用例のいくつかは、このブログでご紹介します。

行レベルセキュリティの使用方法:

1) 手動ユーザフィルター

データを制限する最も簡単な方法は、データを Tableau Server (または Tableau Cloud) にパブリッシュする時に手動でマッピングすることです。以下に示すように、地域の所属に基づいて少数のユーザーに割り当てる必要があるデータセットを想定してみましょう。

Tableau デスクトップから Tableau Server (または Tableau Cloud) にサインインし、トップメニューから「サーバー」>「ユーザーフィルターの作成」> 目的のデータフィールドを選択してユーザーフィルターを作成します。

次のようなポップアップ画面が表示され、所属に基づいて個々のユーザーを制限することができます。

ユーザー フィルターが有効になると、次に示すようにフィールドがデータペインに表示されます。

このフィルターを使用すると、必要なレベルのアクセス許可を作成でき、データはユーザーの権限に基づいてフィルター処理されます。

この手法は、少数のユーザーの場合に行レベルセキュリティを実装するのに簡単な方法です。ただし、すべてのユーザーを手動でマップするには時間と手間がかかり、ワークブックの長期的なメンテナンスは大苦労になります。

2) 外部のデータと結合した動的フィルター

名前の通りこの手法では、外部のテーブルと結合してユーザーの権限は管理することができます。保守が容易な外部テーブルには、ユーザー名とそれに対応する所属国のリストが含まれます。

外部のテーブルと結合することで、行が重複する可能性がある大規模なデータセットが作成されますが、ユーザーフィルターが適用されることで、最終的にユーザーに現れるデータは行レベルで許されたデータになります。この場合は以下に示すように、動的フィルターを計算フィールドとして作成する必要があります。

これをダッシュボードのフィルターとして使用し、「True」の値のみを選択します。

外部テーブルをコントロールすることにより、データを動的に制限でき、ユーザーは関連するデータのみにアクセスすることができます。外部テーブルを元のデータソースと結合すると、データセットが非常に大きくなる可能性があり、データの容量とユーザー数によっては、パフォーマンスの問題が発生する場合があります。

3) ソースでデータをフィルター化

上記2) の手法を使用し、データが Tableau でインポートされる前にユーザーフィルターを有効にすることができます。上記2) のケースで説明したように、ユーザーフィルターを使用します。USERNAME() = [User].

データに接続する時に、データソース画面にはフィルターを追加するオプションがあります。 フィルターの「追加」ボタンをクリックするとポップアップ画面が表示され、以下に示すように、フィルターを適用する列を選択できます。

「条件」タブをクリックし、数式を使用してユーザーに行レベルのデータを許可します。

このフィルターをデータソースで有効にすると、データはフィルター処理され、個々のセキュリティ設定に従ってインポートされます。

このシナリオで必要な予防措置は、データソースを個別にパブリッシュし、ワークブックに埋め込まないようにすることです。データソースが埋め込まれていて、ユーザーがワークブックを Web 編集またはダウンロードする権限を持っている場合は、行レベルのセキュリティが存在しなくなり、フィルターを簡単に削除することでユーザーが全てのデータを見ることができます。

4) データ ポリシーを使用した動的フィルター

Tableau Server および Tableau Cloud のデータポリシーにより、ユーザーは仮想接続のデータ ポリシーを通じて行レベルのセキュリティを実装できます。この手法では、各接続が独自の抽出およびセキュリティ管理ポリシーを持つことを可能にする仮想接続を使用するため、行レベルのデータセキュリティを制御することができます。

データポリシーには、3 つの主要な要素があります。 (A) ポリシー テーブルと呼ばれる、適用対象のテーブル。これらはフィルターされるテーブルです。

(B) ポリシー 列は、データのフィルタリングに使用される列です。データポリシーを使用することにより、データをフィルター処理するために列を指定する必要があります。

(C) ポリシー条件は、クエリの実行時にすべての行に対して評価される式です。この式は、USERNAME() や FULLNAME() などのユーザー関数使用します。条件は真の場合は行はクエリに表示されます。

データポリシーの詳しい説明については、こちらのページをご覧ください

5) データベースへのアクセス時の偽装

いくつかのデータベース (Microsoft SQL Server など) では、行レベルセキュリティーフィルターが組む込まれたビューのみにデータベースのユーザーがアクセスできるように設定することができます。Tableau では、"偽装" と呼ばれる概念を使用してこれを活用できます。

Tableau Server のパブリッシュされたデータ ソースにアクセスできるすべてのユーザーに対して行レベルセキュリティーのフィルターリングを有効にするには、AD 実行アカウントまたは SQL サーバーの埋め込み認証資格情報に、ダッシュボードまたはデータ ソースにアクセスするデータベース内のすべての Tableau ユーザーに対する EXECUTE AS 権限が含まれている必要があります。すべての Tableau ユーザーがユーザーとしてデータベースサーバーに存在し、接続先のビューに対する SELECT 権限を持っている必要があります。

最後に:

ここでは、Tableau で行レベルのデータセキュリティを有効にするためのいくつかの手法について説明しました。ユースケースに応じて利用可能な方法のいずれかによって、Tableau でデータを制限することができます。