다음을 통해 공유


REST를 통해 Azure Files OAuth에서 Microsoft Entra ID를 사용하여 Azure 파일 공유에 액세스

REST를 통한 Azure Files OAuth를 사용하면 REST API 기반 액세스를 위해 Microsoft Entra ID를 사용하여 OAuth 인증 프로토콜을 통해 사용자 및 애플리케이션에 대한 Azure 파일 공유에 대한 관리자 수준의 읽기 및 쓰기 액세스를 사용할 수 있습니다. 사용자, 그룹, Azure Portal과 같은 자사 서비스, REST 인터페이스를 사용하는 타사 서비스 및 애플리케이션은 이제 Microsoft Entra 계정으로 OAuth 인증 및 권한 부여를 사용하여 Azure 파일 공유의 데이터에 액세스할 수 있습니다. REST API를 호출하는 PowerShell cmdlet 및 Azure CLI 명령은 OAuth를 사용하여 Azure 파일 공유에 액세스할 수도 있습니다. 추가 권한을 사용하려는 의도를 나타내려면 명시적 헤더를 사용하여 REST API를 호출해야 합니다. Azure PowerShell 및 Azure CLI 액세스에도 마찬가지입니다.

중요합니다

이 문서에서는 특정 고객 사용 사례에 대해 Azure 파일 공유에 대한 관리자 수준 액세스를 사용하도록 설정하는 방법을 설명합니다. 최종 사용자를 위한 ID 기반 인증에 대한 보다 일반적인 문서를 찾는 경우 SMB 액세스에 대한 Azure Files ID 기반 인증 개요를 참조하세요.

적용 대상

관리 모델 청구 모델 미디어 계층 중복성 중소기업 네트워크 파일 시스템 (NFS)
Microsoft.Storage (마이크로소프트 저장소) 프로비전된 v2 HDD(표준) 로컬(LRS) 예 아니요
Microsoft.Storage (마이크로소프트 저장소) 프로비전된 v2 HDD(표준) 영역(ZRS) 예 아니요
Microsoft.Storage (마이크로소프트 저장소) 프로비전된 v2 HDD(표준) 지역(GRS) 예 아니요
Microsoft.Storage (마이크로소프트 저장소) 프로비전된 v2 HDD(표준) GeoZone(GZRS) 예 아니요
Microsoft.Storage (마이크로소프트 저장소) 프로비전된 v1 SSD(프리미엄) 로컬(LRS) 예 예
Microsoft.Storage (마이크로소프트 저장소) 프로비전된 v1 SSD(프리미엄) 영역(ZRS) 예 예
Microsoft.Storage (마이크로소프트 저장소) 종량제 HDD(표준) 로컬(LRS) 예 아니요
Microsoft.Storage (마이크로소프트 저장소) 종량제 HDD(표준) 영역(ZRS) 예 아니요
Microsoft.Storage (마이크로소프트 저장소) 종량제 HDD(표준) 지역(GRS) 예 아니요
Microsoft.Storage (마이크로소프트 저장소) 종량제 HDD(표준) GeoZone(GZRS) 예 아니요

제한점

Microsoft Entra ID를 사용하여 파일 데이터 작업에 권한을 부여하는 것은 REST API 버전 2022-11-02 이상에서만 지원됩니다.

FileService 및 FileShare 리소스를 관리하는 Azure Files REST 데이터 평면 API에 대한 AZURE Files OAuth over REST 지원은 REST API 버전 2024-11-04 이상에서 사용할 수 있습니다.

Azure Storage에 대한 버전 지정을 참조하세요.

고객 사용 사례

REST API 인터페이스를 통해 Azure Files를 사용한 OAuth 인증 및 권한 부여는 다음 시나리오에서 고객에게 도움이 될 수 있습니다.

애플리케이션 개발 및 서비스 통합

OAuth 인증 및 권한 부여를 통해 개발자는 Microsoft Entra ID의 사용자 또는 애플리케이션 ID를 사용하여 Azure Storage REST API에 액세스하는 애플리케이션을 빌드할 수 있습니다.

또한 고객 및 파트너는 자사 및 타사 서비스를 사용하여 고객 스토리지 계정에 대해 안전하고 투명하게 필요한 액세스를 구성할 수 있습니다.

Azure Portal, PowerShell 및 CLI, AzCopy 및 Storage Explorer와 같은 DevOps 도구는 사용자의 ID를 사용하여 데이터를 관리할 수 있으므로 스토리지 액세스 키를 관리하거나 배포할 필요가 없습니다.

관리되는 아이덴티티

