azure-storage - 使用 Azure Function 和 Key Vault 管理 Azure 存储帐户密钥的轮换
问题描述
在询问了有关从 Azure 功能配置中删除机密的问题后,建议使用此 Microsoft 方法来管理 Azure 存储帐户的密钥轮换并将这些密钥保密在 Azure KeyVault 中
请注意,我们正在访问 Azure 存储帐户中的表,并且与 Blob 和队列不同的表不支持托管标识访问控制。
该建议附带了一些不会为我运行的 Azure 部署模板,因此我决定自己创建资源以检查我对该方法的理解。在尝试遵循建议后,我有一些问题
现有情况:
- 一个名为“OurAzureFunction”的现有函数,该函数当前直接在函数配置中使用密钥配置了存储帐户连接字符串。
- 一个名为“ourstorageaccount”的现有存储帐户,其中包含“OurAzureFunction”操作的应用程序数据
我对建议的理解是它介绍了
- “keyRotationAzureFunction”,一个带有两个 Httptrigger 的 Azure 函数,一个响应即将过期的机密的事件网格事件,另一个可以调用以按需重新生成密钥。
- “keyRotationKeyVault”,由 keyRotationAzureFunction 操作的 Key Vault。
SecretNearExpiry
监听来自“keyRotationKeyVault”的事件的事件网格订阅
我对理解这种方法有疑问。除了整理这个 Stack Overflow 问题中的问题而不是三个单独的问题之外,我找不到更好的方法。
- keyRotationAzureFunction 是否在“ourstorageaccount”上具有“存储帐户密钥操作员服务角色”,以便它可以重新生成其密钥?
- “OurAzureFunction”有什么配置允许它创建到 ourstorageaccount 的连接?它是“keyRotationKeyVault”中的标记秘密吗?
- “keyRotationKeyVault”中的秘密值不只是使用与秘密相关的标签吗?
解决方案
是的,该函数必须作为可以轮换该角色提供的密钥的主体运行。密钥轮换可以作为一个单独的角色保留,以便您可以提供对机密的精细访问以避免泄漏。
该函数(更确切地说,主体)只需要“获取”对用于生成 SAS 令牌的机密的访问权限(这是一种特殊类型的机密,返回的值将更改以生成新的 SAS 令牌)授予对存储的访问权限。Key Vault 必须配置为管理存储帐户的令牌。请参阅我最近在https://docs.microsoft.com/samples/azure/azure-sdk-for-net/share-link/上发布的示例,我希望它可以简化问题。
密钥的值实际上是为存储帐户生成的 SAS 令牌。这些标签用于确定存储帐户使用哪个机密,以防您的 Key Vault 中有其他机密,或者甚至以这种方式管理多个功能应用程序(您可以识别即将到期的存储帐户密钥的正确机密)。
推荐阅读
- java - 有人可以向我解释这个使用stream()的代码的构造吗?
- spring - spring maven 依赖项无法识别,库给出错误
- sql - 每次调用时单个 SELECT
- java - 迷宫回溯水平移动
- css - 尝试通过 scss 用 className 设置 react-select 样式,className 没有显示
- python - 在python中安装点云库(PCL)
- python - 具有虚数指数的 Numpy 精度
- javascript - 从 java 脚本中获取值
- android - 防止 CheckedTextView 在单击时更改检查状态
- python - 在 Python 中,绘制具有相同 x 和 y 轴的不同类别数据的方法是什么?