サービス アカウントの構成 (Analysis Services)

製品全体のアカウントの準備については、Analysis Services を含めて、すべての SQL Server サービスに関する包括的なサービス アカウントの情報を提供するトピックである「Windows サービス アカウントと権限の構成」に記載されています。有効なアカウントの種類、セットアップによって割り当てられた Windows 特権、ファイル システムの権限、レジストリの権限などについては、そのトピックをご覧ください。

このトピックでは、表形式およびクラスター化インストールに必要な追加の権限など、Analysis Services に関する補足情報を示します。また、サーバーの操作をサポートするために必要な権限についても説明します。たとえば、処理およびクエリ操作をサービス アカウントで実行するように構成できますが、そのためには追加の権限を付与する必要があります。

  • Analysis Services に割り当てられた Windows 特権

  • Analysis Services に割り当てられたファイル システム権限

  • 特定のサーバー操作のためのその他の権限の付与

ここでは説明しませんが、追加の構成手順として、Analysis Services インスタンスおよびサービス アカウントのサービス プリンシパル名 (SPN) を登録します。この手順によって、ダブルホップ シナリオでクライアント アプリケーションからバックエンド データ ソースへのパススルー認証が有効になります。この手順は、Kerberos 制約付き委任用に構成されたサービスにのみ適用されます。詳細については、「Kerberos の制約付き委任のための Analysis Services の構成」をご覧ください。

ログオン アカウントに関する推奨事項

フェールオーバー クラスターでは、Analysis Services のすべてのインスタンスで Windows ドメイン ユーザー アカウントを使用できるよう構成する必要があります。すべてのインスタンスに同じアカウントを割り当てます。詳細については、「Analysis Services をクラスター化する方法」を参照してください。

スタンドアロン インスタンスでは、既定のインスタンスに対して NT Service\MSSQLServerOLAPService、または名前付きインスタンスに対して **NT Service\MSOLAP$**instance-name の既定の仮想アカウントを使用する必要があります。この推奨事項は、Windows Server 2008 R2 以降のオペレーティング システム、および SQL Server 2012 以降の Analysis Services を想定したすべてのサーバー モードでの Analysis Services インスタンスに適用されます。

Analysis Services への権限の付与

このセクションでは、実行可能ファイルの開始、構成ファイルの読み取り、およびデータ ディレクトリからのデータベースの読み込みなどのローカルの内部操作において Analysis Services が必要とする権限について説明します。外部データ アクセスの権限の設定およびその他のサービスやアプリケーションとの相互運用性に関するガイダンスが必要な場合は、このトピックで後述する「特定のサーバー操作のためのその他の権限の付与」を参照してください。

内部操作の場合、Analysis Services の権限保有者はログオン アカウントではなく、[設定] で作成された、サービスごとの SID を含むローカル Windows セキュリティ グループです。セキュリティ グループへの権限の割り当ては、Analysis Services の以前のバージョンと同じです。さらに、時間の経過に伴ってログオン アカウントを変更することはできますが、サービスごとの SID およびローカル セキュリティ グループはサーバーがインストールされている間一定です。Analysis Services では、ログオン アカウントではなくセキュリティ グループが作成されるため、権限を保持しやすくなります。ファイル システム権限または Windows 特権にかかわらず、サービス インスタンスに手動で権限を付与する場合にはいつでも、必ずサーバー インスタンス用に作成されたローカル セキュリティ グループに権限を付与してください。

セキュリティ グループの名前は、特定のパターンに従います。プレフィックスは常に SQLServerMSASUser$ であり、その後にコンピューター名、最後にインスタンス名と続きます。既定のインスタンスは MSSQLSERVER です。名前付きインスタンスは、セットアップ時に指定した名前です。

このセキュリティ グループは、ローカル セキュリティの設定で確認できます。

  • Compmgmt.msc を実行し、[ローカル ユーザーとグループ] | [グループ] | SQLServerMSASUser$<サーバー名>$MSSQLSERVER と選択します (既定のインスタンスの場合)。

  • セキュリティ グループのメンバーを表示するには、セキュリティ グループをダブルクリックします。

