개발자 계정을 사용하여 로컬 개발 중 Azure 서비스에 .NET 앱 인증
개발자는 로컬 워크스테이션에서 클라우드 앱을 디버그하고 테스트해야 합니다. 앱이 로컬 개발 중에 개발자의 워크스테이션에서 실행되는 경우에도 앱은 앱에서 사용하는 모든 Azure 서비스에 인증해야 합니다. 이 문서에서는 로컬 개발 중에 개발자의 Azure 자격 증명을 사용하여 Azure에 앱을 인증하는 방법을 다룹니다.
로컬 개발 중에 개발자의 Azure 자격 증명을 사용하여 앱을 Azure에 인증하려면 개발자가 다음 개발자 도구 중 하나에서 Azure에 로그인해야 합니다.
- Visual Studio
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
Azure ID 라이브러리는 개발자가 이러한 도구 중 하나에서 로그인했음을 감지할 수 있습니다. 그러면 라이브러리는 도구를 통해 Microsoft Entra 액세스 토큰을 가져와서 로그인한 사용자로 Azure에 앱을 인증할 수 있습니다.
이 방식은 개발자의 기존 Azure 계정을 활용하므로 개발 팀을 위해 설정하는 것이 가장 쉽습니다. 그러나 개발자 계정에는 앱에 필요한 것보다 더 많은 권한이 있을 가능성이 높아 프로덕션 환경에서 앱 실행에 사용되는 권한을 초과할 수 있습니다. 대안으로, 로컬 개발 중에 사용할 애플리케이션 서비스 주체를 만들어 앱에 필요한 액세스 권한만 갖도록 범위를 지정할 수 있습니다.
1 - 로컬 개발용 Microsoft Entra 그룹 만들기
앱 작업을 수행하는 개발자는 거의 항상 여러 명이기 때문에 Microsoft Entra 그룹을 사용하여 로컬 개발 중에 앱에 필요한 역할(권한)을 모아 두면 좋습니다. 이 방법을 사용하면 다음과 같은 이점이 있습니다.
- 역할은 그룹 수준에서 할당되므로 모든 개발자는 동일한 역할을 할당받게 됩니다.
- 앱에 새 역할이 필요한 경우 앱의 그룹에만 추가하면 됩니다.
- 새 개발자가 팀에 합류하는 경우 그룹에 추가되면 앱 작업을 수행하는 데 필요한 권한을 얻게 됩니다.
개발 팀을 위한 기존 Microsoft Entra 그룹이 있는 경우 해당 그룹을 사용할 수 있습니다. 그렇지 않은 경우 다음 단계를 완료하여 Microsoft Entra 그룹을 만드세요.
참고 항목
기본적으로 Microsoft Entra 그룹의 생성은 디렉터리의 특정 권한 있는 역할로 제한됩니다. 그룹을 만들 수 없는 경우 디렉터리의 관리자에게 문의하세요. 기존 그룹에 구성원을 추가할 수 없는 경우 그룹 소유자 또는 디렉터리 관리자에게 문의하세요. 자세한 내용은 Microsoft Entra 그룹 및 그룹 구성원 관리를 참조하세요.
2 - Microsoft Entra 그룹에 역할 할당
다음으로, 앱에 어떤 리소스에 대한 어떤 역할(권한)이 필요한지 결정하고 해당 역할을 앱에 할당합니다. 이 예에서는 1단계에서 만든 Microsoft Entra 그룹에 역할이 할당됩니다. 그룹은 리소스, 리소스 그룹 또는 구독 범위에서 역할을 할당할 수 있습니다. 이 예에서는 대부분의 앱이 모든 Azure 리소스를 단일 리소스 그룹으로 그룹화하므로 리소스 그룹 범위에서 역할을 할당하는 방법을 보여 줍니다.
3 - 개발자 도구를 사용하여 Azure에 로그인
다음으로 여러 개발자 도구 중 하나를 사용하여 Azure에 로그인합니다. 인증하는 계정은 이전에 만들고 구성한 Microsoft Entra 그룹에도 있어야 합니다.
도구>옵션으로 이동하여 옵션 대화 상자를 엽니다.
맨 위에 있는 옵션 검색 상자에 Azure를 입력하여 사용 가능한 옵션을 필터링합니다.
Azure 서비스 인증에서 계정 선택을 선택합니다.
계정 선택 아래의 드롭다운 메뉴를 선택하고 Microsoft 계정 추가를 선택합니다. 계정 선택을 위한 창이 열립니다. 원하는 Azure 계정에 대한 자격 증명을 입력한 다음 확인을 선택합니다.
확인을 선택하여 옵션 대화 상자를 닫습니다.
4 - 애플리케이션에 DefaultAzureCredential 구현
DefaultAzureCredential은 Microsoft Entra에 인증하기 위한 순서가 지정된 독자적 메커니즘 시퀀스입니다. 각 인증 메커니즘은 TokenCredential 클래스에서 파생된 클래스이며 자격 증명이라고 합니다. 런타임 시 DefaultAzureCredential
은 첫 번째 자격 증명을 사용하여 인증을 시도합니다. 해당 자격 증명이 액세스 토큰을 획득하지 못하면 액세스 토큰을 성공적으로 가져올 때까지 시퀀스의 다음 자격 증명이 시도됩니다. 이러한 방식을 통해 앱은 환경별 코드를 작성하지 않고도 다양한 환경에서 여러 자격 증명을 사용할 수 있습니다.
DefaultAzureCredential
이 자격 증명을 찾는 순서와 위치는 DefaultAzureCredential에서 확인할 수 있습니다.
DefaultAzureCredential
을 사용하려면 Azure.Identity 및 필요에 따라 Microsoft.Extensions.Azure 패키지를 애플리케이션에 추가합니다.
원하는 터미널에서 애플리케이션 프로젝트 디렉터리로 이동하고 다음 명령을 실행합니다.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure 서비스는 다양한 Azure SDK 클라이언트 라이브러리의 특수 클라이언트 클래스를 사용하여 액세스됩니다. 이러한 클래스와 자체 사용자 지정 서비스는 등록되어야 앱 전체에서 종속성 주입을 통해 액세스할 수 있습니다. Program.cs
에서 다음 단계를 완료하여 클라이언트 클래스와 DefaultAzureCredential
을 등록합니다.
using
지시문을 통해Azure.Identity
및Microsoft.Extensions.Azure
네임스페이스를 포함합니다.- 해당하는
Add
접두사 확장 메서드를 사용하여 Azure 서비스 클라이언트를 등록합니다. DefaultAzureCredential
인스턴스를UseCredential
메서드에 전달합니다.
예시:
using Microsoft.Extensions.Azure;
using Azure.Identity;
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new DefaultAzureCredential());
});
UseCredential
의 대안은 DefaultAzureCredential
을 직접 인스턴스화하는 것입니다.
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
위 코드가 로컬 개발 워크스테이션에서 실행되면 환경 변수에서 애플리케이션 서비스 주체를 찾거나 로컬에 설치된 개발자 도구(예: Visual Studio)에서 개발자 자격 증명 집합을 찾습니다. 두 방법 중 하나를 사용하여 로컬 개발 중에 Azure 리소스에 앱을 인증할 수 있습니다.
Azure에 배포되면 이 동일한 코드는 다른 Azure 리소스에 대해 앱을 인증할 수도 있습니다. DefaultAzureCredential
은 환경 설정 및 관리 ID 구성을 검색하여 다른 서비스에 자동으로 인증할 수 있습니다.
.NET