다음을 통해 공유


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 액세스에도 마찬가지입니다.

Important

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

제한 사항

REST를 통한 Azure Files OAuth는 파일 및 디렉터리에 대한 작업을 지원하는 FileREST 데이터 API만 지원합니다. OAuth는 FileService 및 FileShare 리소스를 관리하는 FilesREST 데이터 평면 API에서는 지원되지 않습니다. 이러한 관리 API는 스토리지 계정 키 또는 SAS 토큰을 사용하여 호출되며 레거시 이유로 데이터 평면을 통해 노출됩니다. FileService 및 FileShare 리소스와 관련된 모든 관리 작업에 OAuth를 지원하는 컨트롤 플레인 API(스토리지 리소스 공급자 - Microsoft.Storage)를 사용하는 것이 좋습니다.

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

백업, 복원 또는 감사 목적으로 파일 공유 데이터에 액세스해야 하는 애플리케이션 및 관리 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를 참조하세요. 기본 제공 역할이 정의되는 방식에 대한 자세한 내용은 역할 정의 이해를 참조하세요.

Important

경로 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 서비스에 대해 권한이 부여된 작업을 수행하는 데 사용할 서비스 클라이언트 개체를 가져올 수 있습니다.

다음은 샘플 코드입니다.

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 aadEndpoint = "";
            string accountUri = "";
            string connectionString = "";
            string shareName = "test-share";
            string directoryName = "testDirectory";
            string fileName = "testFile"; 

            ShareClient sharedKeyShareClient = new ShareClient(connectionString, shareName); 
            await sharedKeyShareClient.CreateIfNotExistsAsync(); 

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

            ShareClientOptions clientOptions = new ShareClientOptions(ShareClientOptions.ServiceVersion.V2023_05_03);

            // Set Allow Trailing Dot and Source Allow Trailing Dot.
            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();
            await sharedKeyShareClient.DeleteIfExistsAsync();
        }
    }
}

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

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

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

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

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

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

참고 항목