.NET
本文介绍如何使用适用于 .NET 的 Azure Blob 存储客户端库连接到 Azure Blob 存储。 连接后,使用开发人员指南 来了解如何针对 Blob 存储服务的容器、blob 和功能运行代码。
若要从完整示例开始,请参阅快速入门:适用于 .NET 的 Azure Blob 存储客户端库 。
API 参考 | 库源代码 | 包 (NuGet) | 示例 | 提供反馈
本部分逐步指导如何准备一个项目,使其与适用于 .NET 的 Azure Blob 存储客户端库配合使用。
从项目目录中,使用 dotnet add package
命令安装 Azure Blob 存储和 Azure 标识客户端库的包。 与 Azure 服务的无密码连接需要 Azure.Identity 包。
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
将这些 using
指令添加到代码文件的顶部:
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
Blob 客户端库信息:
若要将应用连接到 Blob 存储,请创建 BlobServiceClient 类的实例。 此对象是在存储帐户级别与数据资源交互的起点。 可以将其用于对存储账户及其容器执行操作。 还可以使用服务客户端创建容器客户端或 blob 客户端,具体取决于需要使用的资源。
要详细了解如何创建和管理客户端对象,请参阅 创建和管理与数据资源交互的客户端对象 。
你可以使用 Microsoft Entra 授权令牌、帐户访问密钥或共享访问签名 (SAS) 来为 BlobServiceClient
对象授权。 为了获得最佳安全性,Microsoft 建议使用 Microsoft Entra ID 和托管标识来授权针对 blob 数据的请求。 有关详细信息,请参阅使用 Microsoft Entra ID 授予对 blob 的访问权限 。
若要通过 Microsoft Entra ID 授权,需要使用安全主体。 你需要的安全主体的类型取决于你的应用在哪里运行。 使用此表作为指南。
展开表
使用 DefaultAzureCredential 授权访问
要授予访问权限并连接到 Blob 存储,一种简单且安全的方法是通过创建 DefaultAzureCredential 实例来获取 OAuth 令牌。 然后就可以使用该凭据创建 BlobServiceClient 对象。
以下示例创建了使用 DefaultAzureCredential
授权的 BlobServiceClient
对象:
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
如果你准确地知道将用于对用户进行身份验证的凭据类型,可以使用适用于 .NET 的 Azure 标识客户端库 中的其他类获取 OAuth 令牌。 这些类派生自 TokenCredential 类。
还可以在 .NET 应用中注册客户端以进行依赖项注入。 有关详细信息,请参阅用于 .NET 的 Azure SDK 的依赖项注入 。
使用 Blob 服务终结点和 SAS 令牌创建 Uri 。 然后,使用该 Uri 创建 BlobServiceClient 。
public static void GetBlobServiceClientSAS(ref BlobServiceClient blobServiceClient,
string accountName, string sasToken)
{
string blobUri = "https://" + accountName + ".blob.core.windows.net";
blobServiceClient = new BlobServiceClient
(new Uri($"{blobUri}?{sasToken}"), null);
}
要详细了解如何生成和管理 SAS 令牌,请参阅以下文章:
备注
对于使用共享访问签名 (SAS) 的场景,Microsoft 建议使用用户委派 SAS。 用户委派 SAS 通过 Microsoft Entra 凭据(而不是帐户密钥)进行保护。
使用存储帐户名称和帐户密钥创建 StorageSharedKeyCredential 。 然后使用该对象初始化 BlobServiceClient 。
public static void GetBlobServiceClient(ref BlobServiceClient blobServiceClient,
string accountName, string accountKey)
{
Azure.Storage.StorageSharedKeyCredential sharedKeyCredential =
new StorageSharedKeyCredential(accountName, accountKey);
string blobUri = "https://" + accountName + ".blob.core.windows.net";
blobServiceClient = new BlobServiceClient
(new Uri(blobUri), sharedKeyCredential);
}
还可以使用连接字符串创建 BlobServiceClient 。
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
有关如何获取帐户密钥的信息以及正确管理和保护密钥的最佳做法指导,请参阅管理存储帐户访问密钥 。
重要
应谨慎使用帐户访问密钥。 如果帐户访问密钥丢失或意外放置在不安全的位置,服务可能会变得易受攻击。 具有访问密钥的任何人都可以授权针对存储帐户的请求,并且实际上有权访问所有数据。
DefaultAzureCredential
提供增强的安全功能和优势,是管理 Azure 服务授权的推荐方法。
若要详细了解其中的每种授权机制,请参阅授权访问 Azure 存储中的数据 。
在生成应用以使用 Azure Blob 存储中的数据资源时,代码主要与三种资源类型进行交互:存储帐户、容器和 Blob。 若要详细了解这些资源类型、它们彼此之间的关系以及应用如何与资源交互,请参阅了解应用如何与 Blob 存储数据资源交互 。
以下指南介绍了如何使用适用于 .NET 的 Azure 存储客户端库来访问数据和执行特定操作:
展开表