Microsoft Entra ID를 사용하여 Blob에 대한 액세스 권한 부여

Azure Storage는 Microsoft Entra ID를 사용하여 Blob 데이터 요청에 대해 권한을 부여하는 것을 지원합니다. Microsoft Entra ID를 통해 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 사용자, 그룹 또는 애플리케이션 서비스 주체가 될 수 있는 보안 주체에 권한을 부여할 수 있습니다. 보안 주체는 OAuth 2.0 토큰을 반환하기 위해 Microsoft Entra ID에 의해 인증됩니다. 그런 다음 토큰을 사용하여 Blob service에 대한 요청을 승인할 수 있습니다.

Microsoft Entra ID를 통한 권한 부여는 공유 키 권한 부여보다 뛰어난 보안과 사용 편의성을 제공합니다. 가능한 경우 Blob 애플리케이션에서 Microsoft Entra 권한 부여를 사용하여 필요한 최소 권한으로 액세스를 보장하는 것이 좋습니다.

Microsoft Entra ID에 대한 권한 부여는 모든 공용 지역 및 국가 클라우드의 모든 범용 및 Blob 스토리지 계정에 사용할 수 있습니다. Azure Resource Manager 배포 모델로 만든 스토리지 계정에서만 Microsoft Entra 권한 부여를 지원합니다.

또한 Blob Storage는 Microsoft Entra 자격 증명으로 서명된 SAS(공유 액세스 서명) 만들기를 지원합니다. 자세한 내용은 공유 액세스 서명을 사용하여 데이터에 대한 제한된 액세스 권한 부여를 참조하세요.

Blob용 Microsoft Entra ID 개요

보안 주체(사용자, 그룹 또는 애플리케이션)가 Blob 리소스에 액세스하려고 할 때 익명 액세스에 사용할 수 있는 Blob이 아닌 경우 요청에 권한이 부여되어야 합니다. Microsoft Entra ID를 사용하면 리소스에 대한 액세스가 2단계 프로세스로 이루어집니다.

  1. 먼저, 보안 주체의 ID가 인증되고 OAuth 2.0 토큰이 반환됩니다.

    인증 단계를 수행하려면 런타임 시 애플리케이션 요청에 OAuth 2.0 액세스 토큰이 있어야 합니다. 애플리케이션이 Azure VM, 가상 머신 확장 집합 또는 Azure Functions 앱과 같은 Azure 엔터티 내에서 실행되는 경우 관리 ID를 사용하여 Blob 데이터에 액세스할 수 있습니다.

  2. 그런 다음 토큰은 Blob service에 대한 요청의 일부로 전달되고 서비스에서 지정된 리소스에 대한 액세스 권한을 부여하는 데 사용됩니다.

    권한 부여 단계에서는 요청하는 보안 주체에게 하나 이상의 Azure RBAC 역할을 할당해야 합니다. 자세한 내용은 액세스 권한에 대해 Azure 역할 할당을 참조하세요.

포털, PowerShell 또는 Azure CLI에서 Microsoft Entra 계정 사용

Microsoft Entra 계정으로 Azure Portal의 데이터에 액세스하는 방법을 알아보려면 Azure Portal에서 데이터 액세스를 참조하세요. Microsoft Entra 계정으로 Azure PowerShell 또는 Azure CLI 명령을 호출하는 방법을 알아보려면 PowerShell 또는 Azure CLI에서 데이터 액세스를 참조하세요.

Microsoft Entra ID를 사용하여 애플리케이션 코드에 대한 액세스 권한 부여

Microsoft Entra ID로 Azure Storage에 대한 액세스 권한을 부여하려면 다음 클라이언트 라이브러리 중 하나를 사용하여 OAuth 2.0 토큰을 획득할 수 있습니다.

  • Azure ID 클라이언트 라이브러리는 대부분의 개발 시나리오에 권장됩니다.
  • MSAL(Microsoft 인증 라이브러리)은 특정 고급 시나리오에 적합할 수 있습니다.

Azure ID 클라이언트 라이브러리

Azure ID 클라이언트 라이브러리는 Azure SDK를 통해 Microsoft Entra ID로 권한 부여를 위한 OAuth 2.0 액세스 토큰을 가져오는 프로세스를 간소화합니다. .NET, Java, Python, JavaScript 및 Go용 Azure Storage 클라이언트 라이브러리의 최신 버전은 각 언어에 대한 Azure ID 라이브러리와 통합되어 Azure Storage 요청의 권한 부여를 위한 액세스 토큰을 가져오는 간단하고 안전한 수단을 제공합니다.

