サービス アカウントの構成 (Analysis Services)
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
製品全体のアカウント プロビジョニングについては、「Windows サービス アカウントとアクセス許可の構成」を参照してください。このトピックでは、SQL Server Analysis Servicesを含むすべてのSQL Server サービスに関する包括的なサービス アカウント情報を提供します。 有効なアカウントの種類、セットアップで割り当てられた Windows 特権、ファイル システムの権限、レジストリの権限などについては、前のトピックをご覧ください。
このトピックでは、表形式およびクラスター化されたインストールに必要な追加のアクセス許可など、SQL Server Analysis Servicesの補足情報を提供します。 また、サーバー操作をサポートするために必要な権限についても説明します。 たとえば、サービス アカウントで実行するように処理操作とクエリ操作を構成できます。このシナリオでは、追加のアクセス許可が必要です。
ここに記載されていないもう 1 つの構成手順は、SQL Server Analysis Services インスタンスとサービス アカウントのサービス プリンシパル名 (SPN) を登録することです。 この手順によって、ダブルホップ シナリオでクライアント アプリケーションからバックエンド データ ソースへのパススルー認証が有効になります。 この手順は、Kerberos 制約付き委任用に構成されたサービスにのみ適用されます。 詳細な手順については、「 Configure Analysis Services for Kerberos constrained delegation 」を参照してください。
ログオン アカウントに関する推奨事項
MSSQLServerOLAPService Windows サービスのスタートアップ アカウントには、Windows ドメイン ユーザー アカウント、仮想アカウント、マネージド サービス アカウント (MSA)、またはサービスごとの SID、NetworkService、LocalSystem などの組み込みアカウントを指定できます。 サービス ログオン アカウントとしてドメイン ユーザー アカウントを使用すると、 ユーザー アカウントの形式に関する詳細が提供されます。
フェールオーバー クラスターでは、Analysis Services のすべてのインスタンスが Windows ドメイン ユーザー アカウントを使用するように構成する必要があります。 すべてのインスタンスに、同じアカウントを割り当てます。 詳細については、「 Analysis Services をクラスター化する方法 」を参照してください。
スタンドアロンのインスタンスは、既定のインスタンスの場合は既定の仮想アカウント NT Service\MSSQLServerOLAPService を使用しなければならず、名前付きインスタンスの場合は NT Service\MSOLAP$instance-name を使用します。 この推奨事項は、すべてのサーバー モードの Analysis Services インスタンスに適用されます。オペレーティング システムには Windows Server 2008 R2 以降、Analysis Services には SQL Server 2012 を想定しています。
Analysis Services にアクセス許可を付与する
このセクションでは、Analysis Services がローカルの内部操作に必要なアクセス許可について説明します。 これらの操作には、実行可能ファイルの開始、構成ファイルの読み取り、データ ディレクトリからのデータベースの読み込みが含まれます。 外部データ アクセスと他のサービスやアプリケーションとの相互運用性に対するアクセス許可の設定に関するガイダンスについては、このトピックの「 特定のサーバー操作に対する追加のアクセス許可の付与 」を参照してください。
内部操作の場合、Analysis Services のアクセス許可所有者はログオン アカウントではなく、サービスごとの SID を含むセットアップによって作成されたローカル Windows セキュリティ グループです。 Analysis Services では、以前のバージョンから一貫して、アクセス許可をセキュリティ グループに割り当てるようになっています。 また、ログオン アカウントは時間の経過と共に変更できますが、サービスごとの SID とローカル セキュリティ グループはサーバーのインストールの有効期間にわたって一定です。 Analysis Services の場合、セキュリティ グループはログオン アカウントよりもアクセス許可を保持する方が適しています。 手動でサービス インスタンスに権限を付与するときには、ファイル システム権限と Windows の特権のどちらであっても、必ずサーバー インスタンスのために作成されたローカル セキュリティ グループにアクセス許可を与えます。
セキュリティ グループの名前は、一定のパターンに従います。 プレフィックスは常に SQLServerMSASUser$であり、その後にコンピューター名が続き、最後にインスタンス名が付きます。 既定のインスタンスは MSSQLSERVERです。 名前付きインスタンスは、セットアップ中に指定された名前です。
ローカル セキュリティ設定でこのセキュリティ グループを確認できます。
compmgmt.msc を実行する | ローカル ユーザーとグループ | グループ | SQLServerMSASUser$<server-name>$MSSQLSERVER (既定のインスタンスの場合)。
そのメンバーを表示するには、セキュリティ グループをダブルクリックします。
グループの唯一のメンバーは、サービスごとの SID です。 その隣にログオン アカウントが示されます。 ログオン アカウント名は、サービスごとの SID のコンテキストを示して、分かりやすくする目的で表示されています。 ログオン アカウントを変更した場合、セキュリティ グループとサービスごとの SID は変更されません。 ログオン アカウントのラベルのみが異なります。
Analysis Services サービス アカウントに割り当てられた Windows 特権
Analysis Services では、サービスを開始し、システム リソースを要求するには、オペレーティング システムからの権限が必要です。 要件は、サーバー モードおよびインスタンスがクラスター化されているかどうかによって異なります。
Analysis Services のすべてのインスタンスには、 [サービスとしてログオン] (SeServiceLogonRight) 特権が必要です。 SQL Server セットアップによって、インストール時に指定されたサービス アカウントに特権が割り当てられます。 多次元モードおよびデータ マイニング モードで実行されるサーバーの場合、これは スタンドアロン サーバー インストール環境において Analysis Services サービス アカウントが必要とする唯一の Windows 特権であり、セットアップによって Analysis Services 用に構成される唯一の特権です。 クラスター インスタンスおよび表形式インスタンスの場合、追加の Windows 特権を手動で追加する必要があります。
フェールオーバー クラスター インスタンスには、表形式モードまたは多次元モードの場合、 [スケジューリング優先順位の繰り上げ] (SeIncreaseBasePriorityPrivilege) が必要です。
表形式インスタンスでは次の 3 つの追加の特権を使用しており、いずれもインスタンスのインストール後に手動で付与する必要があります。
特権 | 説明 |
---|---|
[プロセス ワーキング セットの増加] (SeIncreaseWorkingSetPrivilege) | この特権は、既定では [ユーザー] セキュリティ グループを介してすべてのユーザーが使用可能です。 このグループの特権を削除してサーバーをロックダウンすると、Analysis Services の起動に失敗し、"必要な特権がクライアントによって保持されていません" というエラーがログに記録されることがあります。このエラーが発生した場合は、適切な Analysis Services セキュリティ グループに権限を付与することで、Analysis Services に特権を復元します。 |
プロセスに対してメモリ クォータを調整する (SeIncreaseQuotaPrivilege) | この特権は、プロセスのリソースが十分でないためにプロセスの実行を完了できない場合に、さらに多くのメモリを要求するために使用します (メモリ量は、インスタンス用に設定されたメモリしきい値に依存します)。 |
[メモリ内のページのロック] (SeLockMemoryPrivilege) | この特権が必要になるのは、ページングが完全にオフになっているときのみです。 既定では、表形式サーバー インスタンスは Windows ページング ファイルを使用しますが、 VertiPaqPagingPolicy を 0 に設定して、Windows ページングを使用しないようにすることもできます。 VertiPaqPagingPolicy を 1 (既定) にすると、表形式サーバー インスタンスは Windows ページング ファイルを使用します。 割り当てはロックされないため、必要に応じてページ アウトされます。 ページングが使用されているため、メモリ内のページをロックする必要はありません。 このため、既定の構成 ( VertiPaqPagingPolicy = 1) の場合、 [メモリ内のページのロック] 特権を表形式インスタンスに付与する必要はありません。 VertiPaqPagingPolicy を 0 にした場合。 Analysis Services のページングをオフにした場合は、割り当てがロックされ、 [メモリ内のページのロック] 特権が表形式インスタンスに付与されます。 このように設定され、かつ [メモリ内のページのロック] 特権がある場合、システムでメモリ不足が発生しているときは、Analysis Services に対して行われたメモリ割り当てをページ アウトできません。 VertiPaqPagingPolicy = 0 が適用されている場合、Analysis Services は [メモリ内のページのロック] 権限に依存します。 Windows ページングをオフにすることはお勧めしません。 このようにすると、ページングが許可されている場合には正常に処理されるような操作でメモリ不足エラーが発生する率が高まります。 VertiPaqPagingPolicy の詳細については、「 Memory Properties」を参照してください。 |
サービス アカウントに対する Windows 特権を表示または追加するには
GPEDIT.msc を実行し、[ローカル コンピューター ポリシー] | [コンピューターの構成] | [Windows の設定] | [セキュリティの設定] | [ローカル ポリシー] | [ユーザー権利の割り当て] を選択します。
SQLServerMSASUser$が含まれている既存のポリシーを確認します。 これは、Analysis Services がインストール済みのコンピューター上にあるローカル セキュリティ グループです。 Windows 特権とファイル フォルダー権限の両方が、このセキュリティ グループに付与されています。 [サービスとしてログオン] ポリシーをダブルクリックすると、セキュリティ グループがシステムにどのように指定されているかが表示されます。 セキュリティ グループの完全名は、Analysis Services を名前付きインスタンスとしてインストールしたかどうかによって異なります。 アカウントの特権を追加する場合は、実際のサービス アカウントではなく、このセキュリティ グループを使用してください。
GPEDIT でアカウントの特権を追加するには、 [プロセス ワーキング セットの増加] を右クリックし、 [プロパティ]を選択します。
[ユーザーまたはグループの追加] をクリックします。
Analysis Services インスタンスのユーザー グループを入力します。 サービス アカウントはローカル セキュリティ グループのメンバーであり、そのためアカウントのドメインとしてローカル コンピューター名を付加する必要があることに注意してください。
次の一覧は、"SQL01-WIN12" というコンピューター (コンピューター名はローカル ドメインです) に既定のインスタンスおよび "Tabular" という名前付きインスタンスがある 2 つの例を示しています。
SQL01-WIN12\SQL01-WIN12$SQLServerMSASUser$MSSQLSERVER
SQL01-WIN12\SQL01-WIN12$SQLServerMSASUser$TABULAR
[プロセスに対してメモリ クォータを調整する]のほか、必要に応じて [メモリ内のページのロック] または [スケジューリング優先順位の繰り上げ]に対しても、この手順を繰り返します。
注意
以前のバージョンのセットアップでは、Analysis Services サービス アカウントが Performance Log Users グループに誤って追加されていました。 この欠陥は修正されましたが、既存のインストールにこの不必要なグループ メンバーシップが存在する可能性があります。 SQL Server Analysis Services サービス アカウントはパフォーマンス ログ ユーザー グループのメンバーシップを必要としないため、グループから削除できます。
Analysis Services サービス アカウントに割り当てられたファイル システム権限
注意
各プログラム フォルダーに関連付けられている権限の一覧については、「 Windows サービス アカウントと権限の構成 」を参照してください。
IIS の構成とSQL Server Analysis Servicesに関連するファイルのアクセス許可情報については、「インターネット インフォメーション サービス (IIS) 8.0 で Analysis Services への HTTP アクセスを構成する」を参照してください。
サーバー操作に必要なすべてのファイル システムのアクセス許可 (指定されたデータ フォルダーからのデータベースの読み込みとアンロードに必要なアクセス許可など) は、インストール時に SQL Server セットアップによって割り当てられます。
データ ファイル、プログラム実行可能ファイル、構成ファイル、ログ ファイル、および一時ファイルの権限保有者は、SQL Server セットアップによって作成されるローカル セキュリティ グループです。
インストールするインスタンスごとに作成されるセキュリティ グループが 1 つあります。 セキュリティ グループの名前は、既定のインスタンスの 場合は SQLServerMSASUser$MSSQLSERVER 、名前付きインスタンスの 場合は SQLServerMSASUser$<servername>$<instancename> のいずれかのインスタンスの名前が付けられます。 セットアップは、サーバー操作に必要なファイル権限をこのセキュリティ グループに準備します。 \MSAS13.MSSQLSERVER\OLAP\BIN ディレクトリのセキュリティ権限をチェックすると、(サービス アカウントまたはサービスごとの SID ではなく) セキュリティ グループが該当ディレクトリの権限保有者であることがわかります。
セキュリティ グループには、SQL Server Analysis Services インスタンスのスタートアップ アカウントのサービスごとのセキュリティ識別子 (SID) という 1 つのメンバーのみが含まれます。 セットアップによって、サービスごとの SID がローカル セキュリティ グループに追加されます。 SQL Server セットアップが Analysis Services を準備する方法において、SID のメンバーシップと共にローカル セキュリティ グループを使用することは、データベース エンジンと比較した場合に、小さくても顕著な相違となります。
ファイル権限が破損していると考えられる場合は、次の手順に従って、サービスが正しく準備されていることを検証します。
サービス コントロール コマンド ライン ツール (sc.exe) を使用して、既定のサービス インスタンスの SID を取得します。
SC showsid MSSqlServerOlapService
名前付きインスタンス (インスタンス名が Tabular であるもの) の場合は、次の構文を使用します。
SC showsid MSOlap$Tabular
コンピューター マネージャー | のローカル ユーザーとグループ グループ | を使用して、SQLServerMSASUser$servername$<<instancename>> セキュリティ グループのメンバーシップを調べます。
メンバーの SID は、手順 1 で示したサービスごとの SID と一致する必要があります。
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 権限の付与
SQL Server Analysis Servicesは、SQL Server Analysis Servicesを開始するために使用されるサービス アカウント (またはログオン アカウント) のセキュリティ コンテキストで一部のタスクを実行し、タスクを要求しているユーザーのセキュリティ コンテキストで他のタスクを実行します。
次の表に、サービス アカウントとして実行するタスクをサポートするために必要な追加権限を示します。
サーバー操作 | 作業項目 | 妥当性 |
---|---|---|
外部リレーショナル データ ソースに対するリモート アクセス | サービス アカウントのデータベース ログインを作成します。 | 処理とは、外部データ ソース (通常はリレーショナル データベース) からのデータ取得を指し、その後SQL Server Analysis Services データベースに読み込まれます。 外部データの取得で可能な資格情報に関するオプションの 1 つに、サービス アカウントを使用することがあります。 この資格情報に関するオプションは、サービス アカウントのデータベース ログインを作成し、ソース データベースに対する読み取り権限を付与した場合にのみ選択できます。 このタスクでのサービス アカウント オプションの使用方法の詳細については、「 偽装オプションの設定 (SSAS - 多次元)」 を参照してください。 同様に、ROLAP をストレージ モードとして使用する場合は、同じ権限借用オプションを選択できます。 この場合、アカウントには、ROLAP パーティションを処理するために (つまり、集計を格納するために)、ソース データに対する書き込みアクセス権も必要です。 |
DirectQuery | サービス アカウントのデータベース ログインを作成します。 | DirectQuery は、表形式モデルに収めるには大きすぎるか、既定のインメモリ ストレージ オプションよりも DirectQuery の適合性が高いその他の特性がある外部データセットをクエリするために使用する表形式の機能です。 DirectQuery モードで使用できる接続オプションの 1 つは、サービス アカウントを使用することです。 ここでもこのオプションは、サービス アカウントにターゲット データ ソースでのデータベースのログイン権限と読み取り権限がある場合にのみ選択できます。 このタスクでのサービス アカウント オプションの使用方法の詳細については、「 偽装オプションの設定 (SSAS - 多次元)」 を参照してください。 また、データの取得のために、現在のユーザーの資格情報を使用できます。 ほとんどの場合、このオプションではダブル ホップ接続が発生します。したがって、サービス アカウントでダウンストリーム サーバーに ID をデリゲートできるように、Kerberos の制約付き委任のためのサービス アカウントを構成します。 詳細については、「 Configure Analysis Services for Kerberos constrained delegation」を参照してください。 |
他の SSAS インスタンスへのリモート アクセス | リモート サーバー上に定義された Analysis Services のデータベース ロールへの、サービス アカウントの追加 | リモート パーティションと、他のリモート SQL Server Analysis Services インスタンス上のリンク オブジェクトの参照は、どちらもリモート コンピューターまたはデバイスに対するアクセス許可を必要とするシステム機能です。 ユーザーがリモート パーティションを作成および設定するか、リンク オブジェクトを設定すると、現在のユーザーのセキュリティ コンテキストで操作が実行します。 その後、これらの操作を自動化すると、SQL Server Analysis Servicesはサービス アカウントのセキュリティ コンテキストでリモート インスタンスにアクセスします。 SQL Server Analysis Servicesのリモート インスタンス上のリンクされたオブジェクトにアクセスするには、ログオン アカウントに、リモート インスタンス上の適切なオブジェクトを読み取るアクセス許可 (特定のディメンションへの読み取りアクセスなど) が必要です。 同様に、リモート パーティションを使用するには、サービス アカウントでリモート インスタンス上に管理者権限が必要です。 このような権限は、許可された操作を特定のオブジェクトに関連付けるロールを使用して、リモート Analysis Services インスタンス上で付与されます。 処理とクエリ操作を許可するフル コントロールのアクセス許可を付与する方法については、「 データベースのアクセス許可の付与 (Analysis Services)」 を参照してください。 リモート パーティションの詳細については、「 リモート パーティションの作成と管理 (Analysis Services)」 を参照してください。 |
[書き戻し] | リモート サーバー上に定義された Analysis Services のデータベース ロールへの、サービス アカウントの追加 | 書き戻しは、クライアント アプリケーションで有効にされている場合に、データ分析中に新しいデータ値の作成を可能にする多次元モデルの機能です。 任意のディメンションまたはキューブ内で書き戻しが有効になっている場合、SQL Server Analysis Services サービス アカウントには、ソース SQL Server リレーショナル データベースの書き戻しテーブルへの書き込みアクセス許可が必要です。 このテーブルがまだ存在せず、作成する必要がある場合、SQL Server Analysis Services サービス アカウントには、指定されたSQL Server データベース内のテーブルの作成アクセス許可も必要です。 |
SQL Server リレーショナル データベースのクエリ ログ テーブルに書き込む | サービス アカウントのデータベース ログインの作成、およびクエリ ログ テーブルに対する書き込み権限の割り当て | 以降の分析用にデータベース テーブル内に使用状況データを収集するために、クエリ ログ記録を有効にできます。 SQL Server Analysis Services サービス アカウントには、指定されたSQL Server データベースのクエリ ログ テーブルに対する書き込みアクセス許可が必要です。 このテーブルがまだ存在せず、作成する必要がある場合、SQL Server Analysis Services ログオン アカウントには、指定されたSQL Server データベース内のテーブルの作成アクセス許可も必要です。 詳細については、 使用法に基づく最適化ウィザードによる SQL Server Analysis Services のパフォーマンスの向上 (ブログ) および Analysis Services でのクエリのログ記録 (ブログ)を参照してください。 |
関連コンテンツ
Windows サービス アカウントと権限の構成
SQL Server サービス アカウントとサービスごとの SID (ブログ)
サービス SID を使用してサービスを分離する SQL Server (サポート技術情報の記事)
アクセス トークン (MSDN)
セキュリティ ID (MSDN)
アクセス トークン (Wikipedia)
アクセス制御リスト (Wikipedia)