Power Query を使用したライブ OData フィードの SAP プリンシパル伝達を有効にする

Microsoft Excel や Power BI で SAP データセットを操作できることは、多くのお客様にとっての共通の要件です。

この記事では、Power Query を使用して、SAP データセットを OData を介して使用できるようにするための必要な構成とコンポーネントについて説明します。 SAP データ統合は、データエクスポート (SAP リスト ビューアー (ALV) の CSV エクスポートなど) とは異なり、Microsoft Excel や Power BI などのクライアントからオンデマンドで更新できるため、"ライブ" と見なされます。 これらのエクスポートは、本質的に静的であり、データの取得元との継続的な関係はありません。

この記事では、Power Query の既知の Microsoft Entra ID と SAP バックエンド ユーザーとの間でのエンド ツー エンドのユーザー マッピングに重点を置いて説明をします。 このメカニズムは、多くの場合、SAP プリンシパル伝達と呼ばれます。

説明されている構成は、Azure API ManagementSAP GatewaySAP OAuth 2.0 Server with AS ABAP、OData ソースに焦点を置いたものですが、使用されている概念は Web ベースの任意のリソースに当てはまります。

重要

注: SAP プリンシパル伝達では、ライセンスを持つ名前付き SAP ユーザーへのユーザー マッピングが保証されます。 SAP ライセンスに関連する質問については、SAP 担当者にお問い合わせください。

SAP 統合を使用した Microsoft 製品の概要

SAP 製品と Microsoft 365 ポートフォリオの統合は、カスタム コードやパートナー アドオンから、完全にカスタマイズされた Office 製品まで多岐に渡ります。 いくつかの例を次に示します。

この記事で説明されているメカニズムでは、Power Query の標準の組み込み OData 機能を使用しています。これは、Azure にデプロイされた SAP ランドスケープに重点を置いたものです。 オンプレミスのランドスケープに対処するには、Azure API Management のセルフホステッド ゲートウェイを使用してください。

Power Query をサポートする Microsoft 製品の詳細については、Power Query のドキュメントを参照してください。

設定の考慮事項

エンド ユーザーは、ローカル デスクトップまたは Web ベースのクライアント (Excel や Power BI など) を選択できます。 クライアント アプリケーションとターゲット SAP ワークロードの間のネットワーク パスについては、クライアントの実行環境を考慮する必要があります。 VPN などのネットワーク アクセス ソリューションは、Excel for the web などのアプリには適用できません。

Azure API Management には、Azure ランドスケープ (内部または外部) に適用できるさまざまなデプロイ モードを使用した、ローカル環境と Web ベース環境のニーズが反映されています。 Internal は、プライベート仮想ネットワークに完全に制限されたインスタンスを指します。これに対し、external では Azure API Management へのパブリック アクセスが保持されます。 オンプレミスのインストールでは、Azure API Management のセルフホステッド ゲートウェイを使用する場合と同様に、ハイブリッド デプロイでアプローチを適用する必要があります。

Power Query では、API サービス URL と Microsoft Entra アプリケーション ID URL の合致が必要となります。 要件を満たすように、Azure API Management 用のカスタム ドメインを構成してください。

SAP ゲートウェイは、目的のターゲット OData サービスを公開するように構成する必要があります。 SAP トランザクション コード /IWFND/MAINT_SERVICE を使用して、利用可能なサービスを検出し、アクティブ化してください。 詳細については、SAP の OData 構成を参照してください。

Azure API Management のカスタム ドメイン構成

下のスクリーンショットは、マネージド証明書と Azure App Service ドメインを使用した api.custom-apim.domain.com というカスタム ドメインを使った、API Management での構成例を示したものです。 ドメイン証明書のその他のオプションについては、Azure API Management のドキュメントを参照してください。

Screenshot that shows the custom domain configuration in Azure API Management.

ドメインの要件に従って、カスタム ドメインのセットアップを完了します。 詳細については、カスタム ドメインに関するドキュメントを参照してください。 ドメイン名の所有権を証明し、証明書へのアクセス権を付与するには、次のように、それらの DNS レコードを Azure App Service ドメイン custom-apim.domain.com に追加します。

Screenshot that shows custom domain mapping to Azure API Management domain.

Azure API Management テナントに対するそれぞれの Microsoft Entra アプリケーションの登録は、次のようになります。

