探索儲存的存取原則

已完成

儲存的存取原則可在伺服器端對服務層級共用存取簽章 (SAS) 提供一層額外的控制。 建立預存存取原則群組 SAS,並為原則所系結的簽章提供更多限制。 您可以使用儲存的存取原則變更簽章的開始時間、到期時間或權限,或是在發出後將簽章撤銷。

下列儲存體資源支援儲存的存取原則:

  • Blob 容器
  • 檔案共用
  • 佇列
  • 資料表

建立儲存的存取原則

SAS 的存取原則是由簽章的開始時間、到期時間和權限所組成。 您可以在簽章 URI 中指定所有參數,但不在儲存的存取原則中指定任何參數;在儲存的存取原則中指定所有參數,但不在 URI 中指定任何參數;或指定這兩者的特定組合。 不過,您不可以同時在 SAS 權杖和儲存的存取原則中指定特定參數。

若要建立或修改儲存的存取原則,請使用會指定存取原則條款的要求本文呼叫資源的 Set ACL 作業 (請參閱設定容器 ACL設定佇列 ACL設定資料表 ACL設定共用 ACL)。 要求主體包含您所選擇且長度上限為 64 個字元的唯一簽署識別碼,以及存取原則的選擇性參數,如下所示:

注意

當您針對容器、資料表、佇列或共用建立儲存的存取原則時,可能需要 30 秒的時間才會生效。 在此期間,與儲存的存取原則相關聯的 SAS 要求可能會失敗,並顯示狀態碼 403 (禁止),直到存取原則變成作用中為止。 儲存的存取原則中不得指定資料表實體範圍限制 (startpkstartrkendpkendrk)。

以下是使用 C# .NET 和 Azure CLI 建立儲存的存取原則的範例。

BlobSignedIdentifier identifier = new BlobSignedIdentifier
{
    Id = "stored access policy identifier",
    AccessPolicy = new BlobAccessPolicy
    {
        ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
        Permissions = "rw"
    }
};

blobContainer.SetAccessPolicy(permissions: new BlobSignedIdentifier[] { identifier });
az storage container policy create \
    --name <stored access policy identifier> \
    --container-name <container name> \
    --start <start time UTC datetime> \
    --expiry <expiry time UTC datetime> \
    --permissions <(a)dd, (c)reate, (d)elete, (l)ist, (r)ead, or (w)rite> \
    --account-key <storage account key> \
    --account-name <storage account name> \

修改或撤銷儲存的存取原則

若要修改儲存的存取原則的參數,您可以呼叫個別資源類型的存取控制清單作業,以取代現有的原則。 例如,若現有的原則授與對某項資源的讀取及寫入權限,您便可修改該原則以使日後所有要求都只授與讀取權限。

若要撤銷儲存的存取原則,您可以將其刪除、藉由變更已簽署的識別碼重新命名,或將到期時間變更為過去的值。 變更簽署識別碼會中斷任何現有的簽章與該儲存的存取原則之間的關聯。 將到期時間變更為過去的值會導致所有相關聯的簽章過期。 儲存的存取原則一經刪除或修改,將隨即影響所有與其相關聯的 SAS。

若要移除單一存取原則,請呼叫資源的 Set ACL 作業,並且傳入您要為容器保留的一組簽署識別碼。 若要移除資源的所有存取原則,請使用空的要求主體呼叫 Set ACL 作業。