探索預存存取原則
預存存取原則提供伺服器端服務層級共用存取簽章 (SAS) 的額外控制層級。 建立預存存取原則群組 SAS,並為原則所系結的簽章提供更多限制。 您可以使用儲存的存取原則變更簽章的開始時間、到期時間或權限,或是在發出後將簽章撤銷。
下列記憶體資源支援預存取原則:
- Blob 容器
- 檔案共用
- 佇列
- 表
建立儲存的存取原則
SAS 的存取原則包含簽章的開始時間、到期時間和許可權。 您可以在簽章 URI 上指定所有這些參數,而在預存存取原則中不指定任何參數;或者在預存存取原則中指定所有參數,而在 URI 上不指定;也可以採用兩者的某種組合。 不過,您無法在 SAS 令牌和預存存取原則上指定指定的參數。
若要建立或修改預存存取原則,請呼叫 Set ACL 資源的作業(請參閱 設定容器 ACL、 設定佇列 ACL、 設定資料表 ACL 或 設定共用 ACL),以及指定存取原則條款的要求本文。 請求的主體包含您選擇的唯一簽名識別碼,長度最多為 64 個字元,以及存取原則的可選參數,如下所示:
注意
當您在容器、數據表、佇列或共用上建立預存存取原則時,最多可能需要 30 秒才會生效。 在此期間,對與已儲存的存取策略相關聯的 SAS 要求可能會失敗,狀態代碼為 403(禁止),直到存取策略啟用為止。 數據表實體範圍限制(startpk、startrk、endpk和 endrk)無法在預存存取原則中指定。
以下是使用 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 作業。