レポート サーバーのサービス プリンシパル名 (SPN) を登録する方法

相互認証に Kerberos プロトコルを使用するネットワークに Reporting Services を配置する場合に、レポート サーバー サービスをドメイン ユーザー アカウントとして実行するように構成するには、レポート サーバー サービスのサービス プリンシパル名 (SPN) を作成する必要があります。さらに、ドメイン ユーザーをサービス アカウントとして構成する場合、レポート サーバーは NTLM 認証を使用するように構成する必要があります。

SPN について

SPN は、Kerberos 認証を使用するネットワークでのサービスの一意識別子です。SPN は、サービス クラス、ホスト名、およびポートで構成されます。Kerberos 認証を使用するネットワークでは、ビルトイン コンピュータ アカウント (NetworkService や LocalSystem など) またはユーザー アカウントにサーバーの SPN を登録する必要があります。ビルトイン アカウントには、自動的に SPN が登録されます。一方、ドメイン ユーザー アカウントでサービスを実行する場合は、使用するアカウントに手動で SPN を登録する必要があります。

SPN を作成するには、SetSPN コマンド ライン ユーティリティを使用します。詳細については、Microsoft Windows Server TechCenter の「Setspn の概要」を参照してください。

このユーティリティをドメイン コントローラで実行するには、ドメイン管理者であることが必要です。

構文

SetSPN ユーティリティを使用してレポート サーバーの SPN を作成する場合は、次のようなコマンド構文を使用します。

Setspn -a http/<computername>.<domainname>:<port> <domain-user-account>

SetSPN は、Windows Server 2003 Service Pack 1 サポート ツール パックに含まれています。これは別途ダウンロードする必要があります。-a 引数は、特定のアカウントにサービス プリンシパル名を登録するために使用します。

HTTP はサービス クラスです。レポート サーバー Web サービスは、HTTP.SYS で実行されます。HTTP 用に SPN を作成すると、副次的に、HTTP.SYS で実行される同じコンピュータ上のすべての Web アプリケーション (IIS でホストされるアプリケーションを含む) に対して、ドメイン ユーザー アカウントに基づいてチケットが付与されます。これらのサービスを別のアカウントで実行すると、認証要求が失敗します。この問題を回避するには、すべての HTTP アプリケーションが同じアカウントで実行されるように構成するか、またはアプリケーションごとにホスト ヘッダーを作成し、作成したホスト ヘッダーごとに個別の SPN を作成することを検討してください。ホスト ヘッダーを構成する場合、Reporting Services 構成にかかわらず DNS を変更する必要があります。

<computername>、<domainname>、および <port> に指定した値で、レポート サーバーをホストするコンピュータのネットワーク アドレスが一意に識別されます。これは、ローカル ホスト名にすることも、完全修飾ドメイン名 (FQDN) にすることもできます。ドメインが 1 つしかなく、かつポート 80 を使用している場合は、コマンド ラインで <domainname> と <port> を省略できます。<domain-user-account> は、レポート サーバー サービスが実行され、SPN を登録する必要があるユーザー アカウントです。

ドメイン ユーザー アカウントに対する SPN の登録

ドメイン ユーザーとして実行されるレポート サーバー サービスの SPN を登録するには

  1. Reporting Services をインストールし、レポート サーバー サービスをドメイン ユーザー アカウントとして実行するように構成します。この手順が完了しないと、ユーザーはレポート サーバーに接続できないので注意してください。

  2. ダウンロード センターから Windows Server 2003 Service Pack 1 のサポート ツールをダウンロードしてインストールします。

  3. ドメイン コントローラにドメイン管理者としてログオンします。

  4. コマンド プロンプト ウィンドウを開きます。

  5. 次のコマンドをコピーし、プレースホルダの値を実際のネットワークで有効な値で置き換えます。

    Setspn -a http/<computer-name>.<domain-name>:<port> <domain-user-account>
    
  6. コマンドを実行します。

  7. RsReportServer.config ファイルを開き、<AuthenticationTypes> セクションを検索します。このセクションの最初のエントリとして <RSWindowsNegotiate/> を追加して、NTLM を有効にします。