グループの唯一のメンバーは、サービスごとの SID です。その隣には、ログオン アカウントが表示されます。ログオン アカウント名は表面的で、サービスごとの SID にコンテキストを提供するために使用されます。その後、ログオン アカウントを変更してからこのページに戻ると、セキュリティ グループとサービスごとの SID は変更されず、ログオン アカウントのラベルが異なっていることがわかります。

Analysis Services に割り当てられた Windows 特権

Analysis Services では、サービスのスタートアップとシステム リソースの要求のために、オペレーティング システムの権限が必要です。要件は、サーバー モードと、インスタンスがクラスター化されているかどうかによって異なります。Windows 特権の詳細を確認するには、「Privileges」および「Privilege Constants (Windows)」をご覧ください。

Analysis Services のすべてのインスタンスは、[サービスとしてログオン] (SeServiceLogonRight) 特権を必要とします。SQL Server セットアップは、インストール時に指定されたサービス アカウントにこの特権を割り当てます。多次元およびデータ マイニング モードで実行されているサーバーの場合、これが、スタンドアロン サーバー インストールのための Analysis Services サービス アカウントで必要とされる唯一の Windows 特権であり、また Analysis Services のセットアップで構成される唯一の特権です。クラスター化および表形式インスタンスの場合は、追加の Windows 特権を手動で追加する必要があります。

表形式と多次元のどちらのモードでも、フェールオーバー クラスター インスタンスには [スケジューリング優先順位の繰り上げ] (SeIncreaseBasePriorityPrivilege) が必要です。

表形式インスタンスでは、次の 3 つの追加の特権が使われます。これらは、インスタンスのインストール後に手動で付与する必要があります。

プロセス ワーキング セットを増やす (SeIncreaseWorkingSetPrivilege)

この特権は、既定の動作として Users セキュリティ グループによりすべてのユーザーが利用できます。このグループの特権を削除することによりサーバーをロック ダウンすると、Analysis Services が次のエラーをログに記録して起動に失敗します。"クライアントに必要な特権が付与されていません"。このエラーが発生した場合は、適切な Analysis Services セキュリティ グループに特権を付与して、Analysis Services に対する特権を復元します。

プロセスに対してメモリ クォータを調整する (SeIncreaseQuotaSizePrivilege)

この特権は、インスタンスに設定されたメモリしきい値の影響でプロセスの実行を完了するための十分なリソースがない場合に、追加のメモリを要求するために使われます。

[メモリ内のページのロック] (SeLockMemoryPrivilege)

この特権が必要なのは、ページングが完全に無効になっている場合のみです。表形式サーバー インスタンスでは、既定の設定として Windows のページング ファイルが使われますが、VertiPaqPagingPolicy を 0 に設定すると、Windows のページングの使用を回避できます。

VertiPaqPagingPolicy を 1 (既定値) に設定すると、表形式サーバー インスタンスで Windows のページング ファイルが使われます。割り当てがロックされないため、Windows は必要に応じてページ アウトします。ページングが使われているため、メモリ内のページをロックする必要はありません。したがって、既定の構成 (VertiPaqPagingPolicy = 1) では、[メモリ内のページのロック] 特権を表形式インスタンスに付与する必要はありません。

VertiPaqPagingPolicy = 0。Analysis Services のページングを無効にすると、割り当てがロックされ、[メモリ内のページのロック] 特権が表形式インスタンスに付与されていると見なされます。この設定と [メモリ内のページのロック] 特権により、Windows システムのメモリが不足した場合は、Analysis Services に対して行われたメモリ割り当てをページ アウトできなくなります。Analysis Services は、VertiPaqPagingPolicy = 0 の設定によって強制される [メモリ内のページのロック] アクセス許可に依存します。Windows ページングをオフにすることはお勧めしません。ページングが許可されている場合は成功するはずの操作で、メモリ不足エラーの比率が増えるためです。VertiPaqPagingPolicy の詳細については、「メモリのプロパティ」をご覧ください。

