SQL Server on Linux 用に Power BI Report Server カタログ データベースを構成する

適用対象: SQL Server 2019 (15.x) 以降 - Linux SQL Server Reporting Services (2019 以降)

この記事では、SQL Server on Linux 用の Power BI Report Server (PBIRS) カタログ データベースをインストールして構成する方法について説明します。

前提条件

この記事では、例でドメイン CORPNET.CONTOSO.COM と次の構成を使用します。

構成するマシン

マシン オペレーティング システム 詳細
Windows ドメイン コントローラー Windows Server 2019 または Windows Server 2022
レポートの開発とデプロイ (WIN19) Visual Studio 2019 を実行している Windows Server 2019 - レポートの開発とデプロイ

- 要求ドリブンまたはスケジュールされたレポート出力のリポジトリとして機能するファイル共有サービス
SQL Server Reporting Services (WIN22) サポートされているバージョンの Power BI Report Server (PBIRS) 1 を実行している Windows Server 2022
開発者用マシン SQL Server Management Studio (SSMS) を実行している Windows 11 クライアント
SQL Server 2019 (rhel8test) 最新の CU で SQL Server 2019 (15.x) を実行している Red Hat Enterprise Linux (RHEL) 8.x Server

アカウントの構成

アカウント名 詳細
CORPNET\cluadmin グローバル ユーザー アカウント ドメイン コントローラーを除くすべての Windows サーバー上のローカル 管理者アカウント。
CORPNET\pbirsservice PBIRS サービス アカウント
CORPNET\linuxservice SQL Server サービス アカウント (SQL Server on Linux 環境専用に作成されたもの)
CORPNET\reportuser PBIRS の通常のユーザーをシミュレートするために使用されるグローバル ユーザー アカウント

この例のシナリオでは、Kerberos の委任を正しく機能させるために、個別のサーバーと個別のアカウントを使用します (つまり、ダブルホップ シナリオを処理)。

SQL Server on Linux の構成

レポート サーバー カタログ データベースをホストするバックエンドとして SQL Server on Linux を使用するための PBIRS の構成 (または再構成) に進む前に、SQL Server on Linux インスタンスがドメインに参加していることを確認します。

adutil をインストールして構成し、「チュートリアル: adutil を使用して SQL Server on Linux で Active Directory 認証を構成する」の手順に従って、ドメインに参加することができます。

Note

RHEL 8 の特定のパッケージについては、「SSSD を使用した RHEL システムの AD への直接接続」を参照してください。

SQL Server サービス プリンシパル名 (SPN)

PBIRS をインストールして構成する前に、CORPNET ドメイン で必要な SPN を構成する必要があります。 この場合はドメイン管理権限を持つユーザーを使用できますが、SPN を作成するのに十分な権限を持つユーザーであれば十分です。 SPN の作成後、Kerberos の制約付き委任を使用するようにアカウントを構成する必要があります。

このシナリオに必要な最小限の SPN を次に示します。

  • 管理コマンド プロンプトを使用して、SQL Server on Linux サービス アカウントの SPN を作成します。 このインスタンスでは、既定のポート 1433 が使用されています。

    setspn -S MSSQLSvc/rhel8test:1433 CORPNET\linuxservice
    setspn -S MSSQLSvc/rhel8test.CORPNET.CONTOSO.COM:1433 CORPNET\linuxservice
    
  • 次の 2 つの SPN は、Power BI Report Server サービス アカウント用です。

    setspn -S HTTP/WIN22.CORPNET.CONTOSO.COM CORPNET\pbirsservice
    setspn -S HTTP/WIN22 CORPNET\pbirsservice
    

Kerberos チケットを転送するための Kerberos 要件に対処するために、制約付き委任実装内での動作時に、RFC 4120 で指定されている MIT Kerberos 標準へのマイクロソフトの拡張機能を使用して委任を構成し、プロキシに対するユーザー用サービス (S4U2proxy) を使用します。 このメカニズムにより、PBIRS サービスと SQL Server サービスは、ユーザーに代わって他の指定されたサービスへのサービス チケットを取得できます。

たとえば、レポートを表示するために reportuser が PBIRS サーバーの Web インターフェイスで認証を行うと、レポートが実行され、SQL Server テーブルなどのデータ ソースのデータにアクセスする必要があります。 SQL Server サービスは、PBIRS サーバーへの認証プロセス中に付与された reportuser Kerberos サービス チケットを取得する必要があります。 S4U2proxy 拡張機能は、ユーザーの TGT (Ticket Granting Ticket) またはユーザーのセッション キーを転送する必要なく、必要な資格情報を渡すために必要なプロトコル切り替えを提供します。

