匯出 (0) 列印
全部展開

驗證對 Windows Azure 儲存體帳戶的存取權限

更新日期: 2014年2月

除非是對公用容器或其 Blob 的匿名要求,否則您對 Windows Azure 儲存體服務的每個要求都必須經過驗證。Windows Azure Managed 程式庫可簡化此驗證程序。您可透過兩種方式驗證對儲存體服務的要求:

  • 針對 Blob、佇列和表格服務中的資源使用 Shared Key 或 Shared Key Lite 驗證配置。這些認證配置採用透過 SHA-256 演算法計算並且編碼為 Base64 的 HMAC。HMAC 是從一組與要求相關的欄位所建構。如需通訊協定的詳細資料,請參閱<Windows Azure 儲存體服務的驗證>。

  • 建立共用存取簽章。共用存取簽章會透過安全的方式合併 URI 上進行驗證所需的認證,以及所要存取資源的位址。由於共用存取簽章包含在 URI 上進行驗證所需的全部資料,因此可以用來授與 Blob、佇列和表格服務中資源的控制存取,並且除了程式碼之外,也可另行散佈。如需通訊協定的詳細資料,請參閱<以共用存取簽章委派存取 (REST 應用程式開發介面)>。

如上所述,您可以將容器指定為公用,在這種情況下,容器上及其內部任何 Blob 的所有讀取作業都可供匿名存取。任何匿名要求都不需要經過驗證,因此使用者可以執行作業,而不需提供帳戶認證。如需有關管理容器和 Blob 存取的詳細資料,請參閱<限制對容器和 Blob 的存取>。

Windows Azure .NET Managed 程式庫提供了幾個金鑰類別,可用於驗證對儲存體帳戶的存取權限:

  • CloudStorageAccount 類別代表您的 Windows Azure 儲存體帳戶。

  • StorageCredentials 類別會儲存兩種不同類型的認證,可用來驗證要求:一種是儲存體帳戶名稱和存取金鑰,可用於透過 Shared Key 和 Shared Key Lite 驗證配置驗證要求,另一種是共用存取簽章。

  • CloudBlobClientCloudQueueClientCloudTableClient 類別分別提供 Blob 服務、佇列服務和表格服務中資源階層的進入點。換句話說,若要使用容器和 Blob,您將會建立 CloudBlobClient 物件;若要使用佇列和訊息,您會建立 CloudQueueClient;若要使用表格和實體,您會建立 CloudTableClient。用戶端物件可以藉由提供服務端點和一組認證的方式直接建立,也可以藉由呼叫 CreateCloudBlobClientCreateCloudQueueClientCreateCloudTableClient 方法的其中一個,從 CloudStorageAccount 物件建立。這些方法可讓您從透過單獨一組認證定義的 CloudStorageAccount 物件傳回一個或多個服務的用戶端物件。

    請注意,若要匿名存取容器或 Blob,就不需要建立 CloudStorageAccount 或用戶端物件。匿名存取不需要驗證,因此您可以直接存取資源。只有某些讀取作業 (使用 HTTP GET) 支援匿名存取。

您可以使用 CloudStorageAccount.DevelopmentStorageAccount 屬性傳回 CloudStorageAccount 物件,該物件會參考已知的儲存體模擬器帳戶。

當您撰寫只會使用儲存體模擬器的程式碼時,此屬性非常實用,但是,如果您完成對儲存體模擬器的測試時,想要將程式碼指向 Windows Azure 儲存體帳戶,建議您使用連接字串。您可以快速修改連接字串以便在儲存體帳戶之間切換,而不需修改程式碼;如需詳細資訊,請參閱<設定 Windows Azure 連接字串>。

從程式碼存取 Windows Azure 儲存體帳戶最簡單的方式,是建立新的 CloudStorageAccount 物件,方法是以 StorageCredentials 物件的形式提供您的儲存體帳戶名稱和存取金鑰,並且指出要使用 HTTP 或 HTTPS 存取帳戶。透過此 CloudStorageAccount 或它的其中一個衍生物件所做的要求,將會使用這些認證進行驗證。

CloudStorageAccount 物件會使用儲存體服務的預設端點。預設服務端點是 myaccount.blob.core.windows.netmyaccount.queue.core.windows.netmyaccount.table.core.windows.net,其中 myaccount 是您的儲存體帳戶名稱。

下列程式碼範例說明如何使用您的帳戶名稱和存取金鑰的參考建立新的 CloudStorageAccount 物件。然後它會建立新的 CloudBlobClient 物件,接著是新容器:


// Account name and key.  Modify for your account.
string accountName = "myaccount";
string accountKey = "SzlFqgzqhfdk594cFoveYqCyvl8v9EESAnOLcTCeBIo31p46rJJRZx/5vU/oY3ZsK/VdFNaVpm6G8YSD2K48Nw==";

//Get a reference to the storage account, with authentication credentials
StorageCredentials credentials = new StorageCredentials(accountName, accountKey);
CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);

//Create a new client object.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve a reference to a container. 
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");

// Create the container if it does not already exist.
container.CreateIfNotExists();

// Output container URI to debug window.
System.Diagnostics.Debug.WriteLine(container.Uri);

您也可以透過明確指定服務端點的方式存取儲存體帳戶。這個方法在下面兩種情況下很實用:

  • 當您透過共用存取簽章存取儲存體帳戶時。

  • 您已設定儲存體帳戶的自訂網域,而且想要使用這些自訂端點存取帳戶。請注意,除了自訂端點之外,預設端點也可繼續使用。

共用存取簽章是對其他用戶端提供您儲存體帳戶中資源之控制存取的方式。共用存取簽章中包含所要存取資源的相關資訊、要授與的權限、資源可供使用的時間間隔,以及容器的存取原則 (如果有的話)。用於認證時,這項資訊會以簽署字串 (string-to-sign) 封裝並編碼為 UTF-8,然後會使用 HMAC-SHA256 演算法建構簽章。簽章是構成 Token 的一部分,用戶端可以用它來存取您的資源。例如,用戶端可以使用共用存取簽章建立或刪除您儲存體帳戶中的 Blob,以及他們無法存取的作業 (如果容器僅標示為公用)。如需共用存取簽章的詳細資訊,請參閱<以共用存取簽章委派存取 (REST 應用程式開發介面)>。

另請參閱

Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft