【问题标题】:Secure access to Azure Table Storage via Azure Function通过 Azure Function 安全访问 Azure 表存储
【发布时间】:2020-10-10 09:53:48
【问题描述】:

我将数据存储在 Azure 表存储中,并希望保护它,以便只有我的 API(函数应用)可以读取和写入数据。

什么是最佳做法,我该如何做到这一点?我认为将网络规则上的--default-action 设置为存储的Deny,再加上添加--bypass Logging Metrics AzureServices 会关闭访问但启用我的Azure 服务,但这不起作用。

然后,我查看了为函数应用创建托管服务标识 (MSI) 并将 RBAC 添加到存储帐户,但这也不起作用。表存储 Access Azure Table Storage with Azure MSI 似乎不支持 MSI

我是否遗漏或误解了什么?如何保护存储帐户中表中的数据,这甚至可能吗?

【问题讨论】:

    标签: security authentication authorization azure-functions azure-table-storage


    【解决方案1】:

    由于您提供的link,Azure 表存储不支持Azure MSI,它只支持Shared Key (storage account key)Shared access signature (SAS)

    如果您的服务使用 REST API 发出请求,您必须使用 Shared Key authorization 来授权对表服务发出的请求。

    要对使用 REST API 发出的针对表服务的请求的签名字符串进行编码,请使用以下格式:

    StringToSign = VERB + "\n" +
                   Content-MD5 + "\n" +
                   Content-Type + "\n" +  
                   Date + "\n" +  
                   CanonicalizedResource;
    

    您可以使用Shared Key Lite authorization 授权针对任何版本的表服务发出的请求。

    StringToSign = Date + "\n"
                   CanonicalizedResource
    

    更多详情可以参考这个article

    【讨论】:

    • 谢谢@Joey,您如何保护 Azure 中的资源?您是否会将它们放在 VNet 中并将流量限制在 VNet 中的资源上?
    • 您可以将azure函数的出站ip添加到存储Firewalls and virtual networks 。那么您的表存储将只能由您的 azure 函数访问。
    【解决方案2】:

    为了保护 Azure 表存储数据,您可以在网络配置下执行 -

    1. 使用选定的网络而不是公共网络。此配置在存储帐户的“防火墙和虚拟网络”下可用。
    2. 您可以执行的第二步是将数据移动到 Azure Key Vault 或使用存储在 Azure Key Vault 中的加密密钥来加密 Azure 表存储的必填字段。这样您就不会面临 Azure Key Vault 的限制 - https://docs.microsoft.com/en-us/azure/key-vault/general/service-limits#secrets-managed-storage-account-keys-and-vault-transactions

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 2019-10-13
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 2019-05-03
      • 2022-10-21
      相关资源
      最近更新 更多