백업, 복원 또는 감사 목적으로 파일 공유 데이터에 액세스해야 하는 애플리케이션 및 관리 ID가 있는 고객은 OAuth 인증 및 권한 부여를 활용할 수 있습니다. 각 ID에 대해 파일 및 디렉터리 수준 권한을 적용하면 복잡성이 추가되며 특정 워크로드와 호환되지 않을 수 있습니다. 예를 들어 고객은 파일 관련 권한과 관계없이 모든 파일에 대한 읽기 전용 액세스 권한으로 Azure 파일 공유에 액세스하도록 백업 솔루션 서비스에 권한을 부여할 수 있습니다.

스토리지 계정 키 바꾸기

Microsoft Entra ID는 공유 키 액세스를 통해 뛰어난 보안 및 사용 편의성을 제공합니다. 스토리지 계정 키 액세스를 OAuth 인증 및 권한 부여로 바꾸어 읽기/쓰기 모두 권한으로 Azure 파일 공유에 액세스할 수 있습니다. 또한 이 방법을 사용하면 특정 사용자 액세스를 더 잘 감사하고 추적할 수 있습니다.

데이터 작업에 대한 특권 접근 및 사용 권한

REST 기능을 통해 Azure Files OAuth를 사용하려면 사용자, 그룹 또는 서비스 주체에 할당된 RBAC 역할에 포함해야 하는 추가 권한이 있습니다. 이 기능의 일부로 두 가지 새로운 데이터 작업이 도입되었습니다.

Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action

Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action

OAuth를 사용하여 REST API를 호출하는 사용자, 그룹 또는 서비스 주체에는 readFileBackupSemantics 데이터 액세스를 허용하는 역할에 할당된 작업 또는 writeFileBackupSemantics 작업이 있어야 합니다. 이 기능을 사용하기 위한 요구 사항입니다. 특정 파일 서비스 작업을 호출하는 데 필요한 권한에 대한 자세한 내용은 데이터 작업 호출에 대한 사용 권한을 참조하세요.

이 기능은 이러한 새 작업을 포함하는 두 가지 새로운 기본 제공 역할을 제공합니다.

역할 데이터 작업
스토리지 파일 데이터 권한 있는 읽기 권한자 Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action
스토리지 파일 데이터 권한이 있는 기여자 Microsoft.Storage/storageAccounts/fileServices/fileShares/files/read
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/write
Microsoft.Storage/storageAccounts/fileServices/fileShares/files/delete
Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

이러한 새 역할은 기존 스토리지 파일 데이터 SMB 공유 읽기 권한자스토리지 파일 데이터 SMB 공유 고급 기여자 기본 제공 역할과 유사하지만 몇 가지 차이점이 있습니다.

  • 새 역할에는 OAuth 액세스에 필요한 추가 데이터 작업이 포함됩니다.

  • 스토리지 파일 데이터 권한이 있는 읽기자 또는 권한 있는 기여자 역할이 할당된 사용자, 그룹 또는 서비스 주체가 OAuth를 사용하여 FilesREST 데이터 API를 호출하는 경우 사용자, 그룹 또는 서비스 주체는 다음과 같은 권한을 갖습니다.

    • 스토리지 파일 데이터 권한 있는 읽기 권한자: 설정된 파일/디렉터리 수준 NTFS 권한에 관계없이 구성된 모든 스토리지 계정에 대한 공유의 모든 데이터에 대한 전체 읽기 권한입니다.
    • 스토리지 파일 데이터 권한 있는 기여자: 설정된 파일/디렉터리 수준 NTFS 권한에 관계없이 전체 읽기, 쓰기, ACL 수정, 구성된 모든 스토리지 계정에 대한 공유의 모든 데이터에 대한 액세스 권한을 삭제합니다.
  • 이러한 특수한 사용 권한 및 역할을 통해 시스템은 파일/디렉터리 수준 권한을 우회하고 파일 공유 데이터에 대한 액세스를 허용합니다.

새 역할 및 데이터 작업을 사용하면 이 기능은 스토리지 계정의 모든 파일 공유 아래에 있는 파일 및 폴더에 대한 모든 권한을 대체하는 스토리지 계정 전체 권한을 제공합니다. 그러나 새 역할에는 데이터 서비스에 액세스할 수 있는 권한만 포함됩니다. 파일 공유 관리 서비스(파일 공유에 대한 작업)에 액세스할 수 있는 권한은 포함되지 않습니다. 이 기능을 사용하려면 액세스할 수 있는 권한이 있는지 확인합니다.

  • 인증 사용
  • 파일 공유 관리 서비스
  • 데이터 서비스(파일 공유의 데이터)

관리 서비스에 대한 액세스를 제공하는 많은 기본 제공 역할이 있습니다. 적절한 권한으로 사용자 지정 역할을 만들 수도 있습니다. 역할 기반 액세스 제어에 대한 자세한 내용은 Azure RBAC를 참조하세요. 기본 제공 역할이 정의되는 방식에 대한 자세한 내용은 역할 정의 이해를 참조하세요.

