本頁是否能提供幫助?
您對此內容的意見反應十分重要。 請告訴我們您的想法。
其他意見反應?
剩餘 1500 個字元
匯出 (0) 列印
全部展開

設定容器 ACL

更新日期: 2015年4月

Set Container ACL 作業可設定指定容器的權限。這些權限指出是否可以公開存取容器中的 Blob。

從 2009-09-19 版開始,容器權限提供下列管理容器存取的選項:

  • 完整公用讀取權限:可以透過匿名要求讀取容器和 Blob 資料。用戶端透過匿名要求列舉容器內的 Blob,但是無法列舉儲存體帳戶內的容器。

  • 僅對 Blob 具有公用讀取權限:可以透過匿名要求讀取此容器中的 Blob 資料,但無法讀取容器資料。用戶端不能透過匿名要求列舉容器內的 Blob。

  • 無公用讀取權限:只有帳戶擁有者可以讀取容器和 Blob 資料。

Set Container ACL 也可設定儲存的存取原則,以搭配共用存取簽章使用。如需詳細資訊,請參閱Specifying a Container-Level Access Policy

容器的所有公開存取皆為匿名,即便是透過共用存取簽章存取亦然。

Set Container ACL 要求的建構如下。建議使用 HTTPS。請以您的儲存體帳戶名稱取代 myaccount

 

方法 要求 URI HTTP 版本

PUT

https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl

HTTP/1.1

對模擬儲存體服務提出要求時,請將模擬器主機名稱和 Blob 服務通訊埠指定為 127.0.0.1:10000,後面接著模擬儲存體帳戶名稱:

 

方法 要求 URI HTTP 版本

PUT

http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl

HTTP/1.1

如需詳細資訊,請參閱Using the Azure Storage Emulator for Development and Testing

您可以在要求的 URI 中指定下列其他參數。

 

參數 說明

timeout

選擇性。timeout 參數以秒為單位。如需詳細資訊,請參閱設定 Blob 服務作業的逾時值

下表描述必要的和選用的要求標頭。

 

要求標頭 說明

Authorization

必要項。指定驗證配置、帳戶名稱及簽章。如需詳細資訊,請參閱Azure 儲存體服務的驗證

Datex-ms-date

必要項。指定要求的國際標準時間 (UTC)。如需詳細資訊,請參閱Azure 儲存體服務的驗證

x-ms-version

選擇性。指定用於這個要求的作業版本。如需詳細資訊,請參閱為 Windows Azure 中的 Blob、佇列和表格服務進行版本設定

x-ms-blob-public-access

選擇性。指定是否可以公開存取容器中的資料,以及存取層級。可能的值包括:

  • container:指定容器和 Blob 資料的完整公開讀取權限。用戶端透過匿名要求列舉容器內的 Blob,但是無法列舉儲存體帳戶內的容器。

  • blob:指定 Blob 的公開讀取權限。您可以透過匿名要求讀取此容器中的 Blob 資料,但無法讀取容器資料。用戶端不能透過匿名要求列舉容器內的 Blob。

如果要求中不包含此標頭,則容器資料為帳戶擁有者的私人資料。

請注意,不允許針對 Azure Premium Storage 帳戶中的容器設定公開存取權。

x-ms-lease-id: <ID>

選擇性,2012-02-12 版和更新版本。如果指定,只有在容器的租用狀態為作用中且符合此識別碼時,Set Container ACL 才會成功。如果沒有作用中的租用或識別碼不相符,就會傳回 412 (先決條件失敗)。

x-ms-client-request-id

選擇性。提供由用戶端產生的不透明值 (具有 1 KB 的字元限制),當儲存體分析記錄為啟用狀態時,此值會記錄在分析記錄檔中。如果是和伺服器所接收的要求相關的用戶端活動,則強烈建議您使用此標頭。如需詳細資訊,請參閱關於儲存體分析記錄Azure 記錄:使用記錄檔追蹤儲存體需求

唯有在符合指定條件的情況下,此作業也可支援使用條件式標頭以執行作業。如需詳細資訊,請參閱指定 Blob 服務作業的條件式標頭

若要指定儲存的存取原則,請在要求主體中,提供 Set Container ACL 作業的唯一識別碼和存取原則。

SignedIdentifier 項目包含唯一識別碼 (如 Id 項目中所指定),以及存取原則的詳細資料 (如 AccessPolicy 項目中所指定)。唯一識別碼的長度上限為 64 個字元。

StartExpiry 欄位必須以 UTC 時間表示,而且必須遵守有效的 ISO 8061 格式。支援的 ISO 8061 格式包括:

  • YYYY-MM-DD

  • YYYY-MM-DDThh:mmTZD

  • YYYY-MM-DDThh:mm:ssTZD

  • YYYY-MM-DDThh:mm:ss.fffffffTZD

就這些格式的日期部分而言,YYYY 以四位數表示年份,MM 以兩位數表示月份,而 DD 以兩位數表示日期。就時間部分而言,hh 以 24 小時標記法表示小時,mm 以兩位數表示分鐘,ss 以兩位數表示秒,而 fffffff 以七位數表示毫秒。時間指示項 T 可分隔字串的日期部分和時間部分,而時區指示項 TZD 可指定時區。

