如何从作为吊舱部署在Azure Kubernetes服务(AKS)中的Asp.net Core Docker容器访问Azure KeyVault?

时间:2020-09-24 20:23:51

标签: azure asp.net-core kubernetes azure-keyvault azure-aks

我有一个Asp.Net Core应用程序,该应用程序配置为使用Visual Studio 2019 Connected Services连接到Azure KeyVault:

https://docs.microsoft.com/en-us/azure/key-vault/general/vs-key-vault-add-connected-service

我用Docker容器化了应用程序,并将其作为Pod部署到Kubernetes中。 KeyVault连接无法正常工作,可能是因为未设置托管身份。

我尝试过:

  1. 像我对App Services或Container Services一样,将Kubernetes代理的受管身份添加到KeyVault Acccess策略中,但是不允许连接。
  2. 在此处关注文档:https://docs.microsoft.com/en-us/azure/key-vault/general/key-vault-integrate-kubernetes

我想知道“ Kubernetes上Secrets Store CSI驱动程序的Azure Vault Vault提供程序”是否是从吊舱中使用KeyVault的正确方法,或者是否有更简单的解决方案(例如直接连接)。

2 个答案:

答案 0 :(得分:0)

针对我所处情况的所有人,解决方案是使用AAD-Pod Identity

除非您需要Kubernetes配置中的秘密,需要对自定义配置进行全面控制或将群集置于Azure外部,否则无需附加CSI驱动程序。

对于部署到AKS的Asp.Net Core应用程序,最简单的方法是使用托管身份,并将其提供给Kubernetes集群,则需要AAD-Pod身份。

还没有文档页面,但是按照GitHub上的“入门”说明进行操作就足够了。

答案 1 :(得分:0)

我设法使用托管标识从我的 Pod 中的 Azure 密钥保管库中获取了一个机密。只需添加 AKS 集群的 .identityProfile.kubeletidentity.clientId 作为 Key Vault 策略即可读取机密。您必须通过 Azure 门户设置此策略,因为“az keyvault set-policy”期望 --object-id 是一个 principalId 我猜...