.NET을 사용하여 계정 SAS 만들기

SAS(공유 액세스 서명)를 사용하면 스토리지 계정의 컨테이너 및 Blob에 대한 제한된 액세스 권한을 부여할 수 있습니다. SAS를 만들 때 클라이언트에서 액세스할 수 있는 Azure Storage 리소스, 해당 리소스에 대한 사용 권한, SAS의 유효 기간 등의 해당 제약 조건을 지정합니다.

모든 SAS는 키로 서명됩니다. 다음 두 가지 방법 중 하나로 SAS에 서명할 수 있습니다.

  • Microsoft Entra 자격 증명을 사용하여 만들어진 키를 사용합니다. Microsoft Entra 자격 증명으로 서명된 SAS는 사용자 위임 SAS입니다. 사용자 위임 SAS를 만드는 클라이언트에는 Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey 작업을 포함하는 Azure RBAC 역할이 할당되어야 합니다. 자세한 내용은 사용자 위임 SAS 만들기를 참조하세요.
  • 스토리지 계정 키를 사용합니다. 서비스 SAS계정 SAS는 모두 스토리지 계정 키로 서명됩니다. 서비스 SAS를 만드는 클라이언트는 계정 키에 대한 직접 액세스 권한이 있거나 Microsoft.Storage/storageAccounts/listkeys/action 권한이 할당되어야 합니다. 자세한 내용은 서비스 SAS 만들기 또는 계정 SAS 만들기를 참조하세요.

참고 항목

사용자 위임 SAS는 스토리지 계정 키로 서명된 SAS에 뛰어난 보안을 제공합니다. 가능하면 사용자 위임 SAS를 사용하는 것이 좋습니다. 자세한 내용은 SAS(공유 액세스 서명)를 사용하여 데이터에 대한 제한된 액세스 권한 부여를 참조하세요.

이 문서에서는 스토리지 계정 키를 사용하여 .NET용 Azure Storage 클라이언트 라이브러리로 계정 SAS를 만드는 방법을 보여 줍니다.

계정 SAS 정보

계정 SAS는 스토리지 계정 수준에서 만들어집니다. 계정 SAS를 만들어 다음을 수행할 수 있습니다.

저장된 액세스 정책은 아직 계정 SAS에서 지원되지 않습니다.

계정 SAS 만들기

계정 SAS는 계정 액세스 키로 서명됩니다. StorageSharedKeyCredential 클래스를 사용하여 SAS에 서명하는 데 사용되는 자격 증명을 만들 수 있습니다.

다음 코드 예제에서는 새 AccountSasBuilder 개체를 만들고 ToSasQueryParameters 메서드를 호출하여 계정 SAS 토큰 문자열을 가져오는 방법을 보여 줍니다.

public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
    // Create a SAS token that's valid for one day
    AccountSasBuilder sasBuilder = new AccountSasBuilder()
    {
        Services = AccountSasServices.Blobs | AccountSasServices.Queues,
        ResourceTypes = AccountSasResourceTypes.Service,
        ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
        Protocol = SasProtocol.Https
    };

    sasBuilder.SetPermissions(AccountSasPermissions.Read |
        AccountSasPermissions.Write);

    // Use the key to get the SAS token
    string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();

    return sasToken;
}

클라이언트에서 계정 SAS 사용

계정 SAS를 사용하여 Blob service에 대한 서비스 수준 API에 액세스하려면 계정 SAS 및 스토리지 계정에 대한 Blob 스토리지 엔드포인트를 사용하여 BlobServiceClient 개체를 만듭니다.

string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
    new(accountName, accountKey);

// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
    new Uri($"{blobServiceURI}?{sasToken}"));

리소스

.NET용 Azure Blob Storage 클라이언트 라이브러리를 사용하여 계정 SAS를 만드는 방법에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

클라이언트 라이브러리 리소스

참고 항목