영업: 1-800-867-1380

공유 액세스 서명 만들기 및 사용

업데이트 날짜: 2014년 4월

공유 액세스 서명은 일정 기간 동안 컨테이너, Blob, 큐 및 테이블에 제한된 액세스 권한을 부여하는 URI입니다. 클라이언트에 공유 액세스 서명을 제공하여 계정 키를 공유하지 않고 저장소 계정 내 리소스에 액세스하도록 허용할 수 있습니다. 공유 액세스 서명을 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  • 페이지 또는 블록 blob 콘텐츠, 블록 목록, 속성 및 메타데이터의 읽기 및 쓰기

  • blob의 스냅숏 삭제, 임대 및 만들기

  • 컨테이너 내의 blob 나열

  • 큐 메시지 추가, 제거, 업데이트 및 삭제(저장소 클라이언트 라이브러리 2.0 이상 버전)

  • 메시지 수를 포함하여 큐 메타데이터 가져오기(저장소 클라이언트 라이브러리 2.0 이상 버전)

  • 테이블 항목 쿼리, 추가, 업데이트, 삭제 및 삽입(저장소 클라이언트 라이브러리 2.0 이상 버전)

공유 액세스 서명 URI 쿼리 매개 변수에는 저장소 리소스에 대한 제한된 액세스 권한을 부여하는 데 필요한 모든 정보가 포함됩니다. URI 쿼리 매개 변수는 공유 액세스 서명이 유효한 시간 간격, 이 서명이 부여하는 권한, 사용할 수 있는 리소스, 저장소 서비스가 요청을 인증하는 데 사용해야 하는 서명을 지정합니다.

또한 공유 액세스 서명 URI는 필요에 따라 리소스에 대한 액세스 권한을 수정하거나 취소할 수 있는 기능을 포함하여 서명 집합에 대한 추가 제어 수준을 제공하는 저장된 액세스 정책을 참조할 수 있습니다. 액세스 정책에 대한 자세한 내용은 저장된 액세스 정책 사용을 참조하십시오.

공유 액세스 서명의 URI 형식에 대한 자세한 내용은 공유 액세스 서명으로 액세스 위임(REST API)을 참조하십시오.

공유 액세스 서명은 URI에서 부여된 권한에 따라 리소스에 대한 액세스 권한을 부여합니다. 공유 액세스 서명 URI는 항상 HTTPS를 사용하여 생성해야 합니다. 공유 액세스 서명에 HTTP를 사용하면 저장소 계정이 악용될 위험이 있습니다.

특정 대상에 한해 액세스 권한을 부여하기 위한 공유 액세스 서명은 최대한 제한된 권한으로 생성해야 합니다. 또한 공유 액세스 서명은 보안 연결을 통해 안전하게 클라이언트에 배포되어야 하며, 취소할 수 있도록 저장된 액세스 정책에 연결하고 서명의 수명을 최대한 짧게 지정해야 합니다.

Important중요
공유 액세스 서명 URI는 서명을 만드는 데 사용된 계정 키 및 관련 저장된 액세스 정책(있을 경우)과 연결됩니다. 저장된 액세스 정책이 지정되지 않은 경우 공유 액세스 서명을 취소할 수 있는 유일한 방법은 계정 키를 변경하는 것입니다.

다음 코드 예에서는 컨테이너에 액세스 정책을 만들고 컨테이너에 대한 공유 액세스 서명을 생성합니다. 이렇게 생성된 공유 액세스 서명을 클라이언트에게 제공할 수 있습니다.

// The connection string for the storage account.  Modify for your account.
string storageConnectionString =
   "DefaultEndpointsProtocol=https;" +
   "AccountName=myaccount;" +
   "AccountKey=SzlFqgzqhfkk592cFovdYqCyvo8v9EESAnOLcTCeBIo31p46rJJSZx/5vU/oY3ZrK/VdFNaVpm6G8YSD2K48Nw==";

// As an alternative, you can retrieve storage account information from an app.config file. 
// This is one way to store and retrieve a connection string if you are 
// writing an application that will run locally, rather than in Windows Azure.

// string storageConnectionString = ConfigurationManager.AppSettings["StorageAccountConnectionString"];

// Create the storage account with the connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
                                               
// Create the blob client object.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Get a reference to the container for which shared access signature will be created.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
container.CreateIfNotExists();

// Create blob container permissions, consisting of a shared access policy 
// and a public access setting. 
BlobContainerPermissions blobPermissions = new BlobContainerPermissions();

// The shared access policy provides 
// read/write access to the container for 10 hours.
blobPermissions.SharedAccessPolicies.Add("mypolicy", new SharedAccessBlobPolicy()
{
   // To ensure SAS is valid immediately, don’t set start time.
   // This way, you can avoid failures caused by small clock differences.
   SharedAccessExpiryTime = DateTime.UtcNow.AddHours(10),
   Permissions = SharedAccessBlobPermissions.Write |
      SharedAccessBlobPermissions.Read
});

// The public access setting explicitly specifies that 
// the container is private, so that it can't be accessed anonymously.
blobPermissions.PublicAccess = BlobContainerPublicAccessType.Off;

// Set the permission policy on the container.
container.SetPermissions(blobPermissions);

// Get the shared access signature to share with users.
string sasToken =
   container.GetSharedAccessSignature(new SharedAccessBlobPolicy(), "mypolicy");

공유 액세스 서명을 받은 클라이언트는 코드에서 이 서명을 사용하여 StorageCredentials 형식의 개체를 생성할 수 있습니다. 그런 다음 아래 예에서와 같이 리소스 작업을 수행하기 위해 이 자격 증명을 사용하여 CloudStorageAccount 또는 CloudBlobClient 개체를 생성할 수 있습니다.

Uri blobUri = new Uri("https://myaccount.blob.core.windows.net/mycontainer/myblob.txt");
            
// Create credentials with the SAS token. The SAS token was created in previous example.
StorageCredentials credentials = new StorageCredentials(sasToken);

// Create a new blob.
CloudBlockBlob blob = new CloudBlockBlob(blobUri, credentials);

// Upload the blob. 
// If the blob does not yet exist, it will be created. 
// If the blob does exist, its existing content will be overwritten.
using (var fileStream = System.IO.File.OpenRead(@"c:\Test\myblob.txt"))
{
    blob.UploadFromStream(fileStream);
}

참고 항목

참조

BlobContainerPermissions
SharedAccessPolicies
SharedAccessPolicy
Microsoft.WindowsAzure.StorageClient.CloudBlob.GetSharedAccessSignature(Microsoft.WindowsAzure.StorageClient.SharedAccessPolicy)
Microsoft.WindowsAzure.StorageClient.CloudBlobContainer.GetSharedAccessSignature(Microsoft.WindowsAzure.StorageClient.SharedAccessPolicy)
StorageCredentialsSharedAccessSignature

개념

공유 액세스 서명으로 액세스 위임(REST API)

기타 리소스

테이블 SAS(공유 액세스 서명), 큐 SAS 및 Blob SAS에 대한 업데이트 소개

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2014 Microsoft