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