你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用服务连接器集成 Azure Blob 存储

本页显示了使用服务连接器时支持的 Azure Blob 存储的身份验证类型、客户端类型和示例代码。 此页面还显示了你在创建服务连接时获得的默认环境变量名称和值(或 Spring Boot 配置)。

受支持的计算服务

服务连接器可用于将以下计算服务连接到 Azure Blob 存储:

  • Azure 应用程序服务
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes 服务 (AKS)
  • Azure Spring Apps

受支持的身份验证类型和客户端类型

下表显示了使用服务连接器将计算服务连接到 Azure Blob 存储时受支持的身份验证方法和客户端的组合。 “是”表示支持该组合,“否”表示不支持该组合。

客户端类型 系统分配的托管标识 用户分配的托管标识 机密/连接字符串 服务主体
.NET
Java
Java - Spring Boot
Node.js
Python
Go

此表明确指出支持客户端类型和身份验证方法的所有组合,但 Java - Spring Boot 客户端类型除外,它们仅支持机密/连接字符串方法。 所有其他客户端类型都可通过服务连接器使用任何身份验证方法连接到 Azure Blob 存储。

默认环境变量名称或应用程序属性和示例代码

根据连接的身份验证类型和客户端类型,参考下表中的连接详细信息和示例代码,将计算服务连接到 Azure Blob 存储。 有关详细信息,请参阅服务连接器环境变量命名约定

系统分配的托管标识

SpringBoot 客户端

使用系统分配的托管标识进行身份验证仅适用于 Spring Cloud Azure 版本 4.0 或更高版本。

默认环境变量名称 说明 示例值
spring.cloud.azure.storage.blob.credential.managed-identity-enabled 是否要启用托管标识 True
spring.cloud.azure.storage.blob.account-name 存储帐户的名称 storage-account-name
spring.cloud.azure.storage.blob.endpoint Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/

其他客户端

默认环境变量名称 说明 示例值
AZURE_STORAGEBLOB_RESOURCEENDPOINT Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/

代码示例

请参考以下步骤和代码,使用系统分配的托管标识连接到 Azure Blob 存储。

可以使用 azure-identity 通过托管标识或服务主体进行身份验证。 从服务连接器添加的环境变量中获取 Azure Blob 存储终结点 URL。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。

安装依赖项

dotnet add package Azure.Identity

下面是使用托管标识或服务主体连接到 Blob 存储的示例代码。

using Azure.Identity;
using Azure.Storage.Blobs;

// get Blob endpoint
var blobEndpoint = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_RESOURCEENDPOINT");

// Uncomment the following lines corresponding to the authentication type you want to use.
// system-assigned managed identity
// var credential = new DefaultAzureCredential();

// user-assigned managed identity
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTID");
//     });

// service principal 
// var tenantId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var blobServiceClient = new BlobServiceClient(
        new Uri(blobEndpoint),
        credential);

用户分配的托管标识

SpringBoot 客户端

使用用户分配的托管标识进行身份验证仅适用于 Spring Cloud Azure 版本 4.0 或更高版本。

默认环境变量名称 说明 示例值
spring.cloud.azure.storage.blob.credential.managed-identity-enabled 是否要启用托管标识 True
spring.cloud.azure.storage.blob.account-name 存储帐户的名称 storage-account-name
spring.cloud.azure.storage.blob.endpoint Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/
spring.cloud.azure.storage.blob.credential.client-id 用户分配的托管标识的客户端 ID 00001111-aaaa-2222-bbbb-3333cccc4444

其他客户端

默认环境变量名称 说明 示例值
AZURE_STORAGEBLOB_RESOURCEENDPOINT Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/
AZURE_STORAGEBLOB_CLIENTID 客户端 ID <client-ID>

代码示例

请参考以下步骤和代码,使用用户分配的托管标识连接到 Azure Blob 存储。

可以使用 azure-identity 通过托管标识或服务主体进行身份验证。 从服务连接器添加的环境变量中获取 Azure Blob 存储终结点 URL。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。

安装依赖项

dotnet add package Azure.Identity

下面是使用托管标识或服务主体连接到 Blob 存储的示例代码。

