如何在 Azure Function 存储帐户连接字符串中使用 ManagedIdentity

How to use ManagedIdentity in Azure Function storage account connection string

我有一个 Azure Function 正在使用 durable functions:

local.settings.json

"Values": {
  "AzureWebJobsStorage": "UseDevelopmentStorage=true",
  "DurableFunctionsStorageConnectionString": "UseDevelopmentStorage=true"
}

host.json

"extensions": {
        "durableTask": {
            "storageProvider": {
                "connectionStringName": "DurableFunctionsStorageConnectionString"
            }
        }
    }

我不想在 Azure 环境中使用连接字符串和访问密钥,而是想使用托管标识并为其提供访问权限。是否有支持的连接字符串版本可以使用托管标识?

这是 SignalR 连接字符串的类似访问示例:

Endpoint={signalr_service_endpoint};AuthType=aad;Version=1.0;

如果 DefaultAzureCredential 有可能来自 Azure.Identity 就更好了,但我“打开”托管身份就足够了。

P.S。我不是在研究如何在我的代码中连接到存储帐户,而是在研究如何使 Azure Functions 基础结构为它需要的帐户执行此操作。

我来自 Azure SignalR 服务团队。

不建议在配置 AAD 身份验证时使用 ConnectionString

甚至我们也在更新我们的文档以推荐我们的客户在代码中配置 AAD Auth。

我不确定你使用的是 Azure 存储的什么功能。对于Blobs,您可以通过以下代码配置一个BlobClient

var client = new BlobClient(new Uri("<your endpoint>"), new DefaultAzureCredential(), new BlobClientOptions());

BlobClient Class

要了解有关其他派生的更多信息 TokenCredential class,请参阅 TokenCredential class

感谢@Thomas 的有用评论,我发现:

  1. 可以通过提供这个变量为普通存储帐户做:

    AzureWebJobsStorage__accountName:该值只是存储帐户的名称。文档 here.

  2. Durable 函数尚不可用。看到这个 issue.