如何在 Azure 函数存储帐户连接字符串中使用 ManagedIdentity
Posted
技术标签:
【中文标题】如何在 Azure 函数存储帐户连接字符串中使用 ManagedIdentity【英文标题】:How to use ManagedIdentity in Azure Function storage account connection string 【发布时间】:2021-11-01 20:09:21 【问题描述】:我有一个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
中使用就更好了,但我“打开”托管身份就足够了。
附:我不是在研究如何在我的代码中连接到存储帐户,而是如何使 Azure Function 基础架构为它需要的帐户执行此操作。
【问题讨论】:
你看到了吗:docs.microsoft.com/en-us/samples/azure-samples/…? 是的,事实上就在写问题之前:) 这里讨论的是如何连接到函数代码内部的存储。他们确实使用普通的连接字符串来存储 Function 基础设施连接到的存储。他们确实在那里使用DefaultAzureCredential
。我自己花了一段时间才弄清楚。我会更改问题以使其更清楚
它看起来不支持持久功能:docs.microsoft.com/en-us/azure/azure-functions/….
是的,它仍处于预览阶段,不支持持久功能。您可以关注这个未解决的问题以获得 durabe 功能github.com/Azure/azure-functions-durable-extension/issues/1793
我已经根据您的 cmets @Thomas 发布了一个答案,您可以发布自己的答案,如果您愿意,我会接受 :) 非常感谢您的帮助
【参考方案1】:
我来自 Azure SignalR 服务团队。
不建议在配置 AAD Auth 时使用ConnectionString
。
甚至我们也在更新我们的文档以推荐我们的客户在代码中配置 AAD Auth。
我不确定您使用的是什么 Azure 存储功能。对于Blobs
,您可以通过以下代码配置BlobClient
:
var client = new BlobClient(new Uri("<your endpoint>"), new DefaultAzureCredential(), new BlobClientOptions());
BlobClient Class
要了解有关其他派生TokenCredential
类的更多信息,请参阅TokenCredential class
【讨论】:
感谢您的回答。我没有直接使用任何 blob 存储功能,而是将其用作 Azure Function 的一部分。您能否提供更多关于不推荐连接字符串的详细信息,我不太明白?我使用的是我发布的托管身份,它似乎工作正常【参考方案2】:感谢@Thomas 提供的有用的 cmets,我发现:
普通存储账户可以通过提供这个变量来实现:
AzureWebJobsStorage__accountName
:该值就是存储帐户的名称。文档here。
目前还不能使用 Durable 功能。看到这个issue。
【讨论】:
以上是关于如何在 Azure 函数存储帐户连接字符串中使用 ManagedIdentity的主要内容,如果未能解决你的问题,请参考以下文章
Azure 门户中的 Azure 存储帐户连接字符串在哪里?
Python Azure 函数:blobclient.upload_blob 授权失败
是否可以使用托管标识从 C# 控制台代码连接 Azure 文件共享(存储帐户)