共用方式為


使用 .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 不支援預存的存取原則。

建立帳戶 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,請參閱下列資源。

用戶端程式庫資源

另請參閱