---
schema_version: "1"
id: cad8a4e431515bfa4f16e3c4afb12dc61f12aec092d2b6252f8ea089ec8eeb6e
title: データベースの行レベル セキュリティ
collection: tableau
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/tableau/current/ja-jp/server-linux/rls_datasource.md
canonical_url: https://help.tableau.com/current/server-linux/ja-jp/rls_datasource.htm
source_site: help.tableau.com
content_type: documentation
content_hash: aa3260b03044230867cddba224cd2d4c83fc81a3387bc0c76873952adfa18d21
description: Use existing database row-level security techniques with Tableau.
---
[メイン コンテンツに進む](#main-content)

# データベースの行レベル セキュリティ

組織で既にデータベースの行レベル セキュリティ (RLS) の構築に力を入れている場合は、次のいずれかの方法を使用して既存の RLS を利用できる可能性があります。データベースのセキュリティ モデルを活用するには、ライブ接続が必要です。さらに、これらの方法は Tableau Cloud では使用できない可能性があります。Tableau Cloud の Tableau ユーザー名は一意のメール アドレスで、通常はデータベース側のユーザー ID ではありません。

組み込み RLS モデルの実装を Tableau での構築に比べて簡単にしたり改善したりする必要はありません。通常、これらの方法は組織が既にこれらのテクノロジに投資し、それを活用しようとしている場合に利用されます。

**注:** Tableau で行レベル セキュリティを実装するために使用できる代替方法については、[Tableau の行レベルのセキュリティ オプションの概要](https://help.tableau.com/current/server-linux/ja-jp/rls_options_overview.htm)を参照してください。

## 偽装 (Microsoft SQL Server)

Microsoft SQL Server (およびいくつかの関連システム) では、Security Junction Table または DBA で構築されたビューのいずれかを使用して、RLS フィルターが組む込まれたビューのみにデータベースのユーザーがアクセスできるように設定できます。Tableau では、"偽装" と呼ばれる概念を使用してこれを活用できます。

MS SQL Server 接続を含む Tableau データ ソースを Tableau Server にパブリッシュする場合に、偽装を使用できる認証オプションが 2 つあります。表示されるメニューは、ネットワーク認証を使用して SQL Server にログインしたか、ユーザー名とパスワードの認証資格情報を入力したかによって異なります。

Tableau Server のパブリッシュされたデータ ソースにアクセスできるすべてのユーザーに対して RLS フィルターリングを有効にするには、AD 実行アカウントまたは SQL サーバーの埋め込み認証資格情報に、ダッシュボードまたはデータ ソースにアクセスするデータベース内のすべての Tableau ユーザーに対する EXECUTE AS パーミッションが含まれている必要があります。すべての Tableau ユーザーがユーザーとしてデータベース サーバーに存在し、接続先 (および RLS の適用先) のビューに対する SELECT 権限を持っている必要があります。要件の包括的なリストについては、[擬装の要件](https://help.tableau.com/current/server-linux/ja-jp/impers_requ.htm)を参照してください。

## Kerberos と制約付き委任

Kerberos を使用する Tableau Server 内の制約付き委任は、Tableau Server がワークブックのビュー、またはビューアーに代わってクエリを実行するビューの Kerberos 認証資格情報を使用できるという点で偽装と同様の動作を行うため、データベースに RLS が設定されている場合、ワークブックのビューアーには自分のデータのみが表示されます。

Kerberos 委任がサポートされているデータベースの包括的なリストを表示するには、[Kerberos 委任の有効化](https://help.tableau.com/current/server-linux/ja-jp/kerberos_delegation.htm)を参照してください。Active Directory は必須です。Tableau Server がインストールされているコンピューターを Active Directory のドメインに結合する必要があります。データ ソースをパブリッシュするときに指定する[認証方法](https://help.tableau.com/current/pro/desktop/ja-jp/publishing_sharing_authentication.htm#kerberos-environments)は、ビューアー認証資格情報にする必要があります。

Microsoft Analysis Services を使用する場合は、RLS に Kerberos を使用できます。

### OLAP キューブ

Tableau の OLAP キューブ接続はデータ ソース フィルターと同等ではありません。この接続は Tableau のエンタイトルメント テーブルベースの RLS メソッド、または USERNAME() 関数へのアクセスで必要となります。こうした理由から、Kerberos と制約付き委任は OLAP データベースを使用する RLS に対して推奨される方法となり、これにより Tableau は OLAP サーバー側で既に実装されているユーザー フィルターを利用できるようになります。

ダッシュボードを表示するユーザーがドメインに含まれていない場合は、ユーザー フィルターを手動で作成する方法を実行できます。ただし、生成されたユーザー フィルター セットはデータ ソース フィルターとして追加できず、代わりにフィルター シェルフに追加されるため、この方法を使用してパブリッシュされたビューには Web 編集機能とワークブックのダウンロード機能を使用できないようにすることが重要です。

## SAML 委任と SAP HANA

Tableau Server が [SAP HANA SSO の構成](https://help.tableau.com/current/server-linux/ja-jp/config_sap_hana_sso.htm)を使用してシングル サインオンを使用できるように構成されている場合、ビューアーの認証資格情報を使用してクエリをユーザーとして実行し、ユーザー レベルで適用されるすべてのセキュリティ内で動作するようになります。データ ソースをパブリッシュするときに指定する[認証方法](https://help.tableau.com/current/pro/desktop/ja-jp/publishing_sharing_authentication.htm#kerberos-environments)は、ビューアー認証資格情報にする必要があります。

## ユーザー固有のセッションを強制する初期 SQL (Oracle VPD)

初期 SQL では、セッション中に使用する一時テーブルまたはカスタム データ環境を設定するために一時テーブルを設定する目的で、接続がデータベースに作成されている場合に実行される SQL コマンドを指定できます。

Oracle VPD では、特定のストアド プロシージャまたは関数を実行してユーザーに固有のセッションを設定し、Tableau ユーザーのユーザー名と一致するようにデータベース接続のコンテキストを設定できます。

begin
DBMS\_SESSION.SET\_IDENTIFIER(\[TableauServerUser\]);
end;

RLS でこれを偽装と同様に使用する場合は同じ高度な要件が当てはまります。DBA は、VPD および関連するすべてのユーザーがデータベースに存在するように設定する必要があります。

MS SQL Server で、EXECUTE AS コマンドを強制できます (ただし、これは Tableau が偽装で既に行っている内容と似ています)。

EXECUTE AS USER = \[TableauServerUser\] WITH NO REVERT;

**注**: データ ソースが埋め込まれていて、ユーザーが Web 編集またはワークブックのダウンロードに対するパーミッションを持っている場合、RLS を強制する初期 SQL は簡単に削除できるため、RLS は存在しません。データ ソースはワークブックに埋め込まれたままにするのではなく、個別にパブリッシュする必要があります。

## 行レベル セキュリティ メソッドの比較マトリックス

<table class="table--plain">
                    <colgroup><col>
                    <col style="width: 28%;">
                    <col style="width: 28%;">
                    <col style="width: 28%;">
                    </colgroup><tbody>
                        <tr>
                            <td>メソッド</td>
                            <td>役に立つ状況</td>
                            <td>長所</td>
                            <td>短所</td>
                        </tr>
                        <tr>
                            <td>エンタイトルメント テーブル (推奨)</td>
                            <td>
                                <ul>
                                    <li>データベースにエンタイトルメントの既存の概念がある場合</li>
                                    <li>組織が初めて行レベル セキュリティを設定しているとき</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>テスト、更新、保守、拡張が簡単</li>
                                    <li>バージョン 2018.3 以降のライブ接続と抽出の両方で動作する</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>エンタイトルメント テーブルの作成と維持が必要</li>
                                    <li>パフォーマンスを最適化するために適切なキーの選択と作成が必要になる場合がある</li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td>CONTAINS() と抽出</td>
                            <td>
                                <ul>
                                    <li>バージョン 2018.3 以前の抽出で RLS を実装する場合</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>抽出の効率を活用できる</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>すべてのユーザーを 1 つの列にマッピングする必要がある</li>
                                    <li>文字列計算のため、ライブ接続に切り替えるのが困難</li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td>偽装</td>
                            <td>
                                <ul>
                                    <li>データにアクセスするすべてのユーザーが SQL Server のユーザーとして存在する場合 (通常は、内部展開)</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>セキュリティが 1 か所 (データベース) で処理および維持される</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>ビューにアクセスするすべてのユーザーが SQL Server 内にユーザーとして存在している必要がある</li>
                                    <li>Microsoft SQL Server でのみ動作する</li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td>Kerberos</td>
                            <td>
                                <ul>
                                    <li>Kerberos 委任に必要なすべてのデータベースが設定され、RLS がデータベース上 (通常は内部展開) に設定されている場合</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>データベースのアクセス ログにビューアーの名前が表示される</li>
                                    <li>セキュリティがデータベースで処理および維持される</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>Tableau が、LDAP - Active Directory を使用するように構成されている必要がある</li>
                                    <li>Tableau Server を AD ドメインに結合する必要がある</li>
                                    <li>すべてのユーザーが AD ドメイン内に存在している必要がある</li>
                                </ul>
                            </td>
                        </tr>
                        <tr>
                            <td>初期 SQL</td>
                            <td>
                                <ul>
                                    <li>データベースで初期 SQL をサポートし、RLS がデータベース側で設定されている場合</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>読み込み時に Tableau パラメーターを渡すことができる</li>
                                    <li>他のユーザーと共有できない専用の接続</li>
                                    <li>クエリをユーザーとして実行するため、ユーザーがデータベース内に存在している必要がある</li>
                                </ul>
                            </td>
                            <td>
                                <ul>
                                    <li>初期 SQL をサポートしていないデータベースもある</li>
                                    <li>キャッシュ共有が制限されているためにパフォーマンスに影響を及ぼす可能性がある</li>
                                </ul>
                            </td>
                        </tr>
                    </tbody>
                </table>