次の方法で共有


Azure Data Explorer で Microsoft Entra アプリケーションの登録を作成する

Microsoft Entra アプリケーション認証 は、ユーザーが存在せずに Azure Data Explorer にアクセスする必要がある無人サービスやスケジュールされたフローなどのアプリケーションに使用されます。 Web アプリなどのアプリケーションを使用して Azure Data Explorer データベースに接続している場合は、サービス プリンシパル認証を使用して認証を行う必要があります。 この記事では、Microsoft Entra サービス プリンシパルを作成して登録し、Azure Data Explorer データベースへのアクセスを承認する方法について詳しく説明します。

Microsoft Entra アプリケーションの登録を作成する

Microsoft Entra アプリケーション認証では、Microsoft Entra ID を使用してアプリケーションを作成して登録する必要があります。 Microsoft Entra テナントでアプリケーションの登録が作成されると、サービス プリンシパルが自動的に作成されます。

アプリの登録は、Azure portal で作成することも、Azure CLI を使用してプログラムで作成することもできます。 シナリオに合ったタブを選択します。

アプリを登録する

  1. Azure ポータルにサインインしMicrosoft Entra ID ブレードを開きます。

  2. アプリの登録に移動し、[ 新規登録を選択します。

    新しいアプリの登録を開始する方法を示すスクリーンショット。

  3. アプリケーションに名前を付けます ("example-app" など)。

  4. サポートされているアカウントを選択します。これにより、アプリケーションを使用できるユーザーを決定します。

  5. [リダイレクト URI] で、作成するアプリケーションの種類で [Web] を選択します。 URI は省略可能であり、ここでは空白のままにします。

    新しいアプリ登録を登録する方法を示すスクリーンショット。

  6. 登録 を選択します。

認証の設定

サービス プリンシパルで使用できる認証には、パスワードベースの認証 (アプリケーション シークレット) と証明書ベースの認証の 2 種類があります。 次のセクションでは、アプリケーションの資格情報にパスワードベースの認証を使用する方法について説明します。 または、X509 証明書を使用してアプリケーションを認証することもできます。 詳細については、「 Microsoft Entra 証明書ベースの認証を構成する方法を参照してください。

このセクションでは、次の値をコピーします:アプリケーション IDキー値。 クライアント資格情報をデータベースに構成する手順で使用するために、テキスト エディターなどの場所にこれらの値 貼り付けます

  1. Overview ブレードに移動します。

  2. アプリケーション (クライアント) IDDirectory (テナント) IDをコピーします。

    Note

    データベースにアクセスするためにサービス プリンシパルを 認証するには、アプリケーション ID とテナント ID が必要です

  3. Certificates & secrets ブレードで、[新しいクライアント シークレット選択

    クライアント シークレットの作成を開始する方法を示すスクリーンショット。

  4. 説明と有効期限を入力します。

  5. [追加] を選択します。

  6. キー値をコピーします。

    Note

    このページから移動すると、キー値にアクセスできなくなります。

Microsoft Entra アプリケーションとサービス プリンシパルが作成されました。

アプリケーションの委任されたアクセス許可を構成する - 省略可能

アプリケーションが呼び出し元ユーザーの資格情報を使用してデータベースにアクセスする必要がある場合は、アプリケーションの委任されたアクセス許可を構成します。 たとえば、Web API を構築していて、API を 呼び出すユーザーの資格情報を使用して認証する場合 します。

承認されたデータ リソースへのアクセスのみが必要な場合は、このセクションをスキップして、データベースへのサービス プリンシパル アクセスの に進むことができます

  1. App の登録API アクセス許可 ブレードを参照します。

  2. [アクセス許可の追加] を選択します。

  3. [所属する組織で使用している API] を選択します。

  4. [Azure Data Explorer] を検索して、選択します。

    Azure Data Explorer API のアクセス許可を追加する方法を示すスクリーンショット。

  5. [ 削除されたアクセス許可で、 user_impersonation ボックスを選択します。

  6. [アクセス許可の追加] を選択します.

    ユーザー偽装の委任されたアクセス許可を選択する方法を示すスクリーンショット。

サービス プリンシパルにデータベースへのアクセス権を付与する

アプリケーションの登録が作成されたら、対応するサービス プリンシパルにデータベースへのアクセス権を付与する必要があります。 次の例では、ビューアーのアクセス権を付与します。 その他のロールについては、「 管理データベースのアクセス許可を参照してください。

  1. の手順でコピーしたアプリケーション ID とテナント ID の値を使用

  2. クエリ エディターで次のコマンドを実行し、プレースホルダー値 ApplicationIDTenantID を実際の値に置き換えます。

    .add database <DatabaseName> viewers ('aadapp=<ApplicationID>;<TenantID>') '<Notes>'
    

    次に例を示します。

    .add database Logs viewers ('aadapp=1234abcd-e5f6-g7h8-i9j0-1234kl5678mn;9876abcd-e5f6-g7h8-i9j0-1234kl5678mn') 'App Registration'
    

    最後のパラメーターは、データベースに関連付けられているロールに対してクエリを実行するときに、メモとして表示される文字列です。

    Note

    アプリケーション登録を作成した後、参照できるようになるまで数分の遅延が発生する可能性があります。 アプリケーションが見つからないというエラーが表示された場合は、しばらくしてからやり直してください。

ロールの詳細については、「 Role ベースのアクセス制御」を参照してください。

アプリケーション資格情報を使用してデータベースにアクセスする

アプリケーション資格情報を使用して、 client ライブラリを使用してプログラムでデータベースにアクセス

. . .
string applicationClientId = "<myClientID>";
string applicationKey = "<myApplicationKey>";
string authority = "<myApplicationTenantID>";
. . .
var kcsb = new KustoConnectionStringBuilder($"https://{clusterName}.kusto.windows.net/{databaseName}")
    .WithAadApplicationKeyAuthentication(
        applicationClientId,
        applicationKey,
        authority);
var client = KustoClientFactory.CreateCslQueryProvider(kcsb);
var queryResult = client.ExecuteQuery($"{query}");

Note

先ほど作成したアプリケーション登録 (サービス プリンシパル) のアプリケーション ID とキーを指定します。

詳細については、「アプリで Microsoft Authentication Library (MSAL) を使用して認証する方法.NET Core Web アプリで Azure Key Vault を使用する方法を参照してください。

トラブルシューティング

無効なリソース エラー

アプリケーションを使用してユーザーまたはアクセス用のアプリケーションを認証する場合は、サービス アプリケーションの委任されたアクセス許可を設定する必要があります。 アプリケーションがアクセスのためにユーザーまたはアプリケーションを認証できることを宣言します。 そうしないと、認証が試行されたときに、次のようなエラーが発生します。

AADSTS650057: Invalid resource. The client has requested access to a resource which is not listed in the requested permissions in the client's application registration...

手順に従って、アプリケーションの委任されたアクセス許可を 構成する必要があります

Microsoft Entra テナント管理者は、テナント ユーザーがアプリケーションに同意できないようにするポリシーを適用する場合があります。 この状況では、ユーザーがアプリケーションにサインインしようとすると、次のようなエラーが発生します。

AADSTS65001: The user or administrator has not consented to use the application with ID '<App ID>' named 'App Name'

テナント内のすべてのユーザーに同意を付与するか、特定のアプリケーションに対してユーザーの同意を有効にするには、Microsoft Entra 管理者に連絡する必要があります。