当前位置: 首页 > 知识库问答 >
问题:

Azure功能-保护对存储帐户的访问

左丘子平
2023-03-14

在我的Azure函数中,我使用IBinder将文件写入blob存储。我在 AzureWebJobsStorage 中有包含帐户名和密钥的连接字符串。我计划将此函数更改为使用托管标识,并使用它来访问存储帐户。但似乎 Azure 使用此连接字符串来存储一些函数数据,我无法更改或删除它。那么,即使我仍然必须保留此连接字符串,将托管标识分配给此函数是否有意义?

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);
        }

共有1个答案

孙宏扬
2023-03-14

更新:

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 需要在环境变量中设置。

在local上,您需要在local.settings.json的< code>Values部分设置它:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "str": "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net"
  }
}
            

在azure上,它需要设置配置设置。

原始答案:

是的,AzureWebJobStorage是azure函数的内置必需值。它用于运行的一些触发器。当您将函数应用部署到azure时,它还用于存储函数应用的数据。

您必须保留此值,否则函数应用程序将损坏。(您需要它来存储函数应用程序文件、日志和许多其他内容。)

那么,即使我仍然必须保留这个连接字符串,将托管身份分配给这个函数还有意义吗?

使用托管身份仍然有意义。因为要处理的存储和存储函数日志和文件的存储不一定每次都相同。

当我们想要处理存储时,我们总是需要告诉Azure我们可以访问某个资源。该函数一般通过基本验证,即提供连接字符串。此方法不安全,因为连接字符串将在代码或配置中公开。微星是个好办法。当不使用基本身份验证时,我们可以使用MSI来避免在代码或配置中显式存储连接字符串,以确保安全性。

AzureWebJobsStorage 是设计过程中的内置值,必须提供。这是函数应用所必需的。AzureWebJobsStorage 与您使用 MSI 无关。在正常情况下,我们可能不会访问同一存储。MSI 允许我们通过服务主体和 RBAC 角色获取对相应存储的各种权限。

 类似资料:
  • 我想要实现什么 通过Azure Function连接到位于防火墙后面的Azure BLOB存储帐户。 迄今为止采取的步骤 Azure Function针对按预期工作的公共存储帐户开发和测试。 在我的Azure Function的Azure资源管理器之后,我找到出站地址(条目),并将它们添加到存储帐户的防火墙中。 问题 在尝试对具有防火墙的存储帐户运行Azure功能时,我收到一个状态:500内部服务

  • 我一直在我的项目中使用基于azure定时器的功能。自从我开始使用该功能以来,我收到了与Azure存储帐户禁止访问相关的错误403。 我尝试在函数的配置中添加AzureWebJobs存储密钥我尝试添加azure存储帐户的允许ip范围的出站ip我尝试检查允许azure托管服务进入存储帐户的选项。 然而,我的函数应用程序中的特定计时器函数仍然存在错误。其他功能运行正常。 尽管如此,如果我允许存储帐户防火

  • 我目前正在与一个客户合作,该客户要求尽可能多地锁定所有Azure资源的访问权限,我对Azure功能使用的存储帐户有问题。 在门户中的防火墙和虚拟网络刀片设置为“所有网络”后,我可以部署到功能应用程序,它运行时不会出现问题。 然而,一旦我通过检查“选定网络”启用访问限制,无论我输入的是什么虚拟网络子网或IP地址,我都无法使通信正常工作 我已经输入了我们基于消费的功能应用程序的出站IP地址,还检查了P

  • 我测试了在新的Azure门户中创建经典存储帐户(manage.windowsazure.com)和“新”存储帐户。将它们设置为类似的,并运行相同的代码来创建和配置队列。但指标仅显示门户中的经典存储帐户(能够在新门户中看到这两个帐户) 我已经像这样设置了ServiceProperties,并且可以在获取服务属性或查看Azure门户时成功地看到保存的这些更改。 当我使用Microsoft Azure

  • 我将遵循下面的microsoft教程,并尝试使用mvn azure functions:deploy命令部署我的azure功能。我的函数app name/artifactid是ci cd demo:https://azure.microsoft.com/en-us/resources/videos/azure-friday-java-in-azure-functions/ 但是,我收到一个错误:

  • 首先,我将引用另外两个对这个问题有部分答案的问题。 删除VM后从Azure中删除磁盘 如何删除Microsoft Azure存储中的租用blob 使用Azure Explorer,我可以删除blob和容器,但当我尝试删除存储帐户时,我出现了以下错误: 删除存储帐户“bitnamiWestusflwdmy”失败。无法删除存储帐户“bitnamiWestusflwdmy”:“存储帐户bitnamiWe

  • 我需要处理一些大数据并计划部署数据砖集群 除了HDFS支持,我还应该使用Data Lake Gen2对抗存储帐户的一个重要功能是什么 启用了分层命名空间的存储帐户v2==Data Lake Gen2。如果是,我可以使用文件系统创建文件共享并像存储帐户的文件系统一样将其装载到VM中吗 对于从Databricks访问数据,这两种方法中哪一种更适合大数据工作负载。我可以看到存储帐户也可以作为DBFS挂载

  • 不会为已删除的Blob调用Azure Function。我指的是样本代码-https://docs.microsoft.com/bs-latn-ba/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=csharp 下面是示例代码- 预期行为 从容器中删除Blob时,应触发(调用)Azure Functions Bl