認証のセットアップ
この記事では、Microsoft Fabric で認証を扱う方法について説明します。
Fabric でカスタム ワークロードを認証するには、まず、次の 3 つのコンポーネント 部分を設定します。
Note
この記事で説明する認証設定を構成するには、グローバル管理者ロールが必要です。
Azure Storage のプロビジョニング
この記事で使用する認証サンプルでは、レイクハウス アーキテクチャにデータを格納し、データを読み取る方法を示します。 それには、On-Behalf-Of (OBO) フローで Azure Storage サービスのトークンを生成する必要があります。 トークンを生成するには、アプリケーションでの Azure Storage の使用に同意する必要があります。 同意するには、まずテナントで Azure Storage をプロビジョニングする必要があります。
テナントで Azure Storage がプロビジョニングされていることを確認するには:、次を行います。
Azure portal にサインインします。
[Microsoft Entra ID]>[エンタープライズ アプリケーション] に移動します。
検索フィルターで、[アプリケーションの種類 = すべてのアプリケーション] を選択します。 アプリケーション ID は
e406a681-f3d4-42a8-90b6-c2b029497af1
で始まります。
Azure Storage アプリケーションが検索結果に表示されている場合、ストレージは既にプロビジョニングされており、次の手順に進むことができます。 それ以外の場合は、グローバル管理者がアプリケーションを構成する必要があります。
Azure Storage をプロビジョニングするには、管理者として Windows PowerShell を開き、次のスクリプトを実行します。
Install-Module az
Import-Module az
Connect-AzureAD
New-AzureADServicePrincipal -AppId e406a681-f3d4-42a8-90b6-c2b029497af1
Microsoft Entra ID でアプリケーションを手動で構成する
ワークロードを認証するには、ワークロード アプリケーションを Microsoft Entra ID に登録する必要があります。 アプリケーションを登録していない場合は、新しいアプリケーションを作成します。 その後、次の手順を完了します。
お使いのアプリに次の構成を適用します。
- アプリをマルチテナント アプリにします。
- 開発アプリケーションの場合は、シングルページ アプリケーション (SPA) プラットフォームで
http://localhost:60006/close
としてリダイレクト URI を構成します。 この構成は、Microsoft の同意をサポートするために必要です。 他のリダイレクト URI を追加できます。
Note
- リダイレクト URI は、そこに移動すると単にページを閉じる URI である必要があります。 URI
http://localhost:60006/close
は、フロントエンド サンプルで既に構成されています。 リダイレクト URI は、Frontend/src/index.ts で変更できます。 URI を変更する場合は、アプリケーション用に構成されている URI と一致していることを確認します。 - リダイレクト URI は、アプリケーションの作成後に構成できます。 リダイレクト URI の設定を変更するには、 [認証]>[管理] に移動します。
- リダイレクト URL は、JavaScript
windows.close()
のみを呼び出す HTML ページを返す必要があります。
お使いのアプリのアプリケーション ID URI を変更します。 これを行うには、[管理]>[API の公開] に移動し、お使いのアプリのアプリケーション ID URI の値を編集します。
開発者モードのシナリオでは、アプリケーション ID URI は、
api://localdevinstance/<Workload publisher's tenant ID in lowercase (the tenant ID of the user used in Fabric to run the sample)>/<Name of your workload>
で始まり、最後に/
で始まる省略可能なサブパスが必要です (このセクションの後の例を参照)。アプリケーション ID URI パラメーター:
- ワークロード名は、完全にマニフェストで指定されているとおりにする必要があります。
- ID URI をスラッシュ (
/
) で終えることはできません。 - ID URI の末尾には、最大 36 文字の文字列で識別される省略可能なサブパスを含めることができます。 英語の小文字と大文字、数字、ダッシュのみを含めることができます。
ヒント
Microsoft Entra テナント ID 見つける方法について説明します。
たとえば、発行元のテナント ID が
aaaabbbb-0000-cccc-1111-dddd2222eeee
、ワークロード名がFabric.WorkloadSample
の場合は、次のようになります。次の URI が有効です。
api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample
api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample/abc
次の URI は有効ではありません。
api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample/af/
api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample/af/a
api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample
で始まらない ID URI
CRUD API とジョブのスコープを追加する
ワークロード項目に対して作成、読み取り、更新、削除 (CRUD) の API 操作を行い、ジョブで他の操作を実行するには、スコープを追加します。 さらに、そのスコープの事前認証されたアプリケーションに 2 つの専用 Fabric アプリケーションを追加して、API (作成したスコープ) から Fabric への信頼を示します。
スコープを追加するには、次を行います。
[API の公開] で、[スコープの追加] を選択します。 スコープ
FabricWorkloadControl
に名前を付け、必要な詳細を入力します。[認可済みのクライアント アプリケーション] で、[クライアント アプリケーションの追加] を選択します。
d2450708-699c-41e3-8077-b0c8341509aa
(ワークロード アプリケーション用のファブリック クライアント) を追加し、スコープを選択します。
データ プレーン API のスコープを追加する
データ プレーン API によって公開される操作のグループを表すために、その他のスコープを登録する必要があります。
バックエンド サンプルでは、4 つの例を示します。 Backend/src/Constants/scopes.cs の例を確認できます。
スコープは次のとおりです。
Item1.Read.All
: ワークロード項目の読み取り用Item1.ReadWrite.All
: ワークロード項目の読み取り/書き込み用FabricLakehouse.Read.All
: レイクハウス ファイルの読み取り用FabricLakehouse.ReadWrite.All
: レイクハウス ファイルの読み取り/書き込み用
これらのスコープには、871c010f-5e61-4fb1-83ac-98610a7e9110
(Fabric クライアント アプリケーション) の事前認証を行います。
これらのアプリのアプリケーション ID は、[一般的に使用される Microsoft アプリケーションのアプリケーション ID] の [Microsoft Power BI] および [Power BI サービス] で確認できます。
アプリケーションでの [API の公開] セクションの外観を次に示します。 この例では、ID URI は api://localdevinstance/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/Fabric.WorkloadSample
です。
お使いのアプリのシークレットを生成します。
[証明書およびシークレット] で、[シークレット] タブを選択し、シークレットを追加します。 使用する任意の名前を入力し、保存します。 このシークレットは、バックエンド サンプルを構成するときに使用します。
idtyp の省略可能な要求を追加する
[トークン構成] で、[オプションの要求の追加] を選択します。 [Token の種類] として、[Access] を選択し、[idtyp] を選択します。
API アクセス許可を追加する
[API のアクセス許可] で、アプリケーションに必要なアクセス許可を追加します。 バックエンド サンプルでは、Azure Storage user_impersonation (OneLake API の場合) と Power BI Service Workspace.Read.al (ワークロード制御 API の場合) を追加します。
API のアクセス許可の詳細については、「Microsoft Entra ID でアプリの要求されたアクセス許可を更新する」を参照してください。
認証トークン v1 を使用するようにアプリケーションを設定する
[マニフェスト] で、accessTokenAcceptedVersion
が null
または 1
に設定されていることを確認します。
スクリプトを使用して Microsoft Entra ID でアプリケーションを構成する
Microsoft Entra ID でアプリケーションを効率的にセットアップするには、自動化された PowerShell スクリプトを使用できます (オプション)。
- Azure CLI のインストール: まず、Azure CLI for Windows をインストールします。
- CreateDevAADApp.ps1 スクリプトを実行する: CreateDevAADApp スクリプトを実行します。 アプリケーションを作成するユーザー アカウントの資格情報を使用してサインインするように求められます。
- 必要な情報の入力: サインインを求められたら、アプリケーションに使用する名前、ワークロード名 (プレフィックスとして Org.)、テナント ID を入力します。
スクリプトが正常に実行されると、ワークロードの構成に必要なすべての詳細が返されます。 また、アプリケーションへの直接 URL と、テナント全体のアプリケーション認可のための管理者の同意 URL も提供されます。
使用例
指定したテナントのワークロード名 Org.Myworkload を持つ myWorkloadApp という名前のアプリケーションを作成するには、PowerShell で次のコマンドを実行します。
powershell .\CreateDevAADApp.ps1 -applicationName "myWorkloadApp" -workloadName "Org.Myworkload" -tenantId "bbbbcccc-1111-dddd-2222-eeee3333ffff"
この例では、コマンド ライン引数を指定した CreateDevAADApp.ps1 スクリプトを使用して、アプリケーションのセットアップ プロセスを自動化する方法を示します。 指定されたテナント ID は、一例にすぎません。 テナント ID の例を実際のテナント ID に置き換えます。
ワークロードを構成する (バックエンド)
バックエンド サンプルで、リポジトリの src/appsettings.json ファイルに移動し設定を構成します。
PublisherTenantId
: 発行元のテナント ID。ClientId
: ご自分のアプリケーション ID (Microsoft Entra ID の概要で確認できます)。ClientSecret
: Microsoft Entra アプリを構成するときに作成したシークレットです。Audience
: Microsoft Entra アプリで構成した ID URIです。
workloadManifest.xml ファイルを構成します。 リポジトリで、src/Packages/manifest/files/WorkloadManifest.xml ファイルに移動します。
AADApp
で、AppId
、redirectUri
、ResourceId
(ID URI) を構成します。
<AADApp>
<AppId>YourApplicationId</AppId>
<RedirectUri>YourRedirectUri</RedirectUri>
<ResourceId>YourResourceId</ResourceId>
</AADApp>
ワークロード ローカル マニフェストを構成する
Note
この手順は、開発者モードのシナリオでのみ適用されます。
アプリケーションを構成したら、Frontend フォルダーにある .env.dev 構成ファイルで次の構成を更新します。
"DEV_AAD_CONFIG_AUDIENCE": "", // The ID URI configured in your application for a developer scenario
"DEV_AAD_CONFIG_REDIRECT_URI": "http://localhost:60006/close", // Or the path you configured in index.ts
"DEV_AAD_CONFIG_APPID": "" // Your app ID
関連するコンテンツ
- ワークロードで認証を使用する方法について説明します。