これを実現するには、PBIRS サービス アカウント (この例では pbirsservice) と SQL Server サービス アカウント (この例では linuxservice) に、ドメインで委任に対する信頼された認証の権限を付与する必要があります。 この権限を付与する方法は複数あります (ADSI Edit、Computer and Users UI など)。 この例では、管理者権限の PowerShell コマンドを使用します。

  • SQL Server サービス アカウントを取得し、委任を許可するように設定します。 この手順では、Kerberos の委任だけでなく、アカウントの S4U2proxy (プロトコル切り替え用) の委任も有効になります。 最後の 2 つのコマンドレットは、SQL Server インスタンスの SPN であるドメイン内の特定のリソースに委任権限を適用します。

    Get-ADUser -Identity linuxservice | Set-ADAccountControl -TrustedToAuthForDelegation $True
    Set-ADUser -Identity linuxservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test.CORPNET.CONTOSO.COM:1433')}
    Set-ADUser -Identity linuxservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test:1433')}
    
  • Power BI Report Server サービス アカウントを取得し、委任を許可するように設定します。 この手順では、Kerberos の委任だけでなく、アカウントの S4U2proxy (プロトコル切り替え用) の委任も有効になります。 最後の 2 つのコマンドレットは、SQL Server と PBIRS サーバーの SPN であるドメイン内の特定のリソースに委任権限を適用します。

    Get-ADUser -Identity pbirsservice | Set-ADAccountControl -TrustedToAuthForDelegation $True
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test.CORPNET.CONTOSO.COM:1433')}
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('MSSQLSvc/rhel8test:1433')}
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/Win22.CORPNET.CONTOSO.COM')}
    Set-ADUser -Identity pbirsservice -Add @{'msDS-AllowedToDelegateTo'=@('HTTP/Win22')}
    

Power BI Report Server (PBIRS)

PBIRS は構成限定モードでインストールする必要があります。

PBIRS をインストールした直後に、Kerberos 認証をサポートするように PBIRS を構成する必要があります。 PBIRS は、既定では NTLM 認証のみをサポートします。 インストール プロセスでは、PBIRS 構成プロセスを完了する前に、UI またはコマンド ラインでいずれかの PBIRS 構成ファイルを更新する必要があります。 既存の PBIRS インストールを使用する場合でも、編集を実行する必要があり、PBIRS サービスは再起動して有効にする必要があります。 構成ファイルは rsreportserver.config です。 PBIRS がインストールされたパスにあります。 たとえば、PBIRS の既定のインストールでは、ファイルは次の場所にあります。

C:\Program Files\Microsoft SQL Server Reporting Services\SSRS\ReportServer

この XML ファイルは、任意のテキスト エディターで編集できます。 編集する前に、忘れずにファイルのコピーを作成してください。 ファイルを開いたら、XML ドキュメント内で AuthenticationTypes タグを検索し、RSWindowsNTLM 属性の前に RSWindowsNegotiate 属性と RSWindowsKerberos 属性を追加します。 次に例を示します。

<Authentication>
<AuthenticationTypes>
    <RSWindowsNegotiate/>
    <RSWindowsKerberos/>
    <RSWindowsNTLM/>
</AuthenticationTypes>

SQL Server on Linux では SQL 認証と Kerberos 認証のみがサポートされているため、この手順が必要です。

Note

RSWindowsKerberos 属性を入れるだけで済みますが、Windows と Linux の SQL Server インスタンスの組み合わせをサポートするサーバーのフリート全体で PBIRS 構成ファイルを標準化する場合は、RSWindowsNegotiate を使用すると便利です。

PBIRS UI の構成

構成ファイルの編集が完了した後に PBIRS サービスが再起動されたら、ドメイン ベースのサービス アカウントの設定や Linux インスタンス上のリモート SQL Server への接続など、残りの PBIRS 構成オプションに進むことができます。

PBIRS サービス アカウントは、適切なアクセス許可を持つ SQL Server インスタンス内に表示されます。 このアクセス許可は、SQL Server Management Studio (SSMS) で確認できます。 オブジェクト エクスプローラーで、[セキュリティ] > [ログイン] に移動し、CORPNET\pbirsservice アカウントを右クリックして [プロパティ] を選択します。 アクセス許可は、[ユーザー マッピング] ページに表示されます。

最後に、テスト目的で SQL Server にログインとして reportuser を追加できます。 この場合、簡単なボタンを使用し、2 つのユーザー データベース AdventureWorks および AdventureWorksDW 内の db_datareader 役割にユーザーを追加しました。

レポートのデプロイ後

レポートのデプロイ後にレポートのサブスクリプションを設定する必要がある場合は、PBIRS データ ソースに埋め込み資格情報を構成することをお勧めします。 レポート表示するユーザーの偽装オプションで構成された埋め込み資格情報を使用する場合を除き、すべての資格情報オプションが正しく機能します。 偽装がさらに困難になる SQL Server on Linux 実装内の制限のため、Windows 資格情報を使用する場合、この手順はうまくいきません。