개발자 계정을 사용하여 로컬 개발 중 Azure 서비스에 .NET 앱 인증
클라우드 애플리케이션을 만들 때 개발자는 로컬 워크스테이션에서 애플리케이션을 디버깅하고 테스트해야 합니다. 로컬 개발 중에 개발자의 워크스테이션에서 애플리케이션을 실행하는 경우에도 앱에서 사용하는 모든 Azure 서비스에 인증해야 합니다. 이 문서에서는 로컬 개발 중에 개발자의 Azure 자격 증명을 사용하여 Azure에 앱을 인증하는 방법을 다룹니다.
개발자의 Azure 자격 증명을 사용하여 로컬 개발 중에 앱이 Azure에 인증하려면 개발자가 VS Code Azure 도구 확장, Azure CLI 또는 Azure PowerShell에서 Azure에 로그인해야 합니다. .NET용 Azure SDK는 개발자가 이러한 도구 중 하나에 로그인했는지 검색한 다음, 자격 증명 캐시에서 필요한 자격 증명을 가져와 로그인한 사용자로 Azure에 앱을 인증할 수 있습니다.
이 방식은 개발자의 기존 Azure 계정을 활용하므로 개발 팀을 위해 설정하는 것이 가장 쉽습니다. 그러나 개발자 계정에는 애플리케이션에 필요한 것보다 더 많은 권한이 있을 수 있으므로 프로덕션에서 앱이 실행되는 권한을 초과합니다. 대안으로, 앱에 필요한 액세스 권한만 갖도록 범위를 지정할 수 있는 로컬 개발 중에 사용할 애플리케이션 서비스 주체를 만들 수 있습니다.
1 - 로컬 개발을 위한 Azure AD 그룹 만들기
애플리케이션 작업에는 거의 항상 여러 명의 개발자가 있으므로 먼저 Azure AD 그룹을 만들어 로컬 개발에서 앱에 필요한 역할(권한)을 캡슐화하는 것이 좋습니다. 이는 다음과 같은 이점을 제공합니다.
- 역할은 그룹 수준에서 할당되므로 모든 개발자는 동일한 역할을 할당받게 됩니다.
- 앱에 새 역할이 필요한 경우 앱의 Azure AD 그룹에만 추가하면 됩니다.
- 새로운 개발자가 팀에 합류하는 경우 올바른 Azure AD 그룹에 추가하기만 하면 앱에서 작업할 수 있는 올바른 권한을 가져올 수 있습니다.
개발 팀을 위한 기존 Azure AD 그룹이 있는 경우 해당 그룹을 사용할 수 있습니다. 그렇지 않은 경우 다음 단계를 완료하여 Azure AD 그룹을 만듭니다.
2 - Azure AD 그룹에 역할 할당
다음으로, 어떤 리소스에 대해 앱에 필요한 역할(권한)을 결정하고 해당 역할을 앱에 할당해야 합니다. 이 예에서는 1단계에서 만들어진 Azure Active Directory 그룹에 역할이 할당됩니다. 역할은 리소스, 리소스 그룹 또는 구독 범위에서 역할을 할당할 수 있습니다. 이 예에서는 대부분의 애플리케이션이 모든 Azure 리소스를 단일 리소스 그룹으로 그룹화하므로 리소스 그룹 범위에서 역할을 할당하는 방법을 보여 줍니다.
3 - .NET 도구를 사용하여 Azure에 로그인
다음으로 여러 .NET 도구 옵션 중 하나를 사용하여 Azure에 로그인해야 합니다. 로그인하는 계정은 이전에 만들고 구성한 Azure Active Directory 그룹에도 있어야 합니다.
Visual Studio 상단 메뉴에서 도구>옵션으로 이동하여 옵션 대화 상자를 엽니다. 왼쪽 상단의 검색 창에 Azure를 입력하여 옵션을 필터링합니다. Azure 서비스 인증에서 계정 선택을 선택합니다.
계정 선택 아래의 드롭다운 메뉴를 선택하고 Microsoft 계정 추가를 선택합니다. 계정을 선택하라는 창이 열립니다. 원하는 Azure 계정에 대한 자격 증명을 입력한 다음 확인을 선택합니다.
4 - 애플리케이션에 DefaultAzureCredential 구현
DefaultAzureCredential
은 여러 인증 방법을 지원하며 런타임에 사용되는 인증 방법을 결정합니다. 이러한 방식으로 앱은 환경별 코드를 구현하지 않고도 다양한 환경에서 다양한 인증 방법을 사용할 수 있습니다.
DefaultAzureCredential
이 자격 증명을 찾는 순서와 위치는 DefaultAzureCredential에서 확인할 수 있습니다.
DefaultAzureCredential
을 구현하려면 먼저 Azure.Identity
를 추가하고 필요할 때 Microsoft.Extensions.Azure
패키지를 애플리케이션에 추가합니다. 명령줄 또는 NuGet 패키지 관리자를 사용하여 이 작업을 수행할 수 있습니다.
애플리케이션 프로젝트 디렉터리에서 원하는 터미널 환경을 열고 아래 명령을 입력합니다.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Azure 서비스는 일반적으로 SDK의 해당 클라이언트 클래스를 사용하여 액세스됩니다. 이러한 클래스와 자체 사용자 지정 서비스는 Program.cs
파일에 등록되어야 앱 전체에서 종속성 주입을 통해 액세스할 수 있습니다. Program.cs
내에서 아래 단계에 따라 서비스와 DefaultAzureCredential
을 올바르게 설정하세요.
Azure.Identity
지시문과Microsoft.Extensions.Azure
네using
임스페이스를 포함합니다.- 관련 도우미 메서드를 사용하여 Azure 서비스를 등록합니다.
DefaultAzureCredential
개체의 인스턴스를UseCredential
메서드에 전달합니다.
이 예제는 다음 코드 세그먼트에 나와 있습니다.
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
또는 아래와 같이 추가 Azure 등록 방법의 도움 없이 서비스에서 DefaultAzureCredential
을 더 직접적으로 활용할 수도 있습니다.
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
위 코드가 로컬 개발 중에 로컬 워크스테이션에서 실행되면 환경 변수에서 애플리케이션 서비스 주체를 찾거나 Visual Studio, VS Code, Azure CLI 또는 Azure PowerShell에서 개발자 자격 증명 집합을 찾습니다. 둘 중 하나를 로컬 개발 중에 Azure 리소스에 대해 앱을 인증하는 데 사용할 수 있습니다.
Azure에 배포할 때 이 동일한 코드는 다른 Azure 리소스에 대해 앱을 인증할 수도 있습니다. DefaultAzureCredential
은 환경 설정 및 관리 ID 구성을 검색하여 다른 서비스에 자동으로 인증할 수 있습니다.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기