自动应用程序中使用的资源的密钥轮换

问题描述 投票:0回答:1

我正在开发一个应用程序,该应用程序以功能应用程序为中心,该应用程序与少量资源交互。这些资源都有自己的密钥和连接字符串,它们存储在密钥保管库中。函数应用程序使用托管标识访问密钥保管库的内容。

我希望最大限度地减少未来因必须重新生成这些密钥并将新值放入保管库而造成的管理工作量。对于存储帐户,我知道我可以通过将其设为“密钥保管库管理帐户”来完全自动化,但据我所知,对于 CosmosDB 或 OpenAI 服务之类的东西没有这样的功能。我知道我可以设置另一个功能应用程序来为我执行旋转像这样,但我有点时间线,如果可能的话,我宁愿不处理所有调试。我还有其他选择吗?

azure azure-functions azure-keyvault
1个回答
0
投票
简化 Azure 服务的密钥轮换:托管帐户之外的自动化策略

即使没有对密钥保管库托管身份的本机支持,也可以自动轮换 CosmosDB 或 OpenAI 服务等资源的密钥和连接字符串,因为有一些替代方案可用。

考虑到你的目标是减少未来的管理开销和手动干预,利用旨在简化此流程的 Azure 现有服务和功能将是有益的。

  1. Azure Key Vault 托管帐户

    您已经注意到 Key Vault 用于存储密钥和连接字符串。确实,对于存储帐户,可以通过将它们指定为
      Key Vault 托管帐户
    • 来自动执行密钥轮换。但是,CosmosDB 或 OpenAI 等服务不提供此功能。
    • Cosmos DB
    • :虽然没有直接的 Key Vault 托管帐户功能,但您仍然可以将 Cosmos DB 凭据安全地存储在 Key Vault 中。 这涉及为您的函数应用使用系统分配的托管标识,并授予其对包含 Cosmos DB 连接字符串的 Key Vault 机密的访问权限
    • OpenAI 服务
    • :考虑使用 OpenAI 服务的 Entra ID 身份验证作为密钥的替代方案。 Entra ID 为OpenAI 等服务提供了更安全、更易于管理的身份验证方法。有关使用 OpenAI 服务实施 Entra ID 的详细信息可以在官方文档中找到。
  2. 自动按键轮换功能应用程序

    虽然设置另一个功能应用程序可能并不理想,但它可能是一个实用的解决方案。考虑建立一个用于密钥轮换的专用功能应用程序。此应用程序会定期从您的资源(例如 Cosmos DB 或 OpenAI)获取新密钥、刷新 Key Vault 机密并管理轮换过程。
    • 虽然调试可能是一个漫长的过程,但它保证了可靠的解决方案。在时间紧迫的情况下,从基本实施开始并逐步改进它。
  3. Cosmos DB 的客户管理密钥

    实际上,Azure Cosmos DB 现在支持
      客户管理的密钥 (CMK)
    • 。您可以在现有 Cosmos DB 帐户上启用 CMK,而无需将数据迁移到新帐户。 此功能允许您将密钥存储在 Azure Key Vault 中,并使用这些密钥加密 Cosmos DB 帐户中存储的所有数据 要为 Cosmos DB 设置 CMK,请按照
    • 官方教程
    • 中的步骤操作。
  4. 考虑对 OpenAI 服务使用 Entra ID 身份验证,探索自动化功能应用程序方法,并利用 CMK for Cosmos DB。

参考

https://learn.microsoft.com/en-us/azure/cosmos-db/store-credentials-key-vault

https://azure.microsoft.com/en-us/updates/public-preview-configure-customermanagement-keys-on-existing-cosmos-db-accounts/

© www.soinside.com 2019 - 2024. All rights reserved.