Log Analytics API와 같은 Azure REST API에 액세스하거나 사용자 지정 메트릭을 보내려면 클라이언트 ID 및 비밀을 기준으로 권한 부여 토큰을 생성할 수 있습니다. 그러면 토큰이 REST API 요청에 전달됩니다. 이 문서에서는 토큰을 생성할 수 있도록 클라이언트 앱을 등록하고 클라이언트 비밀을 만드는 방법을 보여 줍니다.
앱 등록하기
서비스 주체를 만들고 Azure Portal, Azure CLI 또는 PowerShell을 사용하여 앱을 등록합니다.
앱을 등록하려면 Azure Portal에서 Active Directory 개요 페이지를 엽니다.
사이드바에서 앱 등록을 선택합니다.
새 등록 선택
애플리케이션 등록 페이지에서 애플리케이션의 이름을 입력합니다.
등록을 선택합니다.
앱의 개요 페이지에서 인증서 및 비밀을 선택합니다.
애플리케이션(클라이언트) ID를 적어둡니다. 토큰에 대한 HTTP 요청에 사용됩니다.
클라이언트 비밀 탭에서 새 클라이언트 비밀을 선택합니다.
설명을 입력하고 추가
를 선택합니다.
클라이언트 암호 값을 복사하여 저장합니다.
참고
클라이언트 암호 값은 만든 직후에만 볼 수 있습니다. 페이지를 나가기 전에 비밀을 저장해야 합니다.
다음 스크립트를 실행하여 서비스 주체 및 앱을 만듭니다.
az ad sp create-for-rbac -n <Service principal display name>
응답은 다음과 같습니다.
{
"appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"displayName": "AzMonAPIApp",
"password": "123456.ABCDE.~XYZ876123ABcEdB7169",
"tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
}
중요
출력에는 보호해야 하는 자격 증명이 포함됩니다. 이러한 자격 증명을 코드에 포함하지 않도록 하거나 소스 제어에 자격 증명을 확인해야 합니다.
API를 사용하여 액세스하려는 리소스에 대한 역할 및 범위 추가
az role assignment create --assignee <`appId`> --role <Role> --scope <resource URI>
다음 CLI 예제에서는 Reader
리소스 그룹의 모든 리소스에 대한 서비스 주체에 rg-001
역할을 할당합니다.
az role assignment create --assignee 00001111-aaaa-2222-bbbb-3333cccc4444 --role Reader --scope '\/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-001'
Azure CLI를 사용한 서비스 주체 만들기에 대한 자세한 내용은 Azure CLI를 사용하여 Azure 서비스 주체 만들기를 참조하세요.
다음 예제 스크립트에서는 PowerShell을 통해 Microsoft Entra 서비스 주체를 만드는 것을 보여 줍니다. 자세한 연습은 Azure PowerShell을 사용하여 리소스에 액세스하는 서비스 주체 만들기를 참조하세요.
$subscriptionId = "{azure-subscription-id}"
$resourceGroupName = "{resource-group-name}"
# Authenticate to a specific Azure subscription.
Connect-AzAccount -SubscriptionId $subscriptionId
# Password for the service principal
$pwd = "{service-principal-password}"
$secureStringPassword = ConvertTo-SecureString -String $pwd -AsPlainText -Force
# Create a new Azure Active Directory application
$azureAdApplication = New-AzADApplication `
-DisplayName "My Azure Monitor" `
-HomePage "https://localhost/azure-monitor" `
-IdentifierUris "https://localhost/azure-monitor" `
-Password $secureStringPassword
# Create a new service principal associated with the designated application
New-AzADServicePrincipal -ApplicationId $azureAdApplication.ApplicationId
# Assign Reader role to the newly created service principal
New-AzRoleAssignment -RoleDefinitionName Reader `
-ServicePrincipalName $azureAdApplication.ApplicationId.Guid
다음 단계
앱, 클라이언트 ID 및 비밀을 사용하여 토큰을 생성하려면 액세스하려는 리소스에 대해 IAM(액세스 제어)을 사용하여 역할에 앱을 할당합니다. 역할은 사용하려는 리소스 종류 및 API에 따라 달라집니다.
예를 들면 다음과 같습니다.
앱이 Log Analytics 작업 영역에서 읽을 수 있도록 허용하려면 Log Analytics 작업 영역에 대한 액세스 제어(IAM)를 사용하여 읽기 권한자 역할에 멤버로서 앱을 추가합니다. 자세한 내용은 API 액세스를 참조하세요.
리소스에 대한 사용자 지정 메트릭을 보낼 수 있는 액세스 권한을 부여하려면 리소스에 대한 액세스 제어(IAM)를 사용하여 앱을 모니터링 메트릭 게시자 역할에 멤버로서 추가합니다. 자세한 내용은 REST API를 사용하여 Azure Monitor 메트릭 데이터베이스에 메트릭 보내기를 참조하세요.
자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요.
역할을 할당한 후에는 앱, 클라이언트 ID 및 클라이언트 비밀을 사용하여 REST API에 액세스하기 위한 전달자 토큰을 생성할 수 있습니다.
참고
Microsoft Entra 인증을 사용하는 경우 Azure Application Insights REST API가 새로운 RBAC(역할 기반 액세스 제어) 권한을 인식하는 데 최대 60분이 걸릴 수 있습니다. 권한이 전파되는 동안 REST API 호출이 실패하여 오류 코드 403이 나타날 수 있습니다.