Screenshot that shows the app registration for Azure API Management in Microsoft Entra ID.

Note

Azure API Management 用のカスタム ドメインを使用できない場合は、代わりにカスタム Power Query コネクタを使用する必要があります。

Power Query 用の Azure API Management ポリシーの設計

Power Query の認証フローをサポートするには、ターゲットの OData API に対してこちらの Azure API Management ポリシーを使用します。 以下に示すのは、このポリシーのスニペットです。認証メカニズムが強調表示されています。 Power Query 用に使用されるクライアント ID は、こちらで確認できます。

<!-- if empty Bearer token supplied assume Power Query sign-in request as described [here:](/power-query/connectorauthentication#supported-workflow) -->
<when condition="@(context.Request.Headers.GetValueOrDefault("Authorization","").Trim().Equals("Bearer"))">
    <return-response>
        <set-status code="401" reason="Unauthorized" />
        <set-header name="WWW-Authenticate" exists-action="override">
            <!-- Check the client ID for Power Query [here:](/power-query/connectorauthentication#supported-workflow) -->
            <value>Bearer authorization_uri=https://login.microsoftonline.com/{{AADTenantId}}/oauth2/authorize?response_type=code%26client_id=a672d62c-fc7b-4e81-a576-e60dc46e951d</value>
        </set-header>
    </return-response>
</when>

組織アカウントのログイン フローのサポートに加えて、このポリシーでは、OData URL 応答の書き換えがサポートされています。これは、ターゲット サーバーが元の URL で応答するためです。 ここで説明したポリシーのスニペットを以下に示します。

<!-- URL rewrite in body only required for GET operations -->
<when condition="@(context.Request.Method == "GET")">
    <!-- ensure downstream API metadata matches Azure API Management caller domain in Power Query -->
    <find-and-replace from="@(context.Api.ServiceUrl.Host +":"+ context.Api.ServiceUrl.Port + context.Api.ServiceUrl.Path)" to="@(context.Request.OriginalUrl.Host + ":" + context.Request.OriginalUrl.Port + context.Api.Path)" />
</when>

Note

インターネットからの安全な SAP アクセスと、SAP 境界ネットワークの設計について詳しくは、こちらのガイドを参照してください。 Azure での SAP API のセキュリティ保護については、こちらの記事を参照してください。

Excel Desktop での Power Query を使用した SAP OData 認証

ここで説明している構成を使用すると、Power Query の組み込みの認証メカニズムが、公開された OData API で使用できるようになります。 [データ] リボン ([データの取得] -> [他のソースから ] -> [OData フィードから]) を使用して、Excel シートに新しい OData ソースを追加してください。 ターゲット サービスの URL を保守してください。 次の例では、SAP Gateway デモ サービス GWSAMPLE_BASIC を使用しています。 これを検出またはアクティブ化するには、SAP トランザクション /IWFND/MAINT_SERVICE を使用します。 最後に、公式の OData インポート ガイドを使用して、これを Azure API Management に追加します。

Screenshot that shows how to discover the OData URL within Azure API Management.

ベース URL を取得し、ターゲット アプリケーションに挿入します。 次の例は、Excel Desktop との統合エクスペリエンスを示したものです。

Screenshot that shows the OData configuration wizard in Excel Desktop.

ログイン方法を [組織アカウント] に切り替え、[サインイン] をクリックします。 SAP プリンシパル伝達を使用して SAP ゲートウェイ上の名前付き SAP ユーザーにマップされる Microsoft Entra アカウントを指定します。 構成の詳細については、こちらの Microsoft チュートリアルを参照してください。 SAP プリンシパル伝達の詳細については、こちらの SAP コミュニティの投稿と、こちらのビデオ シリーズを参照してください。

次に、Excel で Power Query によって認証設定が適用されるレベルを選択します。 次の例では、(サンプル サービス GWSAMPLE_BASIC だけでなく) ターゲット SAP システムでホストされているすべての OData サービスに適用される設定を示しています。

Note

以下の画面の URL レベルでの承認スコープ設定は、SAP バックエンドでの実際の承認とは無関係です。 SAP Gateway では、各要求の最終検証コントロールと、マップされた名前付き SAP ユーザーの関連する承認が維持されます。

Screenshot that shows the login flow within Excel for the Organizational Account option.

重要

上記のガイダンスでは、Power Query を介して Microsoft Entra ID から有効な認証トークンを取得するプロセスに焦点を当てています。 このトークンは、SAP プリンシパル伝達のためにさらに処理する必要があります。

Azure API Management を使用して SAP プリンシパル伝達を構成する

中間層での SAP プリンシパル伝達の構成を完了するには、こちらの 2 つ目の SAP 用 Azure API Management ポリシーを使用します。 SAP Gateway バックエンドの構成の詳細については、こちらの Microsoft チュートリアルを参照してください。

Note

SAP プリンシパル伝達の詳細については、こちらの SAP コミュニティの投稿と、こちらのビデオ シリーズを参照してください。

Diagram that shows the Microsoft Entra app registrations involved in this article.

このポリシーは、Microsoft Entra ID と SAP Gateway の間で確立された SSO セットアップに依存します (Microsoft Entra ギャラリーから SAP NetWeaver を使用してください)。 以下に示すのは、デモ ユーザーの Adele Vance の例です。 Microsoft Entra ID と SAP システムの間のユーザー マッピングは、一意のユーザー識別子としてのユーザー プリンシパル名 (UPN) に基づいて行われます。

Screenshot that shows the UPN of the demo user in Microsoft Entra ID.

Screenshot that shows the SAML2 configuration for SAP Gateway with UPN claim.

UPN マッピングは、トランザクション SAML2 を使用して SAP バックエンドで保持されます。

Screenshot that shows the email mapping mode in SAP SAML2 transaction.

この構成に従って、名前付き SAP ユーザーがそれぞれの Microsoft Entra ユーザーにマップされます。 以下に示すのは、トランザクション コード SU01 を使用した SAP バックエンドからの構成例です。

Screenshot of named SAP user in transaction SU01 with mapped email address.

必要となる SAP OAuth 2.0 Server with AS ABAP の構成について詳しくは、OAuth を使用した SAP NetWeaver での SSO に関するこちらの Microsoft チュートリアルを参照してください。

ここで説明されている Azure API Management ポリシーを使用すると、Power Query が有効になっている任意の Microsoft 製品で、SAP の名前付きユーザー マッピングを受け入れながら、SAP でホストされている OData サービスを呼び出すことでできます。

Screenshot that shows the OData response in Excel Desktop.

Power Query が有効な他のアプリケーションとサービスを介した SAP OData アクセス

上の例は Excel Desktop 用のフローを示したものですが、このアプローチは、Power Query OData が有効な Microsoft 製品すべてに適用できます。 Power Query の OData コネクタと、それをサポートする製品の詳細については、Power Query コネクタのドキュメントを参照してください。 一般の Power Query をサポートする製品の詳細については、Power Query のドキュメントを参照してください。

一般的なコンシューマーは、Power BIExcel for the webPower Apps (データフロー)Analysis Service です

Power Automate を使用して SAP ライトバック シナリオに取り組む

説明されたアプローチはライトバック シナリオにも適用できます。 たとえば、Power Automate を使用し、HTTP 対応コネクタで OData を使用して SAP のビジネス パートナーを更新できます (RFC または BAPI を使用することもできます)。 値ベースのアラートボタン (スクリーンショットで強調されています) を通じて Power Automate に接続される Power BI サービス ダッシュボードの例をご覧ください。 Power Automate ドキュメントの Power BI レポートからのフローのトリガーについて説明します。

Screenshot that shows the flow-enabled Power BI service dashboard.

強調表示されているボタンは、OData PATCH 要求を SAP ゲートウェイに転送してビジネス パートナー ロールを変更するフローをトリガーします。

注意

SAP 向け Azure API Management ポリシーを使用し、認証、更新トークン、CSRF トークン、フロー外のトークンの全体的キャッシュを処理します。

Screenshot that shows the flow on Power Automate requesting the business partner change on the SAP back end.

次のステップ

OData を持つ Power Query をどこから使用できるかを確認する

Azure API Management で SAP OData API を操作する

Azure API Management を SAP API 用に構成する

チュートリアル: Excel と OData フィードの売上データを分析する

Application Gateway と API Management で API を保護する

内部仮想ネットワーク内の API Management を Application Gateway と統合する

SAP 用の Azure Application Gateway と Web アプリケーション ファイアウォールを理解する

APIOps を使用して API デプロイを自動化する