サービス アカウントに対する Windows 特権を表示または追加するには

  1. GPEDIT.msc を実行し、[ローカル コンピューター ポリシー]、[コンピューターの構成]、[Windows の設定]、[セキュリティの設定]、[ローカル ポリシー]、[ユーザー権利の割り当て] の順に選択します。

  2. SQLServerMSASUser$ が含まれる既存のポリシーを確認します。これは、Analysis Services がインストールされているコンピューターにあるローカル セキュリティ グループです。Windows 特権とファイル フォルダー権限の両方がこのセキュリティ グループに付与されます。[サービスとしてログオン] ポリシーをダブルクリックすると、セキュリティ グループがシステム上でどのように指定されているかが表示されます。セキュリティ グループの完全な名前は、Analysis Services を名前付きインスタンスとしてインストールしたかどうかによって異なります。アカウントの特権を追加するときは、実際のサービス アカウントではなく、このセキュリティ グループを使います。

  3. GPEDIT でアカウント特権を追加するには、[プロセス ワーキング セットの増加] を右クリックして [プロパティ] をクリックします。

  4. [ユーザーまたはグループの追加] をクリックします。

  5. Analysis Services インスタンスのセキュリティ グループを入力します。名前は、セキュリティ グループ、コンピューター、およびインスタンス名で構成されています。

    以下のリストに、2 つの例を示します。SQL01-WIN12 というコンピューター (コンピューター名はローカル ドメイン) 上の既定のインスタンス MSSQLSERVER と Tabular という名前付きインスタンスです。

    • SQL01-WIN12\SQLServerMSASUser$SQL01-WIN12$MSSQLSERVER

    • SQL01-WIN12\SQLServerMSASUser$SQL01-WIN12$TABULAR

  6. [プロセスのメモリ クォータの調整] と、オプションで [メモリ内のページのロック] または [スケジューリング優先順位の繰り上げ] に対して、同じ操作を繰り返します。

注意

以前のバージョンのセットアップでは、Analysis Services サービス アカウントが Performance Log Users グループに誤って追加されていました。この欠陥は修正されましたが、既存のインストールにこの不必要なグループ メンバーシップが存在する可能性があります。Analysis Services サービス アカウントでは Performance Log Users グループのメンバーシップを必要としないので、グループから削除できます。

Analysis Services に割り当てられたファイル システム権限

注意

各プログラム フォルダーに関連付けられた権限の一覧については、「Windows サービス アカウントと権限の構成」を参照してください。

IIS の構成および Analysis Services に関連するファイル権限の情報については、「インターネット インフォメーション サービス (IIS) 7.0 上の Analysis Services への HTTP アクセスの構成」を参照してください。

サーバーの操作に必要なすべてのファイル システム権限 (指定されたデータ フォルダーからデータベースをロードおよびアンロードするのに必要な権限を含む) は、インストール時に SQL Server セットアップによって割り当てられます。

データ ファイル、プログラム ファイルの実行可能ファイル、構成ファイル、ログ ファイル、一時ファイルの権限保有者は、SQL Server セットアップによって作成されたローカル セキュリティ グループです。

インストールしたインスタンスごとに 1 つのセキュリティ グループが作成されます。セキュリティ グループの名前は、インスタンスに基づいて付けられます。既定のインスタンスの場合は SQLServerMSASUser<servername>$MSSQLSERVER、名前付きインスタンスの場合は SQLServerMSASUser$<servername>$<instancename> です。セットアップは、サーバー操作の実行に必要なファイル権限をこのセキュリティ グループに準備します。\MSAS11.MSSQLSERVER\OLAP\BIN ディレクトリのセキュリティ権限をチェックすると、(ログオン アカウントまたはサービスごとの SID ではなく) セキュリティ グループが該当ディレクトリの権限保有者であることがわかります。

セキュリティ グループには、次の 1 つのメンバーのみが含まれています。Analysis Services インスタンス開始アカウントのサービスごとのセキュリティ識別子 (SID)。セットアップによって、ローカル セキュリティ グループにサービスごとの SID が追加されます。SQL Server セットアップが Analysis Services を準備する方法をデータベース エンジンと比べると、SID のメンバーシップを含むローカル セキュリティ グループを使う点がわずかながら明白な違いです。