Azure ID 클라이언트 라이브러리의 장점은 애플리케이션이 개발 환경 또는 Azure에서 실행되는지에 관계없이 동일한 코드를 사용하여 액세스 토큰을 획득할 수 있다는 것입니다. Azure ID 클라이언트 라이브러리는 보안 주체에 대한 액세스 토큰을 반환합니다. 코드가 Azure에서 실행되는 경우 보안 주체는 Azure 리소스, 서비스 주체 또는 사용자나 그룹에 대한 관리 ID일 수 있습니다. 개발 환경에서 클라이언트 라이브러리는 테스트를 위해 사용자 또는 서비스 주체에 대한 액세스 토큰을 제공합니다.

Azure ID 클라이언트 라이브러리에서 반환하는 액세스 토큰은 토큰 자격 증명에 캡슐화됩니다. 그런 다음, 토큰 자격 증명을 사용하여 Azure Storage에 대해 권한이 부여된 작업을 수행하는 데 사용할 서비스 클라이언트 개체를 가져올 수 있습니다. 액세스 토큰 및 토큰 자격 증명을 가져오는 간단한 방법은 Azure ID 클라이언트 라이브러리에서 제공하는 DefaultAzureCredential 클래스를 사용하는 것입니다. DefaultAzureCredential은 여러 다른 자격 증명 형식을 순차적으로 시도하여 토큰 자격 증명을 가져오려고 합니다. DefaultAzureCredential은 개발 환경과 Azure 모두에서 작동합니다.

다음 테이블은 다양한 시나리오에서 데이터에 대한 액세스 권한을 부여하기 위한 추가 정보를 가리킵니다.

언어 .NET Java JavaScript Python Go
Microsoft Entra ID를 사용한 인증 개요 Azure 서비스를 사용하여 .NET 애플리케이션을 인증하는 방법 Java 및 Azure Identity로 Azure 인증 Azure SDK를 사용하여 Azure에 JavaScript 앱 인증 Azure SDK를 사용하여 Azure에 Python 앱 인증
개발자 서비스 주체를 사용한 인증 서비스 주체를 사용하여 로컬 개발 중 Azure 서비스에 .NET 앱 인증 서비스 주체를 사용한 Azure 인증 서비스 주체를 사용하여 Azure 서비스에 JS 앱 인증 서비스 주체를 사용하여 로컬 개발 중 Azure 서비스에 Python 앱 인증 서비스 주체를 사용한 Go용 Azure SDK 인증
개발자 또는 사용자 계정을 사용한 인증 개발자 계정을 사용하여 로컬 개발 중 Azure 서비스에 .NET 앱 인증 사용자 자격 증명을 사용한 Azure 인증 개발자 계정을 사용하여 Azure 서비스에 JS 앱 인증 개발자 계정을 사용하여 로컬 개발 중에 Azure 서비스에 Python 앱 인증 Go용 Azure SDK로 Azure 인증
Azure 호스팅 앱에서 인증 .NET용 Azure SDK를 사용하여 Azure 리소스에 Azure 호스팅 앱 인증 Azure에서 호스트되는 Java 애플리케이션 인증 JavaScript용 Azure SDK를 사용하여 Azure 리소스에 Azure 호스팅 JavaScript 앱 인증 Python용 Azure SDK를 사용하여 Azure 리소스에 Azure 호스팅 앱 인증 관리 ID를 사용하여 Go용 Azure SDK로 인증
온-프레미스 앱에서 인증 온-프레미스에서 호스트되는 .NET 앱에서 Azure 리소스에 인증 Azure 리소스에 온-프레미스 JavaScript 앱 인증 온-프레미스에서 호스트되는 Python 앱에서 Azure 리소스에 인증
ID 클라이언트 라이브러리 개요 .NET용 Azure ID 클라이언트 라이브러리 Java용 Azure ID 클라이언트 라이브러리 JavaScript용 Azure ID 클라이언트 라이브러리 Python용 Azure ID 클라이언트 라이브러리 Go용 Azure ID 클라이언트 라이브러리

MSAL(Microsoft 인증 라이브러리)

