Analysis Services インスタンスの SPN 登録
適用対象: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
サービス プリンシパル名 (SPN) は、Kerberos を使用してクライアント ID とサービス ID を相互に認証するときに、Active Directory ドメイン内のサービス インスタンスを一意に識別します。 SPN は、サービス インスタンスを実行するログオン アカウントに関連付けられます。
Kerberos 認証を通じて Analysis Services に接続するクライアント アプリケーションの場合、Analysis Services クライアント ライブラリは、接続文字列のホスト名と、Analysis Services のどのリリースでも固定されているその他のよく知られている変数 (サービス クラスなど) を使用して、SPN を構築します。
相互認証が行われるようにするには、クライアントによって構築された SPN が Active Directory ドメイン コントローラー (DC) 上の対応する SPN オブジェクトと一致する必要があります。 つまり、ユーザーが接続文字列でホスト名を指定するすべての方法に対応するには、1 つの Analysis Services インスタンスに複数の SPN の登録が必要になる場合があります。 たとえば、サーバーの完全修飾ドメイン名 (FQDN) と短いコンピューター名の両方に対応するには、2 つの SPN が必要になると思われます。 接続を成功させるには、Analysis Services SPN を正しく登録することが重要です。 SPN が存在しなかったり、形式が不適切だったり、重複していたりすると、接続は失敗します。
SPN の登録作業は、Analysis Services 管理者が手動で行います。 SQL Server データベース エンジンとは異なり、Analysis Services がサービス開始時に SPN を自動登録することはありません。 手動登録は、Analysis Services が、既定の仮想アカウント、ドメイン ユーザー アカウント、またはビルトイン アカウント (サービスごとの SID を含む) で実行される場合に必要です。
ドメイン管理者によって作成された定義済みの "管理されたサービス アカウント" でサービスが実行されている場合、SPN の登録は不要です。 ドメインの機能レベルによっては、SPN の登録にドメイン管理者権限が必要になることに注意してください。
ヒント
Microsoft Kerberos Configuration Manager for SQL Server は、 SQL Serverと Kerberos に関する接続性の問題のトラブルシューティングに役立つ診断ツールです。 Kerberos 認証の詳細については、「 Microsoft® Kerberos Configuration Manager for SQL Server®」をご覧ください。
このトピックは、次のセクションで構成されています。
HTTP アクセス用に構成された SSAS インスタンスの SPN 登録
固定ポートをリッスンしている SSAS インスタンスのための SPN の登録
SPN の登録が必要な場合
接続文字列で "SSPI=Kerberos" を指定するクライアント接続では、Analysis Services インスタンスの SPN 登録要件が導入されます。
SPN の登録は、次の場合に必要になります。 詳細については、「 Configure Analysis Services for Kerberos constrained delegation」をご覧ください。
ID 委任は、ユーザーの ID をクライアント アプリケーションまたは中間層サービスから Analysis Services に引き渡す際に必要となります。 ID 委任は通常、特定のオブジェクトにユーザーごとの権限 (つまりフィルター) が定義されているときに使用されます。
Excel Services、Reporting Services などの中間層サービスは、ユーザー ID の権限借用によって、Analysis Services からデータを取得しますが、その際の制約付き委任の構成で ID 委任が関係します。 この動作をサポートするには、Excel Services や Reporting Services の制約付き委任を構成する際に、接続先のサービスとして Analysis Services の SPN を指定する必要があります。
Analysis Services が、DirectQuery モードを使用して表形式データベースのために SQL Server リレーショナル データベースのデータを取得するときに、ユーザー ID を委任する。 これは、Analysis Services がユーザー ID を別のサービスに委任する唯一のシナリオです。
Analysis Services 用の SPN の形式
SPN の登録には setspn を使用します。 最近のオペレーティング システムでは、 setspn はシステム ユーティリティとしてインストールされます。 詳細については、「 SetSPN」をご覧ください。
次の表では、Analysis Services SPN の各部分について説明します。
要素 | 説明 |
---|---|
サービス クラス | MSOLAPSvc.3 は、サービスを Analysis Services インスタンスとして識別します。 .3 は、Analysis Services 伝送で使用される XMLA-over-TCP/IP プロトコルのバージョンへの参照です。 製品リリースとは無関係です。 そのため、MSOLAPSvc.3 は、SQL Server 2005、2008、2008 R2、2012、およびプロトコル自体が改訂されるまで Analysis Services の将来のリリースに適したサービス クラスです。 |
ホスト名 | サービスが実行されているコンピューターを識別します。 完全修飾ドメイン名にすることも、NetBIOS 名にすることもできます。 どちらも SPN の登録が必要です。 サーバーの NetBIOS 名の SPN を登録する際は必ず、登録の重複がないか SetupSPN -S を使ってご確認ください。 NetBIOS 名はフォレスト内で一意であるとは限らないので、SPN 登録が重複すると接続が失敗します。負荷分散された Analysis Services クラスターの場合、ホスト名はクラスターに割り当てられた仮想名にする必要があります。 IP アドレスを使用して SPN を作成しないでください。 Kerberos は、ドメインの DNS 解決機能を使用します。 IP アドレスを指定すると、この機能がバイパスされます。 |
ポート番号 | ポート番号は SPN 構文の一部ですが、Analysis Services SPN を登録する際にポート番号を指定することはありません。 通常は標準 SPN 構文でポート番号を提供するために使用されるコロン (:) 文字が、Analysis Services によってインスタンス名を指定するために使用されます。 Analysis Services インスタンスでは、ポートは既定のポート (TCP 2383) であるか、SQL Server Browser サービスによって割り当てられるポート (TCP 2382) であると見なされます。 |
インスタンス名 | Analysis Services は、同じコンピューター上に複数回インストールできる、レプリケート可能なサービスです。 各インスタンスは、インスタンス名によって識別されます。 インスタンス名の先頭には、コロン (:) 文字が付いています。 たとえば、ホスト コンピューター名が SRV01 で、名前付きインスタンスが SSAS-Tabular である場合、SPN は SRV01:SSAS-Tabular になります。 名前付き Analysis Services インスタンスを指定するための構文は、他の SQL Server インスタンスによって使用される構文とは異なることに注意してください。 他のサービスは、SPN にインスタンス名を追加するために、円記号 (\) を使用します。 |
サービス アカウント | これは、 MSSQLServerOLAPService Windows サービスの開始アカウントです。 アカウントには、Windows ドメイン ユーザー アカウント、仮想アカウント、管理されたサービス アカウント (MSA)、またはサービスごとの SID、NetworkService、LocalSystem などのビルトイン アカウントを使用できます。 Windows ドメイン ユーザー アカウントは、domain\user または user@domain 形式を使用できます。 |
仮想アカウントに対する SPN の登録
仮想アカウントは、SQL Server サービスの既定のアカウント タイプです。 仮想アカウントは、既定のインスタンスの 場合は NT Service\MSOLAPService 、名前付きインスタンスの 場合は NT Service\MSOLAP$<instance-name> です。
"仮想" という名前が示すとおり、Active Directory にはこれらのアカウントが存在しません。 仮想アカウントは、ローカル コンピューター上にのみ存在します。 外部のサービス、アプリケーション、またはデバイスに接続するときは、ローカル コンピューターのアカウントを使って接続が行われます。 したがって、仮想アカウントで実行されている Analysis Services には、実際にはコンピューターのアカウントに対する SPN が登録されていることになります。
NT Service\MSOLAPService として実行されている既定のインスタンスの構文例
この例に示した setspn の構文は、Analysis Services の既定のインスタンスが既定の仮想アカウントで実行されていることを想定しています。 この例で使用されているコンピューターのホスト名は AW-SRV01です。 SPN の登録では、仮想アカウント ( NT Service\MSOLAPService ) ではなく、 コンピューターのアカウントを指定する必要があります。
Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com AW-SRV01
注意
NetBIOS ホスト名用と、ホストの完全修飾ドメイン名用に、必ず 2 つの SPN 登録を作成してください。 Analysis Services に接続するクライアント アプリケーションが、すべて同じホスト名規約を使用しているとは限りません。 SPN 登録を 2 つ作成することによって、両方の形式のホスト名に対応することができます。
NT Service\MSOLAP$<instance-name として実行されている名前付きインスタンスの構文の例>
この例に示した setspn の構文は、名前付きインスタンスが既定の仮想アカウントで実行されていることを想定しています。 この例のコンピューターのホスト名は AW-SRV02、インスタンス名は AW-FINANCE です。 ここでも、仮想アカウント NT Service\MSOLAP$<instance-name ではなく、SPN に指定されているマシン アカウントです>。
Setspn -s MSOLAPSvc.3/AW-SRV02.AdventureWorks.com:AW-FINANCE AW-SRV02
ドメイン アカウントに対する SPN の登録
Analysis Services インスタンスの実行にはドメイン アカウントを使用するのが一般的です。
ネットワークまたはハードウェアの負荷分散クラスターで実行される Analysis Services インスタンスにはドメイン アカウントが必要です。クラスター内の各インスタンスが、同じドメイン アカウントで実行される必要があります。
ドメイン ユーザーとして実行されている既定のインスタンスの構文例
この例に示した setspn の構文は、Analysis Services の既定のインスタンスが、AdventureWorks ドメイン内のドメイン ユーザー アカウント SSAS-Serviceで実行されていることを想定しています。
Setspn -s msolapsvc.3/AW-SRV01.Adventureworks.com AdventureWorks\SSAS-Service
ヒント
Analysis Services サーバーに対して SPN が作成されたかどうかは、SPN の登録方法に応じて Setspn -L <domain account>
または Setspn -L <machinename>
を実行してご確認ください。 一覧に MSOLAPSVC.3/<hostname> が表示されます。
ビルトイン アカウントに対する SPN の登録
この方法はお勧めできませんが、従来の Analysis Services インストールは、Network Service、Local Service、Local System などのビルトイン アカウントで実行されるように構成されていることもあります。
ビルトイン アカウントで実行されている既定のインスタンスの構文例
ビルトイン アカウントまたはサービスごとの SID で実行されるサービスの SPN 登録は、仮想アカウントに使用される SPN 構文と同じです。 使用するのは仮想アカウント名ではなく、コンピューターのアカウントです。
Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com AW-SRV01
名前付きインスタンスのための SPN の登録
既定では、Analysis Services の名前付きインスタンスでは、SQL Server Browser サービスによって検出される動的ポートの割り当てが使用されます。 Kerberos 接続を有効にするには、名前付きインスタンスの NetBIOS と FQDN SPN のみを作成する必要があります。
ドメイン ユーザーとして実行されている名前付きインスタンスの構文例
次の例は、AdventureWorks ドメインのドメイン ユーザー アカウント SSAS-Service で実行されている Analysis Services 名前付きインスタンスAW-FINANCE
の構文を示していますsetspn
。 この例で使用されているコンピューターのホスト名は AW-SRV01 です。
FQDN SPN: Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com:AW-FINANCE AdventureWorks\SSAS-Service
NetBIOS SPN: Setspn -s MSOLAPSvc.3/AW-SRV01:AW-FINANCE AdventureWorks\SSAS-Service
注意
固定ポートでリッスンするように名前付きインスタンスを構成した場合は、次の手順を実行して、クライアント アプリケーションからの Kerberos 接続を使用します。
- SQL Server Browser サービスを開始します。
- 接続文字列でポート番号を使用している場合は、ポート番号を削除し、インスタンス名を追加して、アプリケーションが SQL Server Browser サービスを介してポート番号を受信できるようにします。
ヒント
SPN の登録方法に応じて、 または Setspn -L <machinename>
コマンドを実行Setspn -L <domain account>
して、SQL 名前付きインスタンスに対して SPN が作成されたかどうかを確認します。
Microsoft Kerberos Configuration Manager for SQL Server は、 SQL Serverと Kerberos に関する接続性の問題のトラブルシューティングに役立つ診断ツールです。 このツールは、SPN と委任の潜在的な問題を特定し、特定された問題を解決するための自動化された手順を提供するのに役立ちます。 Kerberos 認証の詳細については、「 Microsoft® Kerberos Configuration Manager for SQL Server®」をご覧ください。
SSAS クラスターのための SPN の登録
Analysis Services フェールオーバー クラスターの場合、ホスト名はクラスターに割り当てられた仮想名にする必要があります。 これは、既存の WSFC の上に Analysis Services をインストールしたときに、SQL Server のセットアップ中に指定された、SQL Server のネットワーク名です。 Active Directory で、この名前を見つけることができます。 フェールオーバー クラスター マネージャー | の[ロール | リソース] タブにも表示されます。[リソース] タブのサーバー名は、SPN コマンドの "仮想名" として使用する必要があります。
Analysis Services クラスターの SPN 構文
Setspn -s msolapsvc.3/<virtualname.FQDN > <domain user account>
Analysis Services クラスターのノードは、各ノードが同じ SID を持つように、既定のポート (TCP 2383) を使用し、同じドメイン ユーザー アカウントで実行する必要があることに注意してください。 詳細については、「 SQL Server Analysis Services をクラスター化する方法 」をご覧ください。
HTTP アクセス用に構成された SSAS インスタンスのための SPN の登録
ソリューションの要件によっては、Analysis Services を HTTP アクセス用に構成してある場合があります。 ソリューションに中間層コンポーネントとして IIS が含まれ、Kerberos 認証がソリューションの要件である場合は、IIS のために手動で SPN を登録しなければならないことがあります。 詳細については、「SQL Server 2008 Analysis Services を構成する方法」および「SQL Server 2005 Analysis Services で Kerberos 認証を使用する方法」の「IIS を実行しているコンピューターの設定を構成する」を参照してください。
Analysis Services インスタンスのための SPN の登録という点では、TCP 用に構成されたインスタンスと HTTP 用に構成されたインスタンスとの間に違いはありません。 IIS から Analysis Services への接続は、MSMDPUMP ISAPI 拡張機能を使用して、常に TCP です。
つまり、既定のインスタンスまたは名前付きインスタンスのために SPN を登録する、前のセクションの手順を使用できます。 ホスト名を指定する際には、HTTP アクセス用にサービスを構成したときに msmdpump.ini ファイルで指定したホスト名を使用してください。
HTTP アクセスの詳細については、「 インターネット インフォメーション サービス (IIS) 8.0 で Analysis Services への HTTP アクセスを構成する」を参照してください。
固定ポートをリッスンしている SSAS インスタンスのための SPN の登録
Analysis Services SPN 登録でポート番号を指定することはできません。Analysis Services SPN 登録では、インスタンス名のみを使用できます。 Analysis Services を既定のインスタンスとしてインストールし、既定以外のポートでリッスンするように構成した場合、Kerberos を使用してそのインスタンスに接続することはできません。 そのインスタンスへの Kerberos 接続を有効にするには、既定のポート (TCP 2383) でリッスンするように構成する必要があります。 既定以外のポートでリッスンしている Analysis Services の既定のインスタンスでは、NTLM 接続のみを受け入れることができます。 名前付きインスタンスの場合は、ブラウザー サービスSQL Server開始し、ポート番号ではなく接続文字列でインスタンス名を使用する必要があります。
1 つの Analysis Services インスタンスは、1 つのポートでしかリッスンできません。 複数のポートの使用はサポートされていません。 ポートの構成の詳細については、「 Configure the Windows Firewall to Allow Analysis Services Access」をご覧ください。
参照
Microsoft BI 認証と ID 委任
Kerberos を使用した相互認証
サービス プリンシパル名 (SPN) SetSPN の構文 (Setspn.exe)
Setspn
サービス アカウントのステップ バイ ステップ ガイド
Windows サービス アカウントと権限の構成
インターネット インフォメーション サービスでホストされている Web アプリケーションを構成するときに SPN を使用する方法
サービス アカウントの新機能
SharePoint 2010 製品向けの Kerberos 認証の構成 (ホワイト ペーパー)