Azure Data Explorer Microsoft Entra 애플리케이션 등록 만들기

Microsoft Entra 애플리케이션 인증은 사용자가 없는 Azure Data Explorer 액세스해야 하는 무인 서비스 또는 예약된 흐름과 같은 애플리케이션에 사용됩니다. 웹앱과 같은 애플리케이션을 사용하여 Azure Data Explorer 데이터베이스에 연결하는 경우 서비스 주체 인증을 사용하여 인증해야 합니다. 이 문서에서는 Microsoft Entra 서비스 주체를 만들고 등록한 다음 Azure Data Explorer 데이터베이스에 액세스하도록 권한을 부여하는 방법을 자세히 설명합니다.

Microsoft Entra 애플리케이션 등록 만들기

Microsoft Entra 애플리케이션 인증을 사용하려면 Microsoft Entra ID 애플리케이션을 만들고 등록해야 합니다. Microsoft Entra 테넌트에서 애플리케이션 등록을 만들 때 서비스 주체가 자동으로 만들어집니다.

앱 등록은 Azure Portal 만들거나 Azure CLI를 사용하여 프로그래밍 방식으로 만들 수 있습니다. 시나리오에 맞는 탭을 선택합니다.

앱 등록

  1. 로그인하여 Azure PortalMicrosoft Entra ID 블레이드를 엽니다.

  2. 앱 등록 찾아보고 새 등록을 선택합니다.

    새 앱 등록을 시작하는 방법을 보여 주는 스크린샷.

  3. 애플리케이션 이름을 지정합니다(예: "example-app").

  4. 애플리케이션을 사용할 수 있는 사용자를 결정하며 지원되는 계정 유형을 선택합니다.

  5. URI 리디렉션에서 생성할 애플리케이션 형식에 을 선택합니다. URI는 선택 사항이며 이 경우 비어 있습니다.

    새 앱 등록을 등록하는 방법을 보여 주는 스크린샷.

  6. 등록을 선택합니다.

인증 설정

서비스 주체에 사용할 수 있는 인증 유형에는 암호 기반 인증(애플리케이션 비밀) 및 인증서 기반 인증의 두 가지 유형이 있습니다. 다음 섹션에서는 애플리케이션의 자격 증명에 암호 기반 인증을 사용하는 방법에 대해 설명합니다. 또는 X509 인증서를 사용하여 애플리케이션을 인증할 수 있습니다. 자세한 내용은 Microsoft Entra 인증서 기반 인증을 구성하는 방법을 참조하세요.

이 섹션의 과정을 통해 애플리케이션 ID 값 값을 복사합니다. 데이터베이스에 클라이언트 자격 증명을 구성하는 단계에서 사용하기 위해 텍스트 편집기처럼 이러한 값을 어딘가에 붙여넣습니다.

  1. 개요 블레이드로 이동합니다.

  2. 애플리케이션(클라이언트) ID디렉터리(테넌트) ID를 복사합니다.

    참고

    서비스 주체가 데이터베이스에 액세스할 수 있도록 권한을 부여하려면 애플리케이션 ID와 테넌트 ID가 필요합니다.

  3. 인증서 & 비밀 블레이드에서 새 클라이언트 암호를 선택합니다.

    클라이언트 암호 생성을 시작하는 방법을 보여 주는 스크린샷.

  4. 설명 및 만료를 입력합니다.

  5. 추가를 선택합니다.

  6. 키 값을 복사합니다.

    참고

    이 페이지를 벗어나면 키 값에 액세스할 수 없습니다.

Microsoft Entra 애플리케이션과 서비스 주체를 만들었습니다.

애플리케이션에 대한 위임된 권한 구성 - 선택 사항

애플리케이션이 호출하는 사용자의 자격 증명을 사용하여 데이터베이스에 액세스해야 하는 경우 애플리케이션에 대한 위임된 권한을 구성합니다. 예를 들어 웹 API를 빌드하고 API를 호출 하는 사용자의 자격 증명을 사용하여 인증하려는 경우입니다.

권한 있는 데이터 리소스에 대한 액세스만 필요한 경우 이 섹션을 건너뛰고 데이터베이스에 대한 서비스 주체 액세스 권한을 계속 부여할 수 있습니다.

  1. 앱 등록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'
    

    마지막 매개 변수는 데이터베이스와 연결된 역할을 쿼리할 때 메모로 표시되는 문자열입니다.

    참고

    애플리케이션 등록을 만든 후 참조될 때까지 몇 분 정도 지연될 수 있습니다. 애플리케이션을 찾을 수 없다는 오류가 표시되면 기다렸다가 다시 시도하세요.

역할에 대한 자세한 내용은 역할 기반 액세스 제어를 참조하세요.

애플리케이션 자격 증명을 사용하여 데이터베이스 액세스

애플리케이션 자격 증명을 사용하여 클라이언트 라이브러리를 사용하여 프로그래밍 방식으로 데이터베이스에 액세스합니다.

. . .
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}");

참고

이전에 만든 애플리케이션 등록(서비스 주체)의 애플리케이션 ID와 키를 지정합니다.

자세한 내용은 앱에서 MSAL(Microsoft 인증 라이브러리)으로 인증하고 .NET Core 웹앱에서 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 관리자에게 문의해야 합니다.