Microsoft는 가급적 Azure ID 클라이언트 라이브러리를 사용하는 것을 권장하지만, MSAL 라이브러리는 특정 고급 시나리오에서 사용하기에 적절할 수 있습니다. 자세한 내용은 MSAL에 대해 알아보기를 참조하세요.

MSAL을 사용하여 Azure Storage에 액세스하기 위한 OAuth 토큰을 획득하는 경우 Microsoft Entra 리소스 ID를 제공해야 합니다. Microsoft Entra 리소스 ID는 발급된 토큰을 사용하여 Azure 리소스에 대한 액세스를 제공할 수 있는 대상 그룹을 나타냅니다. Azure Storage의 경우 리소스 ID는 단일 스토리지 계정에 특정되거나 모든 스토리지 계정에 적용될 수 있습니다.

단일 스토리지 계정 및 서비스와 관련된 리소스 ID를 제공하는 경우 리소스 ID는 지정된 계정 및 서비스에 대한 요청에만 권한을 부여하기 위한 토큰을 획득하는 데 사용됩니다. 다음 표에는 작업 중인 클라우드를 기반으로 리소스 ID에 사용할 값이 나열되어 있습니다. <account-name>을 스토리지 계정 이름으로 바꿉니다.

클라우드 리소스 ID
Azure 글로벌 https://<account-name>.blob.core.windows.net
Azure Government https://<account-name>.blob.core.usgovcloudapi.net
Azure 중국 21Vianet https://<account-name>.blob.core.chinacloudapi.cn

다음 표에 표시된 대로 모든 스토리지 계정에 적용되는 리소스 ID를 제공할 수도 있습니다. 이 리소스 ID는 모든 공용 및 소버린 클라우드에서 동일하며 모든 스토리지 계정에 대한 요청을 권한 부여하기 위한 토큰을 획득하는 데 사용됩니다.

클라우드 리소스 ID
Azure 글로벌
Azure Government
Azure 중국 21Vianet
https://storage.azure.com/

액세스 권한을 위한 Azure 역할 할당

Microsoft Entra는 Azure RBAC를 통해 보안 리소스에 대한 액세스 권한을 부여합니다. Azure Storage는 Blob 데이터에 액세스하는 데 사용되는 공통 권한 집합을 포함하는 기본 제공 RBAC 역할 집합을 정의합니다. Blob 데이터에 액세스하기 위한 사용자 지정 역할을 정의할 수도 있습니다. Blob 액세스를 위한 Azure 역할 할당에 대한 자세한 내용은 BLOB 데이터 액세스를 위한 Azure 역할 할당을 참조하세요.

Microsoft Entra 보안 주체는 사용자, 그룹, 애플리케이션 서비스 주체 또는 Azure 리소스에 대한 관리 ID일 수 있습니다. 보안 주체에 할당된 RBAC 역할은 지정된 리소스에 대해 해당 주체가 갖게 될 권한을 결정합니다. Blob 액세스를 위한 Azure 역할 할당에 대한 자세한 내용은 BLOB 데이터 액세스를 위한 Azure 역할 할당을 참조하세요.

경우에 따라 스토리지 리소스에 대한 역할 할당이 많은 경우 Blob 리소스에 대한 세분화된 액세스를 사용하도록 설정하거나 권한을 단순화해야 할 수 있습니다. Azure 특성 기반 액세스 제어(Azure ABAC)를 사용하여 역할 할당에 대한 조건을 구성할 수 있습니다. 사용자 지정 역할과 함께 조건을 사용하거나 기본 제공 역할을 선택할 수 있습니다. ABAC를 사용하여 Azure Storage 리소스에 대한 조건을 구성하는 방법에 대한 자세한 내용은 Azure 역할 할당 조건을 사용하여 Blob에 대한 액세스 권한 부여(미리 보기)를 참조하세요. Blob 데이터 작업에 지원되는 조건에 대한 자세한 내용은 Azure Storage(미리 보기)의 Azure 역할 할당 조건에 대한 작업 및 특성을 참조하세요.

참고 항목

Azure Storage 계정을 만들 때 Microsoft Entra ID를 통해 데이터에 액세스할 수 있는 권한이 자동으로 할당되지 않습니다. Blob Storage에 액세스하기 위해 Azure 역할을 자신에게 명시적으로 할당해야 합니다. 구독, 리소스 그룹, 스토리지 계정 또는 컨테이너 수준으로 지정할 수 있습니다.

리소스 범위

