이 문서에서는 .NET용 Azure Storage 관리 라이브러리를 사용하여 Azure Storage 리소스에 연결하는 방법을 보여 줍니다. 연결되면 스토리지 계정을 만들고, 업데이트하고, 삭제하고, 스토리지 계정 설정을 관리할 수 있습니다. Azure Storage 클라이언트 라이브러리를 사용하여 리소스 관리와 데이터 액세스 간의 차이점에 대해 알아보려면 Azure Storage 클라이언트 라이브러리의 개요를 참조하세요.
API 참조 | NuGet | GitHub | 피드백 제공
필수 조건
프로젝트 설정
이 섹션에서는 .NET용 Azure Storage 관리 라이브러리를 사용하여 작업할 프로젝트를 준비하는 방법을 안내합니다.
프로젝트 디렉터리에서 dotnet add package
명령을 사용하여 Azure Storage 리소스 관리자 및 Azure ID 클라이언트 라이브러리용 패키지를 설치합니다. Azure 서비스에 암호 없이 연결하려면 Azure.Identity 패키지가 필요합니다.
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager.Storage
코드 파일 맨 위에 다음과 같이 using
지시문을 추가합니다.
using Azure.Identity;
using Azure.ResourceManager;
관리 라이브러리 정보:
- Azure.ResourceManager.Storage: 스토리지 계정을 관리하기 위한 컬렉션, 리소스 및 데이터를 나타내는 기본 클래스를 포함합니다.
액세스 권한 부여 및 클라이언트 만들기
애플리케이션을 연결하고 스토리지 계정 리소스를 관리하려면 ArmClient 개체를 만듭니다. 이 클라이언트 개체는 모든 ARM(Azure Resource Manager) 클라이언트의 진입점입니다. 모든 관리 API는 동일한 엔드포인트를 통과하므로 리소스와 상호 작용하기 위해 최상위 ArmClient
하나만 만들어야 합니다.
Azure RBAC를 사용하여 관리 권한 할당
Azure는 관리 작업을 호출할 수 있는 권한을 부여하는 기본 제공 역할을 제공합니다. Azure Storage는 특히 Azure Storage 리소스 공급자에서 사용하기 위한 기본 제공 역할도 제공합니다. 자세한 내용은 관리 작업을 위한 기본 제공 역할을 참조하세요.
DefaultAzureCredential을 사용하여 액세스 권한 부여
Microsoft Entra 권한 부여 토큰을 사용하여 ArmClient
개체에 권한을 부여할 수 있습니다. 이 문서의 코드 예제에서는 DefaultAzureCredential
을(를) 사용하여 클라이언트 개체에 권한을 부여합니다.
DefaultAzureCredential
클래스는 Azure에 배포될 애플리케이션에 대한 기본 TokenCredential
인증 흐름을 제공합니다. 자세한 내용은 DefaultAzureCredential을 참조하세요.
Microsoft Entra ID로 권한을 부여하려면 보안 주체를 사용해야 합니다. 필요한 보안 주체 유형은 애플리케이션이 실행되는 위치에 따라 다릅니다. 다음 표를 가이드로 따르세요.
애플리케이션이 실행되는 위치 | 할당할 수 있습니다. | 지침 |
---|---|---|
로컬 컴퓨터(개발 및 테스트) | 서비스 사용자 | 앱 등록, Microsoft Entra 그룹 설정, 역할 할당, 환경 변수 구성 방법을 알아보려면 개발자 서비스 주체를 사용하여 액세스 권한 부여를 참조하세요. |
로컬 컴퓨터(개발 및 테스트) | 사용자 ID | Microsoft Entra 그룹을 설정하고, 역할을 할당하고, Azure에 로그인하는 방법을 알아보려면 개발자 자격 증명을 사용하여 액세스 권한 부여를 참조하세요. |
Azure에서 호스트 | 관리 ID | 관리 ID를 사용하도록 설정하고 역할을 할당하는 방법을 알아보려면 시스템 할당 관리 ID 또는 사용자 할당 관리 ID를 사용하여 액세스 권한을 부여하는 지침을 참조하세요. |
Azure 외부에서 호스트됨(예: 온-프레미스 앱) | 서비스 사용자 | 앱을 등록하고, 역할을 할당하고, 환경 변수를 구성하는 방법을 알아보려면 애플리케이션 서비스 주체를 사용하여 온-프레미스 앱에서 액세스 권한 부여를 참조하세요. |
액세스 권한을 부여하고 스토리지 계정 리소스에 연결하는 쉽고 안전한 방법은 DefaultAzureCredential 인스턴스를 만들어 OAuth 토큰을 가져오는 것입니다. 그런 다음 해당 자격 증명을 사용하여 ArmClient 개체를 만들 수 있습니다.
다음 예제에서는 DefaultAzureCredential
을(를) 사용하여 권한이 부여된 ArmClient
개체를 만든 다음 지정된 구독 ID의 구독 리소스를 가져옵니다.
ArmClient armClient = new ArmClient(new DefaultAzureCredential());
// Create a resource identifier, then get the subscription resource
ResourceIdentifier resourceIdentifier = new($"/subscriptions/{subscriptionId}");
SubscriptionResource subscription = armClient.GetSubscriptionResource(resourceIdentifier);
사용자를 인증하는 데 사용할 자격 증명 유형을 정확히 알고 있는 경우 .NET용 Azure ID 클라이언트 라이브러리에서 다른 클래스를 사용하여 OAuth 토큰을 가져올 수 있습니다. 이러한 클래스는 TokenCredential 클래스에서 파생됩니다.
관리 작업에 권한을 부여하는 방법에 대한 자세한 내용은 Azure RBAC를 사용하여 관리 권한 할당을 참조하세요.
구독에 스토리지 리소스 공급자 등록
리소스 공급자를 사용하려면 먼저 Azure 구독에 등록해야 합니다. 이 단계는 구독당 한 번만 수행해야 하며 리소스 공급자 Microsoft.Storage가 현재 구독에 등록되어 있지 않은 경우에만 적용됩니다.
스토리지 리소스 공급자를 등록하거나 Azure portal, Azure CLI 또는 Azure PowerShell을 사용하여 등록 상태를 확인할 수 있습니다.
다음 예제와 같이 Azure 관리 라이브러리를 사용하여 등록 상태를 확인하고 Storage 리소스 공급자를 등록할 수도 있습니다.
public static async Task RegisterSRPInSubscription(SubscriptionResource subscription)
{
ResourceProviderResource resourceProvider =
await subscription.GetResourceProviderAsync("Microsoft.Storage");
// Check the registration state of the resource provider and register, if needed
if (resourceProvider.Data.RegistrationState == "NotRegistered")
resourceProvider.Register();
}
참고 항목
등록 작업을 수행하려면 다음 Azure RBAC 작업에 대한 권한이 필요합니다. Microsoft.Storage/register/action. 이 권한은 기여자 및 소유자 기본 제공 역할에 포함되어 있습니다.
스토리지 계정 리소스를 관리하기 위한 클라이언트 만들기
ArmClient
개체를 만들고 Storage 리소스 공급자를 등록한 후 리소스 그룹 및 스토리지 계정 수준에서 클라이언트 개체를 만들 수 있습니다. 다음 코드 예제에서는 지정된 리소스 그룹 및 스토리지 계정에 대한 클라이언트 개체를 만드는 방법을 보여 줍니다.
// Get a resource group
ResourceGroupResource resourceGroup = await subscription.GetResourceGroupAsync(rgName);
// Get a collection of storage account resources
StorageAccountCollection accountCollection = resourceGroup.GetStorageAccounts();
// Get a specific storage account resource
StorageAccountResource storageAccount = await accountCollection.GetAsync(storageAccountName);
클라이언트 리소스 계층 구조 이해
공용 작업을 수행하는 데 필요한 클라이언트 수와 각 클라이언트가 사용하는 중복 매개 변수 수를 줄이기 위해 관리 SDK는 Azure의 개체 계층 구조를 반영하는 개체 계층 구조를 제공합니다. SDK의 각 리소스 클라이언트에는 적절한 구독 및 리소스 그룹으로 이미 범위가 한정된 자식의 리소스 클라이언트에 액세스하는 메서드가 있습니다.
각 리소스 종류에 대한 세 가지 표준 계층 구조 수준이 있습니다. 스토리지 계정 리소스의 경우 계층 구조는 다음과 같습니다.
- StorageAccountCollection: 리소스 그룹과 같은 특정 부모 리소스에 속하는 스토리지 계정의 컬렉션에서 수행할 수 있는 작업을 나타냅니다.
-
StorageAccountResource: 전체 스토리지 계정 클라이언트 개체를 나타내며 세부 정보를
StorageAccountData
형식으로 노출하는 데이터 속성을 포함합니다. 클래스 인스턴스는 구독 ID 또는 리소스 이름과 같은 범위 매개 변수를 전달할 필요 없이 해당 리소스의 모든 작업에 액세스할 수 있습니다. - StorageAccountData: 지정된 리소스를 구성하는 모델을 나타냅니다. 일반적으로 이 클래스는 서비스 호출의 응답 데이터이며 리소스에 대한 세부 정보를 제공합니다.
애플리케이션 빌드
다음 가이드에서는 .NET용 Azure Storage 관리 라이브러리를 사용하여 리소스를 관리하고 특정 작업을 수행하는 방법을 보여 줍니다.
가이드 | 설명 |
---|---|
스토리지 계정 관리 | 스토리지 계정을 만들고 관리하고, 스토리지 계정 키를 관리하고, 클라이언트 옵션을 구성하여 사용자 지정 재시도 정책을 만드는 방법을 알아봅니다. |