azure-functions - Azure Function - 保护对存储帐户的访问
问题描述
在我的 Azure 函数中,我IBinder
用于将文件写入 blob 存储。我有AzureWebJobsStorage
包含帐户名和密钥的连接字符串。我计划将此功能更改为使用托管标识并使用它来访问存储帐户。但似乎 Azure 使用此连接字符串来存储一些 Function 数据,我无法更改或删除它。那么即使我仍然必须保留这个连接字符串,将托管标识分配给这个函数有什么意义吗?
public async Task<IActionResult> ReceiveEmail([HttpTrigger(AuthorizationLevel.Function, "post")]
HttpRequestMessage req,
IBinder binder,
[ServiceBus("%responseQueueName%", Connection = "SbConnString")] ICollector<Message> outMessages)
{
...
using (var outputStream = await binder.BindAsync<Stream>(new BlobAttribute(emailFileLocation, FileAccess.Write)))
{
await inputStream.CopyToAsync(outputStream);
}
解决方案
更新:
using (var outputStream = await binder.BindAsync<Stream>(new BlobAttribute("test/20201023.txt", FileAccess.Write) { Connection="str"}))
{
await req.Body.CopyToAsync(outputStream);
}
return new OkObjectResult("This is a test.");
str 需要在环境变量中设置。
在本地,您需要在Values
local.settings.json 部分进行设置:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"str": "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net"
}
}
在 azure 上,需要在配置设置中进行设置。
原答案:
是的,AzureWebJobsStorage
是 azure 函数的内置所需值。它用于一些触发器运行。将函数应用部署到 Azure 时,它还用于存储函数应用的数据。
您必须保留此值,否则函数应用程序将损坏。(您需要此值来存储函数应用程序文件、日志和许多其他内容。)
那么即使我仍然必须保留这个连接字符串,将托管标识分配给这个函数有什么意义吗?
使用托管身份仍然有意义。因为要处理的存储和存储Function日志和文件的存储不一定每次都一样。
当我们要处理存储时,我们总是需要告诉 Azure 我们可以访问某个资源。该函数一般通过基本验证,即提供连接字符串。此方法不安全,因为连接字符串将在代码或配置中公开。微星是个好办法。在不使用基本身份验证时,我们可以使用 MSI 来避免在代码或配置中显式存储连接字符串以确保安全。
AzureWebJobsStorage 是设计期间的内置值,必须提供。这是函数应用程序所必需的。AzureWebJobsStorage 与您使用 MSI 无关。一般情况下,我们可能不会访问同一个存储。MSI 允许我们通过服务主体和 RBAC 角色获得对应存储的各种权限。
推荐阅读
- mongodb - 尝试从深度嵌套的集合中投影单个文档
- api - 如何向 Twitter 发出请求以授权并获取 follower_count
- java - 用户注册后,我应该如何处理验证令牌?
- python - 在模板中呈现表单时出现 ValueError
- python-3.x - CSV 文件中的污染。值为千的列中的逗号
- r - R studio,按特定品牌计算,总数和百分比
- python - 列表理解返回:TypeError:字符串索引必须是整数
- php - 如何让 Wordpress 加载我的 html 和 css 代码
- xml - 2 个不同 XML 标记的相同 pojo 对象
- vba - 如何在 CSV 开头删除 NUL 字符串;VBA