儲存的存取原則可在伺服器端對服務層級共用存取簽章 (SAS) 提供一層額外的控制。 定義預存存取原則可用來將共用存取簽章分組,以及對受限於原則的共用存取簽章提供額外的限制。 您可以使用預存存取原則變更 SAS 的開始時間、到期時間或權限,或是在發出 SAS 後將其撤銷。
下列 Azure 儲存體資源支援預存存取原則:
- Blob 容器
- 檔案共用
- 佇列
- 資料表
注意
在容器方面,預存存取原則可與授權給容器本身或其中所含 Blob 的共用存取簽章產生關聯。 同樣的,在檔案共用方面,預存存取原則也會與授權給共用本身或其中所含檔案的共用存取簽章產生關聯。
只有服務 SAS 支援預存存取原則。 帳戶 SAS 或使用者委派 SAS 不支援預存存取原則。
如需預存存取原則的詳細資訊,請參閱建立預存存取原則。
建立儲存的存取原則
用來建立預存存取原則的基礎 REST 作業是設定容器 ACL。 您必須使用連線字串中的帳戶存取金鑰來授權作業,以便透過共用金鑰來建立預存存取原則。 不支援使用 Microsoft Entra 認證授權設定容器 ACL 作業。 如需詳細資訊,請參閱呼叫資料作業的權限。
下列程式碼範例會在容器上建立預存存取原則。 您可以使用存取原則,對於容器上的服務 SAS 或其 Blob 指定條件約束。
若要在容器上使用適用於 Azure 儲存體的第 12 版 .NET 用戶端程式庫來建立預存存取原則,請呼叫下列其中一種方法:
下列範例建立的預存存取原則只有一天的效期,且會授與讀取/寫入權限:
async static Task CreateStoredAccessPolicyAsync(string containerName)
{
string connectionString = "";
// Use the connection string to authorize the operation to create the access policy.
// Azure AD does not support the Set Container ACL operation that creates the policy.
BlobContainerClient containerClient = new BlobContainerClient(connectionString, containerName);
try
{
await containerClient.CreateIfNotExistsAsync();
// Create one or more stored access policies.
List<BlobSignedIdentifier> signedIdentifiers = new List<BlobSignedIdentifier>
{
new BlobSignedIdentifier
{
Id = "mysignedidentifier",
AccessPolicy = new BlobAccessPolicy
{
StartsOn = DateTimeOffset.UtcNow.AddHours(-1),
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
Permissions = "rw"
}
}
};
// Set the container's access policy.
await containerClient.SetAccessPolicyAsync(permissions: signedIdentifiers);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.ErrorCode);
Console.WriteLine(e.Message);
}
finally
{
await containerClient.DeleteAsync();
}
}
另請參閱
資源
如需使用已被取代之 .NET 11.x 版 SDK 的相關程式碼範例,請參閱使用 .NET 11.x 版的程式碼範例。