ファイル権限が壊れていると考えられる場合は、次の手順に従って、サービスがまだ正常に準備されていることを確認してください。

  1. サービス コントロール コマンド ライン ツール (sc.exe) を使って、既定のサービス インスタンスの SID を取得します。

    SC showsid MSSqlServerOlapService

    名前付きインスタンス (インスタンス名が Tabular) の場合は、次の構文を使います。

    SC showsid MSOlap$Tabular

  2. [コンピューター マネージャー] | [ローカル ユーザーとグループ] | [グループ] を使用して、SQLServerMSASUser$<servername>$<instancename> セキュリティ グループのメンバーシップを検査します。

    メンバーの SID が、手順 1 のサービスごとの SID と一致する必要があります。

  3. [Windows エクスプローラー] | [Program Files] | [Microsoft SQL Server] | Msasxx.mssqlserver | [OLAP] | [bin] を使用して、フォルダーのセキュリティ プロパティが、手順 2 のセキュリティ グループに付与されていることを確認します。

注意

SID は削除したり変更したりしないでください。誤って削除したサービスごとの SID を復元する場合については、https://support.microsoft.com/kb/2620201 をご覧ください。

サービスごとの SID の詳細

各 Windows アカウントには関連する SID がありますが、サービスにも SID があります (そのため、サービスごとの SID と呼ばれます)。サービスごとの SID は、サービス インスタンスがインストールされたときに、サービスの一意の永続的な機能として作成されます。サービスごとの SID は、サービス名から生成されたローカルの、コンピューター レベルの SID です。既定のインスタンスでは、ユーザー フレンドリ名は NT SERVICE\MSSQLServerOLAPService です。

サービスごとの SID の利点は、ファイル権限に影響することなく、より広くわかりやすいログオン アカウントを自由に変更できることです。たとえば、共に同じ Windows ユーザー アカウントで実行する Analysis Services の 2 つのインスタンス (既定のインスタンスと名前付きインスタンス) をインストールする場合を考えます。ログオン アカウントは共有しても、各サービス インスタンスは一意のサービスごとの SID を持ちます。この SID は、ログオン アカウントの SID とは異なります。サービスごとの SID は、ファイル権限と Windows 特権のために使われます。これに対し、ログオン アカウント SID は認証と承認のシナリオのために使われます。つまり、目的に応じて異なる SID が使われます。

SID は不変であるため、サービスのインストール中に作成されたファイル システムの ACL は、サービス アカウントの変更頻度に関係なく、無制限に使うことができます。SID により権限を指定する ACL では、セキュリティのための措置を強化するために、同じアカウントで他のサービスが実行する場合でも、プログラムの実行可能プログラムおよびデータ フォルダーがサービスの単一のインスタンスによってのみアクセスされることが保証されます。

特定のサーバー操作のためのその他の権限の付与

Analysis Services では、一部のタスクは、Analysis Services を開始するために使用されるサービス アカウント (またはログオン アカウント) のセキュリティ コンテキストに従って実行され、他のタスクは、そのタスクを要求しているユーザーのセキュリティ コンテキストに従って実行されます。

次の表に、サービス アカウントとして実行するタスクをサポートするために必要な追加権限を示します。

サーバー操作

作業項目

理由

外部リレーショナル データ ソースに対するリモート アクセス

サービス アカウントのデータベース ログインを作成する

処理とは、外部データ ソース (通常はリレーショナル データベース) からのデータの取得を意味します。これはその後、Analysis Services データベースに読み込まれます。外部データの取得で可能な資格情報に関するオプションの 1 つに、サービス アカウントを使用することがあります。この資格情報に関するオプションは、サービス アカウントのデータベース ログインを作成し、ソース データベースに対する読み取り権限を付与した場合にのみ選択できます。このタスクでのサービス アカウント オプションの使用方法に関する詳細については、「権限借用オプションの設定 (SSAS - 多次元)」を参照してください。同様に、ROLAP をストレージ モードとして使用する場合は、同じ権限借用オプションを選択できます。この場合、アカウントには、ROLAP パーティションを処理するために (つまり、集計を格納するために)、ソース データに対する書き込みアクセス権も必要です。

DirectQuery

サービス アカウントのデータベース ログインを作成する

