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

適用対象: Linux SQL Server Reporting Services の SQL Server 2019 (15.x) 以降のバージョン (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年) Red Hat Enterprise Linux (RHEL) 8.x Server、最新の累積アップデート(CU)を搭載したSQL Server 2019(15.x)を実行

アカウントを構成する

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

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

SQL Server on Linux の構成

PBIRSをSQL Server on Linuxをバックエンドとして使ってReport Serverカタログデータベースをホストするよう設定(または再設定)する前に、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で規定されたMicrosoftのMIT Kerberos標準の拡張を使って委任を設定し、ユーザーからプロキシへのサービス(S4U2proxy)を使用します。 この仕組みにより、PBIRSサービスおよびSQL Serverサービスがユーザーを代表して他の指定サービスのチケットを取得することができます。

例えば、reportuserがPBIRSサーバーのウェブインターフェースで認証してレポートを表示すると、レポートは実行され、SQL Serverテーブルのようなデータソースからデータにアクセスする必要があります。 SQL Serverサービスは認証時にPBIRSサーバーに付与されたreportuserKerberosサービスチケットを取得しなければなりません。 S4U2プロキシ拡張は、ユーザーのTGT(チケット付与チケット)やセッションキーを転送せずに必要な認証情報を渡すためのプロトコル移行を提供します。

この結果を得るために、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属性の前にRSWindowsNegotiateRSWindowsKerberos属性を追加してください。 例えば次が挙げられます。

<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つのユーザーデータベース(AdventureWorksAdventureWorksDW)のdb_datareader固定データベースの役割に追加しました。

レポートがデプロイされた後

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