Azure RBAC 역할을 보안 주체에 할당하기 전에 보안 주체에게 부여해야 하는 액세스 범위를 결정합니다. 모범 사례에 따르면 항상 가능한 가장 좁은 범위만 부여하는 것이 가장 좋습니다. 더 광범위한 범위에서 정의된 Azure RBAC 역할은 그 아래에 있는 리소스에 상속됩니다.

가장 좁은 범위부터 시작하여 다음 수준에서 Azure Blob 리소스에 대한 액세스 범위를 지정할 수 있습니다.

  • 개별 컨테이너. 이 범위에서 역할 할당은 컨테이너의 모든 Blob과 컨테이너 속성 및 메타데이터에 적용됩니다.
  • 스토리지 계정. 이 범위의 역할 할당은 모든 컨테이너와 해당 Blob에 적용됩니다.
  • 리소스 그룹. 이 범위의 역할 할당은 리소스 그룹의 모든 스토리지 계정에 있는 모든 컨테이너에 적용됩니다.
  • 구독. 이 범위의 역할 할당은 구독의 모든 리소스 그룹에 있는 모든 스토리지 계정의 모든 컨테이너에 적용됩니다.
  • 관리 그룹. 이 범위의 역할 할당은 관리 그룹의 모든 구독에 있는 모든 리소스 그룹의 모든 스토리지 계정에 있는 모든 컨테이너에 적용됩니다.

Azure RBAC 역할 할당 범위에 대한 자세한 내용은 Azure RBAC 범위 이해를 참조하세요.

Blob 및 큐를 위한 Azure 기본 제공 역할

Azure RBAC는 Microsoft Entra ID 및 OAuth를 사용하여 Blob 데이터에 대한 액세스 권한을 부여하기 위한 몇 가지 기본 제공 역할을 제공합니다. Azure Storage의 데이터 리소스에 대한 권한을 제공하는 역할의 몇 가지 예는 다음과 같습니다.

보안 주체에 Azure 기본 제공 역할을 할당하는 방법을 알아보려면 Blob 데이터에 액세스하기 위한 Azure 역할 할당을 참조하세요. Azure RBAC 역할 및 해당 권한을 나열하는 방법을 알아보려면 Azure 역할 정의 나열을 참조하세요.

기본 제공 역할을 Azure Storage에 정의하는 방법에 대한 자세한 내용은 역할 정의 이해를 참조하세요. Azure 사용자 지정 역할 만들기에 대한 자세한 내용은 Azure 사용자 지정 역할을 참조하세요.

데이터 액세스에 대해 명시적으로 정의된 역할만 보안 주체가 Blob 데이터에 액세스할 수 있도록 허용합니다. 소유자, 기여자스토리지 계정 기여자와 같은 기본 제공 역할을 통해 보안 주체가 스토리지 계정을 관리할 수 있지만 해당 계정에 대한 액세스 권한은 제공되지 않습니다. Microsoft Entra ID를 통해 해당 계정 내에서 데이터를 Blob에 넣습니다. 그러나 역할에 Microsoft.Storage/storageAccounts/listKeys/action이 포함되어 있는 경우에는 해당 역할이 할당된 사용자가 계정 액세스 키를 사용하여 공유 키 인증을 통해 스토리지 계정의 데이터에 액세스할 수 있습니다. 자세한 내용은 Azure Portal에서 Blob 데이터에 대한 액세스 권한을 부여하는 방법 선택을 참조하세요.

데이터 서비스 및 관리 서비스에 대한 Azure Storage의 Azure 기본 제공 역할에 대한 자세한 내용은 Azure RBAC에 대한 Azure 기본 제공 역할스토리지 섹션을 참조하세요. 또한 Azure에서 권한을 제공하는 다양한 역할 형식에 대한 자세한 내용은 Azure 역할, Microsoft Entra 역할 및 클래식 구독 관리자 역할을 참조하세요.

Important

Azure 역할 할당이 전파되는 데 최대 30분이 걸릴 수 있습니다.

데이터 작업에 대한 액세스 권한

특정 Blob service 작업을 호출하는 데 필요한 권한에 대한 자세한 내용은 데이터 작업 호출 권한을 참조하세요.

Microsoft Entra 계정으로 데이터에 액세스

Azure Portal, PowerShell 또는 Azure CLI를 통한 Blob 데이터 액세스는 사용자의 Microsoft Entra 계정을 사용하거나 계정 액세스 키(공유 키 권한 부여)를 사용하여 권한 부여될 수 있습니다.