DirectQuery は、表形式モデルに収めるには大きすぎるか、既定のインメモリ ストレージ オプションよりも DirectQuery の適合性が高いその他の特性がある外部データセットをクエリするために使用する表形式の機能です。DirectQuery モードで使用できる接続オプションの 1 つは、サービス アカウントを使用することです。ここでもこのオプションは、サービス アカウントにターゲット データ ソースでのデータベースのログイン権限と読み取り権限がある場合にのみ選択できます。このタスクでのサービス アカウント オプションの使用方法に関する詳細については、「権限借用オプションの設定 (SSAS - 多次元)」を参照してください。また、データの取得のために、現在のユーザーの資格情報を使用できます。ほとんどの場合、このオプションではダブル ホップ接続が発生します。したがって、サービス アカウントでダウンストリーム サーバーに ID をデリゲートできるように、Kerberos の制約付き委任のためのサービス アカウントを構成します。詳細については、「Kerberos の制約付き委任のための Analysis Services の構成」を参照してください。

他の SSAS インスタンスへのリモート アクセス

サービス アカウントをリモート サーバーで定義された Analysis Services データベース ロールに追加する

リモート パーティション、および他のリモート Analysis Services インスタンス上のリンク オブジェクトの参照は共に、リモート コンピューターまたはデバイス上の権限を必要とするシステム機能です。ユーザーがリモート パーティションを作成および設定するか、リンク オブジェクトを設定すると、現在のユーザーのセキュリティ コンテキストで操作が実行します。後でこの操作を自動化した場合、Analysis Services はそのサービス アカウントのセキュリティ コンテキストでリモート インスタンスにアクセスします。Analysis Services のリモート インスタンスにあるリンク オブジェクトにアクセスするには、特定のディメンションに対する読み取りアクセス権など、リモート インスタンス上の適切なオブジェクトを読み取るための権限がログオン アカウントに必要です。同様に、リモート パーティションを使用するには、サービス アカウントでリモート インスタンス上に管理者権限が必要です。このような権限は、許可された操作を特定のオブジェクトに関連付けるロールを使用して、リモート Analysis Services インスタンス上で付与されます。処理およびクエリ操作を許可するフル コントロール権限を付与する方法については、「データベース権限の付与 (Analysis Services)」をご覧ください。リモート パーティションの詳細については、「リモート パーティションの作成と管理 (Analysis Services)」を参照してください。

書き戻し

サービス アカウントをリモート サーバーで定義された Analysis Services データベース ロールに追加する

書き戻しは、クライアント アプリケーションで有効にされている場合に、データ分析中に新しいデータ値の作成を可能にする多次元モデルの機能です。ディメンションまたはキューブ内で書き戻しが有効な場合は、Analysis Services サービス アカウントに、ソース SQL Server リレーショナル データベースの書き戻しテーブルに対する書き込み権限が必要です。このテーブルがまだ存在しておらず、作成する必要がある場合は、Analysis Services サービス アカウントに、指定の SQL Server データベース内でテーブルを作成するための権限も必要です。

SQL Server リレーショナル データベース内のクエリ ログ テーブルへの書き込み

サービス アカウントのデータベース ログインを作成し、クエリ ログ テーブルに対する書き込み権限を割り当てる

以降の分析用にデータベース テーブル内に使用状況データを収集するために、クエリ ログ記録を有効にできます。Analysis Services サービス アカウントには、指定の SQL Server データベースのクエリ ログ テーブルに対する書き込み権限が必要です。このテーブルがまだ存在しておらず、作成する必要がある場合は、Analysis Services ログオン アカウントに、指定の SQL Server データベース内でテーブルを作成するための権限も必要です。詳細については、使用法に基づく最適化ウィザードによる SQL Server Analysis Services のパフォーマンスの向上 (ブログ) およびAnalysis Services でのクエリのログ記録 (ブログ) を参照してください。

関連項目

参照

Windows サービス アカウントと権限の構成

その他の技術情報

SQL Server サービス アカウントおよびサービスごとの SID (ブログ)

SQL Server で、サービスの SID を使用してサービスの分離を提供するには (サポート技術情報の資料)

アクセス トークン (MSDN)

セキュリティ識別子 (MSDN)

アクセス トークン (Wikipedia)

アクセス制御リスト (Wikipedia)