使用 .NET 建立帳戶 SAS
共用存取簽章 (SAS) 可讓您對儲存體帳戶中的容器和 Blob 授與有限的存取權。 當您建立 SAS 時,需要指定其條件約束,包括允許用戶端存取的 Azure 儲存體資源、對這些資源的使用權限,以及 SAS 的有效期限。
每個 SAS 都會以金鑰簽署。 您可以使用下列兩種方式之一簽署 SAS:
- 透過使用 Microsoft Entra 認證建立的金鑰。 使用 Microsoft Entra 認證簽署的 SAS 是一種使用者委派 SAS。 凡建立使用者委派 SAS 的用戶端,都必須被指派包含下列動作的 Azure RBAC 角色:Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey。 若要深入了解,請參閱建立使用者委派 SAS。
- 使用儲存體帳戶金鑰。 服務 SAS 和帳戶 SAS 都使用儲存體帳戶金鑰加以簽署。 凡建立服務 SAS 的用戶端,都必須具備帳戶金鑰的直接存取權,或者被指派 Microsoft.Storage/storageAccounts/listkeys/action 使用權限。 若要深入了解,請參閱建立服務 SAS 或建立帳戶 SAS。
注意
使用者委派 SAS 可以為使用儲存體帳戶金鑰簽署的 SAS 提供絕佳的安全性。 Microsoft 建議盡可能採用使用者委派 SAS。 如需詳細資訊,請參閱使用共用存取簽章 (SAS) 授與資料的有限存取權。
本文說明如何透過適用於 .NET 的 Azure 儲存體用戶端程式庫,使用儲存體帳戶金鑰建立帳戶 SAS。
關於帳戶 SAS
帳戶 SAS 是在儲存體帳戶的層級建立。 透過建立帳戶 SAS,您可以:
- 將存取權委派給目前無法與服務特定 SAS 搭配使用的服務層級作業,例如取得 Blob 服務屬性、設定 Blob 服務屬性,以及取得 Blob 服務統計資料。
- 一次委派對儲存體帳戶中多個服務的存取權。 例如,您可以使用帳戶 SAS 委派存取權,以存取 Azure Blob 儲存體和 Azure 檔案儲存體中的資源。
帳戶 SAS 不支援預存的存取原則。
建立帳戶 SAS
帳戶 SAS 會使用帳戶存取金鑰加以簽署。 您可以使用 StorageSharedKeyCredential 類別,建立用來簽署 SAS 的認證。
下列程式碼範例展示如何建立新的 AccountSasBuilder 物件,並呼叫 ToSasQueryParameters 方法來取得帳戶 SAS 權杖字串。
public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
// Create a SAS token that's valid for one day
AccountSasBuilder sasBuilder = new AccountSasBuilder()
{
Services = AccountSasServices.Blobs | AccountSasServices.Queues,
ResourceTypes = AccountSasResourceTypes.Service,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
Protocol = SasProtocol.Https
};
sasBuilder.SetPermissions(AccountSasPermissions.Read |
AccountSasPermissions.Write);
// Use the key to get the SAS token
string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();
return sasToken;
}
從用戶端使用帳戶 SAS
若要使用帳戶 SAS 來存取 Blob 服務的服務層級 API,請針對您的儲存體帳戶使用帳戶 SAS 和 Blob 儲存體端點,來建立 BlobServiceClient 物件。
string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
new(accountName, accountKey);
// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
new Uri($"{blobServiceURI}?{sasToken}"));
資源
若要深入了解如何使用適用於 .NET 的 Azure Blob 儲存體用戶端程式庫建立帳戶 SAS,請參閱下列資源。
用戶端程式庫資源
另請參閱
- 使用共用存取簽章 (SAS) 對 Azure 儲存體資源授與有限存取權
- 建立帳戶 SAS
- 如需使用已淘汰 .NET 11.x 版 SDK 的相關程式碼範例,請參閱使用 .NET 11.x 版的程式碼範例。