주의

공유 키를 사용한 권한 부여는 안전하지 않을 수 있어 권장하지 않습니다. 최적의 보안을 위해 Azure Storage 계정에 대한 공유 키 권한 부여 방지에 설명된 대로 스토리지 계정에 대해 공유 키를 통한 권한 부여를 비활성화합니다.

액세스 키 및 연결 문자열 사용은 프로덕션 또는 중요한 데이터에 액세스하지 않는 초기 개념 증명 앱 또는 개발 프로토타입으로 제한되어야 합니다. 그렇지 않으면 Azure 리소스에 인증할 때 Azure SDK에서 사용할 수 있는 토큰 기반 인증 클래스를 항상 기본으로 설정해야 합니다.

Microsoft에서는 클라이언트가 Microsoft Entra ID 또는 SAS(공유 액세스 서명)를 사용하여 Azure Storage의 데이터에 대한 액세스 권한을 부여하는 것이 좋습니다. 자세한 내용은 데이터 액세스에 대한 작업 권한 부여를 참조하세요.

Azure Portal에서 데이터 액세스

Azure Portal은 Microsoft Entra 계정 또는 계정 액세스 키를 사용하여 Azure Storage 계정의 Blob 데이터에 액세스할 수 있습니다. Azure Portal에서 사용하는 권한 부여 체계는 할당된 Azure 역할에 따라 달라집니다.

Blob 데이터에 액세스하려고 하면 Azure Portal은 먼저 Microsoft.Storage/storageAccounts/listkeys/action을 사용하여 Azure 역할이 할당되었는지 확인합니다. 이 작업으로 역할이 할당된 경우 Azure Portal은 공유 키 권한 부여를 통해 Blob 데이터에 액세스하기 위해 계정 키를 사용합니다. 이 작업에 대한 역할이 할당되지 않은 경우 Azure Portal은 Microsoft Entra 계정을 사용하여 데이터에 액세스하려고 시도합니다.

Microsoft Entra 계정을 사용하여 Azure Portal에서 Blob 데이터에 액세스하려면 Blob 데이터에 액세스할 수 있는 권한이 필요하고 Azure Portal에서 스토리지 계정 리소스를 탐색할 수 있는 권한도 필요합니다. Azure Storage에서 제공하는 기본 제공 역할은 Blob 및 큐 리소스에 대한 액세스 권한을 부여하지만 스토리지 계정 리소스에 대한 사용 권한은 부여하지 않습니다. 이러한 이유로 포털에 액세스하려면 스토리지 계정 수준 이상으로 범위가 지정된 읽기 권한자 역할과 같은 Azure Resource Manager 역할도 할당해야 합니다. Reader 역할은 가장 제한된 사용 권한을 부여하지만, 스토리지 계정 관리 리소스에 대한 액세스 권한을 부여하는 다른 Azure Resource Manager 역할도 허용됩니다. Microsoft Entra 계정을 사용하여 Azure Portal에서 데이터 액세스 권한을 사용자에게 할당하는 방법에 대한 자세한 내용은 BLOB 데이터 액세스를 위한 Azure 역할 할당을 참조하세요.

Azure Portal은 컨테이너로 이동할 때 사용 중인 권한 부여 체계를 나타냅니다. 포털의 데이터 액세스에 대한 자세한 내용은 Azure Portal에서 Blob 데이터에 대한 액세스 권한을 부여하는 방법 선택을 참조하세요.

PowerShell 또는 Azure CLI에서 데이터 액세스

Azure CLI 및 PowerShell은 Microsoft Entra 자격 증명을 사용한 로그인을 지원합니다. 로그인하면 세션이 해당 자격 증명으로 실행됩니다. 다음 문서에서 자세한 내용을 참조하세요.

기능 지원

이 기능에 대한 지원은 Data Lake Storage Gen2, NFS(네트워크 파일 시스템) 3.0 프로토콜 또는 SSH SFTP(파일 전송 프로토콜)를 사용하도록 설정하면 영향을 받을 수 있습니다. 이러한 기능을 사용하도록 설정한 경우 Azure Storage 계정의 Blob Storage 기능 지원을 참조하여 이 기능에 대한 지원을 평가합니다.

Microsoft Entra ID를 사용하여 Blob 데이터 작업에 권한을 부여하는 것은 REST API 버전 2017-11-09 이상에서만 지원됩니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요.

다음 단계