파일 공유 리소스 형식의 경우, 해당 RBAC 범위는 컨트롤 플레인(관리 작업)에서 shares을 사용하고 데이터 평면(데이터 작업)에서 fileshares을 사용합니다. RBAC 범위 또는 데이터 작업 문자열에 포함된 shares 파일 공유 리소스 ID를 사용하려고 하면 작동하지 않습니다. RBAC 할당 범위 내에서 fileshares를 사용해야 합니다, 예를 들어:

  • /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/fileServices/default/fileshares/<share-name>

중요합니다

경로 Microsoft.Storage/storageAccounts/fileServices/* 또는 더 높은 범위에 대해 정의된 와일드카드 사용 사례는 이 새 데이터 작업을 통해 부여된 추가 액세스 및 권한을 자동으로 상속합니다. Azure Files에 의도하지 않거나 과도하게 권한 있는 액세스를 방지하기 위해 사용자 및 애플리케이션이 추가 권한을 사용하려는 의도를 명시적으로 나타내야 하는 추가 검사를 구현했습니다. 또한 고객은 사용자 RBAC 역할 할당을 검토하고 와일드카드 사용량을 명시적 권한으로 바꾸어 적절한 데이터 액세스 관리를 보장하는 것이 좋습니다.

애플리케이션 코드에서 파일 데이터에 대한 액세스 권한 부여

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

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

Azure ID 클라이언트 라이브러리에서 반환하는 액세스 토큰은 토큰 자격 증명에 캡슐화됩니다. 그런 다음 토큰 자격 증명을 사용하여 Azure Files 서비스에 대해 권한 있는 작업을 수행하는 데 사용할 서비스 클라이언트 개체를 가져올 수 있습니다.

다음 코드 예제에서는 Microsoft Entra ID를 사용하여 클라이언트 개체에 권한을 부여하고 디렉터리 및 파일 수준에서 작업을 수행하는 방법을 보여 줍니다. 이 예제에서는 파일 공유가 이미 있다고 가정합니다.

using Azure.Core;
using Azure.Identity;
using Azure.Storage.Files.Shares;
using Azure.Storage.Files.Shares.Models;

namespace FilesOAuthSample
{
    internal class Program
    {
        static async Task Main(string[] args)
        {
            string tenantId = "";
            string appId = "";
            string appSecret = "";
            string entraEndpoint = "";
            string accountUri = "https://<storage-account-name>.file.core.windows.net/";
            string shareName = "test-share";
            string directoryName = "test-directory";
            string fileName = "test-file";  

            TokenCredential tokenCredential = new ClientSecretCredential(
                tenantId,
                appId,
                appSecret,
                new TokenCredentialOptions()
                {
                    AuthorityHost = new Uri(entraEndpoint)
                });

            // Set client options
            ShareClientOptions clientOptions = new ShareClientOptions();
            clientOptions.AllowTrailingDot = true;
            clientOptions.AllowSourceTrailingDot = true;

            // x-ms-file-intent=backup will automatically be applied to all APIs
            // where it is required in derived clients
            clientOptions.ShareTokenIntent = ShareTokenIntent.Backup;

            ShareServiceClient shareServiceClient = new ShareServiceClient(
                new Uri(accountUri),
                tokenCredential,
                clientOptions);

            ShareClient shareClient = shareServiceClient.GetShareClient(shareName);
            ShareDirectoryClient directoryClient = shareClient.GetDirectoryClient(directoryName);
            await directoryClient.CreateAsync();

            ShareFileClient fileClient = directoryClient.GetFileClient(fileName);
            await fileClient.CreateAsync(maxSize: 1024);
            await fileClient.GetPropertiesAsync();
        }
    }
}

FileREST 데이터 평면 API를 사용하여 액세스 권한 부여

Azure Portal, Azure PowerShell 또는 Azure CLI를 사용하여 파일 데이터에 대한 액세스 권한을 부여할 수도 있습니다.

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

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

Microsoft Entra 계정을 사용하여 Azure Portal에서 파일 데이터에 액세스하려면 파일 데이터에 액세스할 수 있는 권한이 필요하며 Azure Portal에서 스토리지 계정 리소스를 탐색할 수 있는 권한도 필요합니다. Azure에서 제공하는 기본 제공 역할은 파일 리소스에 대한 액세스 권한을 부여하지만 스토리지 계정 리소스에 대한 권한을 부여하지는 않습니다. 따라서 포털에 액세스하려면 스토리지 계정 수준 또는 그 이상으로 스코프가 지정된 읽기 역할과 같은 Azure Resource Manager(ARM) 역할을 할당해야 합니다. 읽기 권한자 역할은 가장 제한적인 권한을 부여하지만 스토리지 계정 관리 리소스에 대한 액세스 권한을 부여하는 ARM 역할은 허용됩니다.

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

참고하십시오