从 Key Vault 检索机密到 AKS 中的 .Net Core 应用 运行,是否需要 CSI 驱动程序?

Retrieve secrets from Key Vault to a .Net Core app running in AKS, is CSI Driver necessary?

我目前正在为 .Net Core 中的一组 API 运行 从使用应用服务转向 Azure Kubernetes 服务。除了 Azure Key Vault 之外,一切都很顺利,所以我希望有人能帮助我。

我需要为这些 APIS 中的每一个安全地存储数据库连接字符串,因此选择使用 Azure Key Vault,但我实际上不确定为什么或是否需要 Secrets Store CSI driver 来实现我们的目标为了。我们不能只在 Azure Key Vault 中为 AKS 节点创建一个访问策略来检索密钥吗?还是只使用托管身份?然后我可以在应用程序代码中使用 Key Vault SDK。

如果有人能阐明这一点,我会非常感激,因为我似乎在所有 documentation/videos 中遇到了 CSI 驱动程序。如果我们确实需要使用它,我只想知道为什么这样我会更好地理解。

我尝试过使用 CSI 驱动程序,也尝试过在没有 CSI 驱动程序的情况下进行检索。目前我正在努力让其中任何一个工作。然而,一旦我知道我是否需要 CSI 驱动程序,我就可以采用正确的方法,因为目前我在不同的驱动程序之间来回切换。

提前致谢!

这两个选项(使用 Secrets Store CSI 驱动程序注入机密或使用 .NET SDK 直接从应用程序中的保管库获取它们)都是完全有效的选项。

机密存储 CSI 驱动程序充当应用程序和密钥保管库之间的中间层,并使保管库中的机密作为文件或环境变量可供应用程序使用。机密存储驱动程序使用附加到基础规模集的托管标识来访问密钥保管库。 这意味着:

  • 应用程序变得独立于密钥的静态存储方式,这使得在本地测试以及在 Azure 以外的环境中部署变得更加容易。
  • 应用程序不需要访问或管理密钥保管库的凭据,因为

使用 Azure SDK 时,您的应用程序将直接连接到 Key Vault,不需要中间组件,但这会将您的应用程序与 Azure Key Vault 紧密耦合。您最终还会面临如何向您的应用程序提供凭据以向密钥保管库进行身份验证的挑战。由于这些凭据无法存储在密钥保管库中,因此您需要另一个构造来为您提供身份,例如 AAD Pod Identities or the newer Azure AD workload identity。因此,即使您不使用 Secret Store CSI 驱动程序,您也很可能需要另一个组件来促进对密钥保管库的身份验证。