📜  为 azure blob 生成 sas 令牌 (1)

📅  最后修改于: 2023-12-03 15:06:15.736000             🧑  作者: Mango

为 Azure Blob 生成 SAS 令牌

Azure Blob storage 是一种云存储服务,它提供了高可用性、可扩展性和安全性,以存储和处理海量非结构化和半结构化数据。

SAS(Shared Access Signature)令牌是一种在 Azure Blob storage 中使用的一种低权限访问控制方式。通过使用 SAS,用户可以对 Blob 进行安全的共享和访问控制。本文将介绍如何为 Azure Blob 生成 SAS 令牌。

准备工作

在生成 SAS 令牌之前,您需要完成以下准备工作:

  • 确认您拥有 Azure Blob 存储中的 Blob 的读写权限。
  • 获取 Azure Blob 存储的访问密钥。您可以在 Azure 门户中的“存储帐户访问密钥”部分找到此密钥。
  • 选择 SAS 令牌的生成方式。在 Azure Blob 存储中,有两种方式可用:服务级 SAS 和容器级 SAS。
生成服务级 SAS 令牌

服务级 SAS 令牌适用于单个 Blob。下面是如何为 Blob 生成服务级 SAS 令牌的基本步骤:

var sasBuilder = new BlobSasBuilder()
{
    BlobContainerName = "<container-name>",
    BlobName = "<blob-name>",
    Resource = "b",
    ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
    Protocol = SasProtocol.Https,
};

sasBuilder.SetPermissions(BlobSasPermissions.Read);

var sasToken = sasBuilder.ToSasQueryParameters(GetAccountSasCredentials()).ToString();

上述示例代码使用 BlobSasBuilder 类来生成服务级 SAS 令牌。在这里,BlobName 属性代表要操作的 Blob 名称,BlobContainerName 属性代表存储 Blob 的容器名称。

在设置了访问权限和有效时间之后,可以将 sasBuilder 生成的 SAS 令牌添加到 URI 末尾。以下是如何使用生成的 SAS 令牌访问服务级 SAS:

https://<account-name>.blob.core.windows.net/<container-name>/<blob-name>?<SAS-token>

生成容器级 SAS 令牌

容器级 SAS 令牌适用于特定容器中的所有 Blob。下面是如何为容器生成容器级 SAS 令牌的基本步骤:

var sasBuilder = new BlobSasBuilder()
{
    BlobContainerName = "<container-name>",
    Resource = "c",
    ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
    Protocol = SasProtocol.Https,
};

sasBuilder.SetPermissions(BlobContainerSasPermissions.List);

var sasToken = sasBuilder.ToSasQueryParameters(GetAccountSasCredentials()).ToString();

在上述示例中,BlobContainerName 属性表示要限制访问的 Blob 容器的名称。设置 BlobContainerSasPermissions.List 来授予列出 Blob 的权限。

容器级 SAS 令牌的用法与服务级 SAS 令牌类似。将 SAS 令牌添加到 URI 中,例如:

https://<account-name>.blob.core.windows.net/<container-name>?<SAS-token>

结论

通过 SAS 令牌,您可以实现对 Azure Blob 存储中的 Blob 进行可控的共享和访问控制。 在本文中,我们介绍了如何使用 BlobSasBuilder 类在 Azure Blob 存储中生成服务级和容器级 SAS 令牌。