【问题标题】:Managing the rotation of Azure storage account keys with Azure Function and Key Vault使用 Azure Function 和 Key Vault 管理 Azure 存储帐户密钥的轮换
【发布时间】:2021-01-26 23:48:19
【问题描述】:

在询问了有关 Removing Secrets from Azure Function Config 的问题后,建议将这种 Microsoft 方法用于 managing the rotation of keys for Azure Storage Accounts and the keeping of those keys secret in Azure KeyVault

请注意,我们正在访问 Azure 存储帐户中的表,并且与 Blob 和队列不同的表不支持托管标识访问控制。

该建议附带了一些不适用于我的 Azure 部署模板,因此我决定自己创建资源以检查我对该方法的理解。在尝试遵循建议后,我有一些问题

现状:

  1. 一个名为“OurAzureFunction”的现有函数,当前在函数配置中直接使用密钥配置了存储帐户连接字符串。
  2. 一个名为“ourstorageaccount”的现有存储帐户,其中包含“OurAzureFunction”在其上运行的应用程序数据

我对推荐的理解是它引入了

  1. “keyRotationAzureFunction”,一个带有两个 Httptrigger 的 Azure 函数,一个响应即将过期的机密的事件网格事件,另一个可以调用以按需重新生成密钥。
  2. “keyRotationKeyVault”,由 keyRotationAzureFunction 操作的 Key Vault。
  3. 监听来自“keyRotationKeyVault”的SecretNearExpiry事件的事件网格订阅

我无法理解这种方法。除了整理这个 Stack Overflow 问题而不是三个单独的问题之外,我找不到更好的方法。

  1. keyRotationAzureFunction 是否在“ourstorageaccount”上具有“存储帐户密钥操作员服务角色”,以便它可以重新生成其密钥?
  2. “OurAzureFunction”有什么配置允许它创建到 ourstorageaccount 的连接?它是“keyRotationKeyVault”中的标记秘密吗?
  3. “keyRotationKeyVault”中的secret值是不是只用到了secret相关的标签?​​

【问题讨论】:

  • 那篇文章有点过时了,虽然它受支持,但推荐的方法是使用托管标识,您可以将其与 Azure Functions 一起使用来访问存储。见docs.microsoft.com/samples/azure-samples/…。您不必担心轮换密钥,并且永远不会共享密码或令牌,这比共享访问令牌更容易保护(以及为什么我们不再支持在新的 Key Vault SDK 中管理存储密钥)。这对你更有效吗?
  • 托管标识不适用于存储帐户中的表。这个问题是在我问了一个关于我们当前场景的问题之后提出的,并且推荐了这种方法
  • 问题更新引用了之前的 SO 问题并指出我们正在使用 Azure 表存储

标签: azure-storage azure-keyvault


【解决方案1】:

我不确定为什么 ARM 模板不适合您。您需要成为存储和 Key Vault 的所有者才能创建必要的权限。 回答您的问题:

  1. 是的
  2. 是的,它使用标签与存储信息来连接和重新生成密钥
  3. Value 不适用于连接到存储,但它可能是另一种连接方式。 您可以在此处查看有关标签的更多信息: https://github.com/jlichwa/KeyVault-Rotation-StorageAccountKey-PowerShell

【讨论】:

    【解决方案2】:
    1. 是的,该函数必须作为可以轮换密钥的主体运行,该角色提供。可以将密钥轮换保留为单独的角色,以便您可以提供对机密的精细访问以避免泄漏。

    2. 函数(更确切地说,委托人)只需要“获取”访问用于生成 SAS 令牌的机密(这是一种特殊的机密,返回的值将更改以生成新的 SAS 令牌)授予对存储的访问权限。必须将 Key Vault 配置为管理存储帐户的令牌。请参阅我最近在https://docs.microsoft.com/samples/azure/azure-sdk-for-net/share-link/ 上发布的示例,我希望它可以简化问题。

    3. 密钥的值实际上是为存储帐户生成的 SAS 令牌。这些标签用于确定存储帐户使用哪个机密,以防您的 Key Vault 中有其他机密,或者甚至以这种方式管理多个功能应用程序(您可以识别即将到期的存储帐户密钥的正确机密)。

    【讨论】:

    • 在这种建议的方法中有多个存储帐户和功能,我觉得在提及“功能”和“sa”时任何答案都需要具体。 “1.是的功能......”是“akvrotation”功能而不是“OurAzureFunction”吗? “3. .. 存储帐户的 ..SAS 令牌”是存储帐户“ourstorageaccount”吗?
    猜你喜欢
    • 2019-12-24
    • 2019-07-28
    • 1970-01-01
    • 2020-04-26
    • 2017-03-01
    • 2020-08-22
    • 2021-08-11
    • 2021-03-16
    • 2021-11-28
    相关资源
    最近更新 更多