[Windows Azure]設定Blob Container公開存取權限

  • 1907
  • 0

摘要:[Windows Azure]設定Blob Container公開存取權限

Container在Blob服務中就好像資料夾一樣的概念,它是一個容器,裡面裝著許多的Blob個體。

在Blob儲存服務中,我們可以針對個別的Container設定存取權限,有以下三種:

Full public read access: Container and blob data can be read via anonymous request. Clients can enumerate blobs within the container via anonymous request, but cannot enumerate containers within the storage account.

Public read access for blobs only: Blob data within this container can be read via anonymous request, but container data is not available. Clients cannot enumerate blobs within the container via anonymous request.

No public read access: Container and blob data can be read by the account owner only.

以上為MSDN的定義,我簡單解釋一下:

第一種是完全公開存取權限,你可以匿名存取此Container及其內所有的Blob資料,或是列舉其內所有的Blob。

第二種是Blob層級存取權限,你可以匿名存取其內所有的Blob資料但不包含該Container,也不能列舉其內所有的Blob。

第三種是不公開存取權限,就是甚麼都不能做。

至於詳細有哪些可以做,哪些不能做,可以參考這裡

 

那程式裡要怎麼設定呢?先參考以下程式碼:


var account = CloudStorageAccount.FromConfigurationSetting("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString");
var client = account.CreateCloudBlobClient();

var container = client.GetContainerReference("permission-publicaccess-blob");
container.CreateIfNotExist();

var permissions = new BlobContainerPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
container.SetPermissions(permissions);

重點在第三段程式碼,先實體化BlobContainerPermissions類別出來,接著設定你想要的權限,

最後再利用CloudBlobContainer類別裡的SetPermissions()方法設定,

這是BlobContainerPublicAccessType列舉型別:


    public enum BlobContainerPublicAccessType
    {
        // Summary:
        //     No public access. Only the account owner can read resources in this container.
        Off = 0,
        //
        // Summary:
        //     Container-level public access. Anonymous clients can read container and blob
        //     data.
        Container = 1,
        //
        // Summary:
        //     Blob-level public access. Anonymous clients can read only blob data within
        //     this container.
        Blob = 2,
    }

分別對應三種存取權限。

 

做個小實驗來驗證,我們利用列舉Blob的方法來檢視個別權限下的情況,

之前有建立一個名為"upload-files"的Container,權限設定是完全公開,結果是:

這次建立的Container "permission-publicaccess-blob",結果為:

簡單的存取權限設定,希望對大家有幫助摟。

 

參考:

http://msdn.microsoft.com/zh-tw/library/dd179354.aspx