using Azure.Identity;
using Azure.Storage.Blobs;

// get Blob endpoint
var blobEndpoint = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_RESOURCEENDPOINT");

// Uncomment the following lines corresponding to the authentication type you want to use.
// system-assigned managed identity
// var credential = new DefaultAzureCredential();

// user-assigned managed identity
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTID");
//     });

// service principal 
// var tenantId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var blobServiceClient = new BlobServiceClient(
        new Uri(blobEndpoint),
        credential);

连接字符串

警告

Microsoft 建议使用最安全的可用身份验证流。 本过程中介绍的身份验证流程需要非常高的信任度,并携带其他流中不存在的风险。 请仅在无法使用其他更安全的流(例如托管标识)时才使用此流。

SpringBoot 客户端

应用程序属性 说明 示例值
azure.storage.account-name Blob 存储帐户名称 <storage-account-name>
azure.storage.account-key Blob 存储帐户密钥 <account-key>
azure.storage.blob-endpoint Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/
spring.cloud.azure.storage.blob.account-name Spring Cloud Azure 4.0 或更高版本的 Blob 存储帐户名称 <storage-account-name>
spring.cloud.azure.storage.blob.account-key Spring Cloud Azure 4.0 或更高版本的 Blob 存储帐户密钥 <account-key>
spring.cloud.azure.storage.blob.endpoint Spring Cloud Azure 4.0 或更高版本的 Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/

其他客户端

默认环境变量名称 说明 示例值
AZURE_STORAGEBLOB_CONNECTIONSTRING Blob 存储连接字符串 DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account-key>;EndpointSuffix=core.windows.net

代码示例

请参考以下步骤和代码,使用连接字符串连接到 Azure Blob 存储。

从服务连接器添加的环境变量中获取 Azure Blob 存储连接字符串。

安装依赖项

dotnet add package Azure.Storage.Blob
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System; 

// get Blob connection string
var connectionString = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CONNECTIONSTRING");

// Create a BlobServiceClient object 
var blobServiceClient = new BlobServiceClient(connectionString);

服务主体

SpringBoot 客户端

使用服务主体进行身份验证仅适用于 Spring Cloud Azure 版本 4.0 或更高版本。

默认环境变量名称 说明 示例值
spring.cloud.azure.storage.blob.account-name 存储帐户的名称 storage-account-name
spring.cloud.azure.storage.blob.endpoint Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/
spring.cloud.azure.storage.blob.credential.client-id 服务主体的客户端 ID 00001111-aaaa-2222-bbbb-3333cccc4444
spring.cloud.azure.storage.blob.credential.client-secret 用于执行服务主体身份验证的客户端密码 Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2

其他客户端

默认环境变量名称 说明 示例值
AZURE_STORAGEBLOB_RESOURCEENDPOINT Blob 存储终结点 https://<storage-account-name>.blob.core.windows.net/
AZURE_STORAGEBLOB_CLIENTID 客户端 ID <client-ID>
AZURE_STORAGEBLOB_CLIENTSECRET 客户端密码 <client-secret>
AZURE_STORAGEBLOB_TENANTID 租户 ID <tenant-ID>

代码示例

请参考以下步骤和代码,使用服务主体连接到 Azure Blob 存储。

可以使用 azure-identity 通过托管标识或服务主体进行身份验证。 从服务连接器添加的环境变量中获取 Azure Blob 存储终结点 URL。 使用下面的代码时,请对要使用的身份验证类型的代码片段的一部分取消评论。

安装依赖项

dotnet add package Azure.Identity

下面是使用托管标识或服务主体连接到 Blob 存储的示例代码。

using Azure.Identity;
using Azure.Storage.Blobs;

// get Blob endpoint
var blobEndpoint = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_RESOURCEENDPOINT");

// Uncomment the following lines corresponding to the authentication type you want to use.
// system-assigned managed identity
// var credential = new DefaultAzureCredential();

// user-assigned managed identity
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTID");
//     });

// service principal 
// var tenantId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_STORAGEBLOB_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var blobServiceClient = new BlobServiceClient(
        new Uri(blobEndpoint),
        credential);

后续步骤

参考教程来详细了解服务连接器。