Azure Batch는 Microsoft의 다중 테넌트 클라우드 기반 디렉터리 및 ID 관리 서비스인 Microsoft Entra ID로 인증을 지원합니다. Azure에서는 Microsoft Entra ID를 사용하여 고유한 고객, 서비스 관리자 및 조직 사용자를 인증합니다.
Azure Batch 앱을 인증하는 권장 방법은 Azure ID 클라이언트 라이브러리 사용하는 것입니다. 에서는 앱이 로컬, Azure 또는 온-프레미스에서 실행되는지 여부에 관계없이 일관되게 작동하는 토큰 기반 인증 클래스(예: DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential 및 InteractiveBrowserCredential)를 제공합니다. 권장 인증 전략에 대한 개요는 다음을 참조하세요.
이 문서에서는 Microsoft Entra ID 사용하여 Azure Batch 인증하는 두 가지 일반적인 시나리오를 설명합니다.
통합(대화형) 인증 은 애플리케이션과 상호 작용하는 사용자를 인증합니다.
InteractiveBrowserCredential또는DefaultAzureCredential(Azure CLI, Visual Studio 및 Visual Studio Code 같은 개발자 도구 로그인을 통해 연결할 수 있는)와 같은 자격 증명을 사용합니다.서비스 주체 또는 관리되는 ID 인증은 사용자 개입 없이 실행되는 애플리케이션을 인증합니다. Azure 호스트되는 앱의 경우
ManagedIdentityCredential, 등록된 애플리케이션의 비밀 또는 인증서로 인증하는 앱의 경우ClientSecretCredential/ClientCertificateCredential같은 자격 증명을 사용합니다.
Microsoft Entra ID에 대한 자세한 내용은 Microsoft Entra 문서를 참조하세요.
인증용 엔드포인트 수집
Microsoft Entra ID를 사용하여 Batch 애플리케이션을 인증하려면 코드에 Microsoft Entra 엔드포인트와 Batch 리소스 엔드포인트가 포함되어야 합니다.
Microsoft Entra 엔드포인트
기본 Microsoft Entra 기관 엔드포인트는 https://login.microsoftonline.com/입니다. Microsoft Entra ID를 사용하여 인증하려면 인증에 사용할 Microsoft Entra 테넌트를 식별하는 테넌트 ID가 있는 이 엔드포인트를 사용합니다.
https://login.microsoftonline.com/<tenant-id>
Azure Portal의 기본 Microsoft Entra ID 페이지에서 테넌트 ID를 가져올 수 있습니다. 왼쪽 탐색에서 속성을 선택하고 속성 페이지에서 테넌트 ID를 확인할 수도 있습니다.
중요
테넌트별 Microsoft Entra 엔드포인트는 서비스 주체를 사용하여 인증할 때 필요합니다.
통합 인증을 사용하여 인증할 때 테넌트별 엔드포인트가 권장되지만 선택 사항입니다. 특정 테넌트가 제공되지 않을 때 Microsoft Entra 공통 엔드포인트를 사용하여 일반 자격 증명 수집 인터페이스를 제공할 수도 있습니다. 공통 엔드포인트는
https://login.microsoftonline.com/common입니다.
Microsoft Entra 엔드포인트에 대한 자세한 내용은 인증 및 권한 부여를 참조하세요.
Batch 리소스 엔드포인트
Batch 리소스 엔드포인트 https://batch.core.windows.net/을 사용하여 Batch 서비스에 대한 요청을 인증하는 토큰을 얻습니다.
테넌트에 애플리케이션 등록
Microsoft Entra 인증을 사용하는 첫 번째 단계는 Microsoft Entra 테넌트에 애플리케이션을 등록하는 것입니다. 애플리케이션이 등록되면 코드에서 Azure ID 라이브러리 자격 증명을 사용하여 Batch 서비스에 대한 Microsoft Entra 토큰을 획득할 수 있습니다. 애플리케이션 등록은 기밀 클라이언트(서비스 주체) 흐름 및 테넌트별 앱 등록이 필요한 대화형 흐름에 필요합니다.
Tip
코드에서 DefaultAzureCredential을 사용하고 개발자 도구(Azure CLI, Azure PowerShell, Visual Studio 또는 Visual Studio Code)를 통해 로그인하는 경우 별도의 애플리케이션을 등록할 필요가 없습니다. 자격 증명은 해당 환경에서 이미 구성된 ID를 사용합니다.
애플리케이션을 등록할 때 애플리케이션에 대한 정보를 Microsoft Entra ID에 제공합니다. 그런 다음, Microsoft Entra ID는 런타임 시 애플리케이션을 Microsoft Entra ID와 연결하는 데 사용하는 애플리케이션 ID(클라이언트 ID라고도 함)를 제공합니다. 애플리케이션 ID에 대한 자세한 내용은 Microsoft Entra ID의 애플리케이션 및 서비스 주체 개체를 참조하세요.
Batch 애플리케이션을 등록하려면 애플리케이션 등록의 단계를 수행합니다.
애플리케이션을 등록하면 애플리케이션 개요 페이지에서 애플리케이션(클라이언트) ID를 확인할 수 있습니다.
통합 인증 구성
통합 인증으로 인증하려면 Batch 서비스 API에 연결할 수 있는 권한을 애플리케이션에 부여해야 합니다. 이 단계를 통해 애플리케이션에서 Microsoft Entra ID를 사용하여 Batch 서비스 API에 대한 호출을 인증할 수 있습니다.
애플리케이션을 등록한 후 다음 단계를 수행하여 Batch 서비스에 액세스할 수 있는 권한을 애플리케이션에 부여합니다.
- Azure Portal에서 앱 등록을 검색하여 선택합니다.
- 앱 등록 페이지에서 애플리케이션을 선택합니다.
- 애플리케이션 페이지의 왼쪽 탐색에서 API 권한을 선택합니다.
- API 사용 권한 페이지에서 사용 권한 추가를 선택합니다.
- API 권한 요청 페이지에서 Azure Batch를 선택합니다.
- Azure Batch 페이지의 권한 선택에서 user_impersonation 옆에 있는 확인란을 선택한 다음, 권한 추가를 선택합니다.
이제 API 권한 페이지에 Microsoft Entra 애플리케이션에서 Microsoft Graph 및 Azure Batch 모두에 액세스할 수 있음이 표시됩니다. 앱을 Microsoft Entra ID에 등록하면 권한이 자동으로 Microsoft Graph에 부여됩니다.
서비스 주체 구성
무인으로 실행되는 애플리케이션을 인증하려면 서비스 사용자를 사용합니다. 애플리케이션에서 서비스 주체를 사용하여 인증하는 경우 애플리케이션 ID와 비밀 키 모두 Microsoft Entra ID에 보냅니다.
애플리케이션을 등록한 후에 Azure Portal에서 다음 단계를 수행하여 서비스 주체를 구성합니다.
- 애플리케이션에 대한 비밀을 요청합니다.
- Azure RBAC(역할 기반 액세스 제어)를 애플리케이션에 할당합니다.
애플리케이션에 대한 비밀 요청
다음 단계를 수행하여 코드에서 사용할 비밀 키를 만들고 복사합니다.
- Azure Portal에서 앱 등록을 검색하여 선택합니다.
- 앱 등록 페이지에서 애플리케이션을 선택합니다.
- 애플리케이션 페이지의 왼쪽 탐색에서 인증서 및 비밀을 선택합니다.
- 인증서 및 비밀 페이지에서 새 클라이언트 암호를 선택합니다.
- 클라이언트 암호 추가 페이지에서 설명을 입력하고 비밀의 만료 날짜를 선택합니다.
- 추가를 선택하여 비밀을 만들고 인증서 및 비밀 페이지에 표시합니다.
- 이 페이지에서 나간 후에는 비밀 값에 다시 액세스할 수 없으므로 이 값을 안전한 장소에 복사합니다. 키에 대한 액세스 권한을 손실하면 새 키를 생성할 수 있습니다.
애플리케이션에 Azure RBAC 할당
다음 단계를 수행하여 Azure RBAC 역할을 애플리케이션에 할당합니다. 자세한 내용은 Azure Batch 서비스에 대한 역할 기반 액세스 제어를 참조하세요.
- Azure Portal에서 애플리케이션에서 사용하는 Batch 계정으로 이동합니다.
- 왼쪽 탐색 영역에서 액세스 제어(IAM)를 선택합니다.
- 액세스 제어(IAM) 페이지에서 역할 할당 추가를 선택합니다.
- 역할 할당 추가 페이지에서 역할 탭을 선택한 다음 앱에 대한 역할인 Azure Batch 기본 제공 RBAC 역할 중 하나를 선택합니다.
- 구성원 탭을 선택하고 구성원 아래에서 구성원 선택을 선택합니다.
- 구성원 선택 화면에서 애플리케이션을 검색하여 선택한 다음, 선택을 선택합니다.
- 역할 할당 추가 페이지에서 검토 + 할당을 선택합니다.
이제 애플리케이션이 Batch 계정의 액세스 제어(IAM) 페이지의 역할 할당 탭에 표시됩니다.
코드 예제
이 섹션의 코드 예제에서는 Azure ID 라이브러리의 자격 증명을 사용하여 Microsoft Entra ID Azure Batch 인증하는 방법을 보여 줍니다. 예제에서는 .NET 및 Python 사용하지만 다른 Azure SDK 언어에도 동일한 패턴이 적용됩니다.
참고
Microsoft Entra 인증 토큰은 1시간 후에 만료됩니다. 수명이 긴 BatchClient 개체를 사용하는 경우 Azure IDTokenCredential 투명하게 캐시를 제공하고 토큰을 새로 고치므로 필요한 경우에만 Microsoft Entra ID 새 토큰이 획득됩니다. Microsoft Entra ID의 토큰에 대한 자세한 내용은 보안 토큰을 참조하세요.
Tip
대부분의 시나리오에서는 .를 사용합니다 DefaultAzureCredential. 여러 인증 방법(관리 ID, 환경 변수, 개발자 도구 로그인 등)을 자동으로 시도하므로 개발 중, Azure 또는 온-프레미스에서 앱이 로컬로 실행되는지 여부에 관계없이 동일한 코드가 작동합니다. 올바른 자격 증명을 선택하는 방법에 대한 지침은 .NET 앱 인증 및 Python 앱 인증을 참조하세요.
코드 예제: .NET에서 Azure Batch에 인증
이 예제에서는 Azure.Identity 라이브러리와 함께 Azure.Compute.Batch를 사용합니다.
Azure.Compute.Batch및Azure.IdentityNuGet 패키지를 설치합니다.코드에 다음
using문을 선언합니다.using Azure.Compute.Batch; using Azure.Core; using Azure.Identity;Batch 계정 엔드포인트를 참조하세요.
private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";자격 증명을 생성하고 이를
BatchClient생성자에 전달합니다. Batch 서비스에 대한 후속 작업에 클라이언트를 사용합니다.권장:
DefaultAzureCredential— 개발자 도구 로그인(Azure CLI, Visual Studio, Visual Studio Code)으로 로컬에서 작동하고 앱이 Azure에서 실행될 때 관리형 ID를 자동으로 사용합니다.TokenCredential credential = new DefaultAzureCredential(); BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential); await foreach (BatchJob job in client.GetJobsAsync()) { Console.WriteLine(job.Id); }대화형(통합) 로그인 - 사용자에게 시스템 브라우저를 통해 로그인하라는 메시지를 표시합니다. 앱이 대화형으로 특정 사용자를 인증해야 하는 경우 이를 사용합니다.
TokenCredential credential = new InteractiveBrowserCredential( new InteractiveBrowserCredentialOptions { TenantId = "<tenant-id>", ClientId = "<application-id>", // optional; required only if you registered your own app RedirectUri = new Uri("http://localhost") }); BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);서비스 주체(클라이언트 암호) - 앱 등록 비밀로 인증하는 무인 앱에 사용합니다.
TokenCredential credential = new ClientSecretCredential( tenantId: "<tenant-id>", clientId: "<application-id>", clientSecret: "<client-secret>"); BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);관리 ID — 시스템이 할당하거나 사용자가 할당한 관리 ID가 있는 Azure 리소스(예: VM, App Service 또는 Container App)에서 앱이 실행되는 경우 사용합니다.
// System-assigned managed identity TokenCredential credential = new ManagedIdentityCredential(); // Or, user-assigned managed identity // TokenCredential credential = new ManagedIdentityCredential(clientId: "<user-assigned-client-id>"); BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
코드 예제: Python에서 Azure Batch에 인증하기
이 예제에서는 azure-identity 라이브러리의 자격 증명과 함께 azure-batch 클라이언트를 사용합니다. 레거시 azure.common.credentials.ServicePrincipalCredentials 클래스는 더 이상 사용되지 않으며 대신 자격 증명을 사용합니다 azure-identity .
필요한 패키지를 설치합니다.
pip install azure-batch azure-identityBatch 계정 엔드포인트 및 Batch 리소스 범위를 참조합니다.
BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com" BATCH_SCOPE = "https://batch.core.windows.net/.default"자격 증명을 생성하여
BatchServiceClient에 전달합니다.권장:
DefaultAzureCredential— 개발자 도구 로그인으로 로컬에서 작동하며 Azure에서 실행할 때는 관리 ID를 자동으로 사용합니다.from azure.batch import BatchServiceClient from azure.identity import DefaultAzureCredential credential = DefaultAzureCredential() batch_client = BatchServiceClient( credentials=credential, batch_url=BATCH_ACCOUNT_URL, )대화형(통합) 로그인 - 사용자에게 시스템 브라우저를 통해 로그인하라는 메시지를 표시합니다.
from azure.batch import BatchServiceClient from azure.identity import InteractiveBrowserCredential credential = InteractiveBrowserCredential( tenant_id="<tenant-id>", client_id="<application-id>", # optional; required only if you registered your own app ) batch_client = BatchServiceClient( credentials=credential, batch_url=BATCH_ACCOUNT_URL, )서비스 주체(클라이언트 암호) - 무인 앱에 사용합니다.
from azure.batch import BatchServiceClient from azure.identity import ClientSecretCredential credential = ClientSecretCredential( tenant_id="<tenant-id>", client_id="<application-id>", client_secret="<client-secret>", ) batch_client = BatchServiceClient( credentials=credential, batch_url=BATCH_ACCOUNT_URL, )관리 ID - 관리 ID가 있는 Azure 리소스에서 앱이 실행되는 경우 사용합니다.
from azure.batch import BatchServiceClient from azure.identity import ManagedIdentityCredential # System-assigned managed identity credential = ManagedIdentityCredential() # Or, user-assigned managed identity # credential = ManagedIdentityCredential(client_id="<user-assigned-client-id>") batch_client = BatchServiceClient( credentials=credential, batch_url=BATCH_ACCOUNT_URL, )