<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
  <SignedIdentifier> 
    <Id>unique-64-character-value</Id>
    <AccessPolicy>
      <Start>start-time</Start>
      <Expiry>expiry-time</Expiry>
      <Permission>abbreviated-permission-list</Permission>
    </AccessPolicy>
  </SignedIdentifier>
</SignedIdentifiers>

Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1

Request Headers:
x-ms-version: 2011-08-18
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT
x-ms-blob-public-access: container
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
  <SignedIdentifier> 
    <Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>
    <AccessPolicy>
      <Start>2009-09-28T08:49:37.0000000Z</Start>
      <Expiry>2009-09-29T08:49:37.0000000Z</Expiry>
      <Permission>rwd</Permission>
    </AccessPolicy>
  </SignedIdentifier>
</SignedIdentifiers>

回應包括 HTTP 狀態碼和一組回應標頭。

成功的作業會傳回狀態碼 200 (確定)。

如需狀態碼的資訊,請參閱<狀態和錯誤碼>。

這項作業的回應包括下列標頭。回應也可能包括其他標準 HTTP 標頭。所有標準標頭都符合 HTTP/1.1 通訊協定規格

 

回應標頭 說明

ETag

容器的 ETag。如果要求版本為 2011-08-18 或更新版本,ETag 值會加上引號。

Last-Modified

傳回上次修改容器的日期和時間。日期格式會依照 RFC 1123。如需詳細資訊,請參閱<標頭中的日期/時間值表示方式>。

修改容器或其屬性或中繼資料的任何作業,都會更新上次修改時間,包括設定容器的權限。對 Blob 執行作業不會影響上次修改容器的時間。

x-ms-request-id

此標頭可唯一識別提出的要求,而且可用來進行要求的疑難排解。如需詳細資訊,請參閱<對應用程式開發介面作業進行疑難排解>。

x-ms-version

指出用於執行要求的 Blob 服務版本。對 2009-09-19 及更新版本提出要求會傳回此標頭。

Date

服務產生的 UTC 日期/時間值,可指出啟動回應的時間。

Response Status:
HTTP/1.1 200 OK

Response Headers:
Transfer-Encoding: chunked
Date: Sun, 25 Sep 2011 22:42:55 GMT
ETag: "0x8CB171613397EAB"
Last-Modified: Sun, 25 Sep 2011 22:42:55 GMT
x-ms-version: 2011-08-18
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

只有帳戶擁有者可呼叫這項作業。

除非帳戶擁有者已透過設定容器的權限指定可公開存取容器資源,或已核發容器資源的共用存取簽章,否則只有帳戶擁有者可以存取特定容器中的資源。

當您設定容器的權限時,會取代現有的權限。若要更新容器的權限,請呼叫 取得容器 ACL 以擷取與容器相關聯的所有存取原則,然後修改您要變更的存取原則,再使用這組完整的資料來呼叫 Set Container ACL 以執行更新。

啟用容器資料的匿名公開存取

若要啟用容器資料的匿名公開讀取權限,請呼叫 Set Container ACL,並將 x-ms-blob-public-access 標頭設為 containerblob。若要停用匿名存取,請呼叫 Set Container ACL,但不指定 x-ms-blob-public-access 標頭。

如果您將 x-ms-blob-public-access 設為 blob,用戶端可以匿名方式呼叫下列作業:

如果您將 x-ms-blob-public-access 設為 container,用戶端可以匿名方式呼叫下列作業:

建立容器層級存取原則

儲存的存取原則可以指定其相關聯之共用存取簽章的開始時間、到期時間及權限。根據您要如何控制容器或 Blob 資源的存取權,您可以在儲存的存取原則內指定上述所有參數,也可以從共用存取簽章的 URL 省略這些參數。這樣做可讓您隨時修改相關聯的簽章行為,以及將它撤銷。您也可以在儲存的存取原則中指定一個或多個存取原則參數,然後在 URL 上指定其他參數。最後,您可以在 URL 上指定所有參數。在此情況下,您可以使用儲存的存取原則撤銷簽章,但不修改其行為。如需建立存取原則的詳細資訊,請參閱<Specifying a Container-Level Access Policy>。

共用存取簽章和預存存取原則必須包含驗證簽章所需的所有欄位。如果遺漏任何必要的欄位,要求將會失敗。同樣地,如果同時在共用存取簽章 URL 和預存存取原則中指定某個欄位,則要求會失敗,並顯示狀態碼 400 (不正確的要求)。

您每次可為指定容器設定最多五個不同的存取原則。如果將五個以上的存取原則傳入要求主體,則服務會傳回狀態碼 400 (不正確的要求)。

不論容器資料是否可供匿名讀取權限,都可對容器或 Blob 核發共用存取簽章。共用存取簽章提供更佳的方式,讓您控制資源的存取方式、時機及人員。

note附註
當您在容器上建立儲存的存取原則時,可能需要 30 秒的時間才會生效。在此間隔期間,與儲存的存取原則相關聯的共用存取簽章會失敗,並顯示狀態碼 403 (禁止),直到存取原則變成作用中為止。

顯示:
© 2015 Microsoft