【问题标题】:Azure Kubernetes managed identity vs AAD pod identitiesAzure Kubernetes 托管标识与 AAD pod 标识
【发布时间】:2020-10-04 15:16:02
【问题描述】:

Azure Kubernetes 现在似乎提供了两种访问其他 Azure 资源的方法。 1. AKS 托管标识 - https://docs.microsoft.com/en-us/azure/aks/use-managed-identity 2. AAD pod 身份 - https://github.com/Azure/aad-pod-identity

作为在 AKS 中运行的应用程序,我如何为 AKS 群集托管标识或 AAD pod 标识请求令牌?当我调用 IMDS 端点获取令牌时,它如何知道为哪个身份生成令牌?

【问题讨论】:

  • 您是否有兴趣在与 API 服务器通信时为每个 pod 提供自己的标识? Kubernetes 作为使用 Kubernetes Service Principal 的概念层,您可以为每个用户(服务帐户)的每个操作获得不同的审计数据:kubernetes.io/docs/tasks/configure-pod-container/…
  • 不,我不想与 kubernetes api 服务器通信。我的问题是关于访问其他 Azure 资源。
  • 所以你是对的:github.com/Azure/aad-pod-identity 是你需要的软件。

标签: azure-aks azure-container-service


【解决方案1】:

同样,主机可以发出授权请求,直接从 NMI 主机端点 (http://127.0.0.1:2579/host/token/) 获取资源的服务主体令牌。请求必须在请求头中包含 pod 命名空间 podns 和 pod 名称 podname 以及请求令牌的资源的资源端点。 NMI 服务器根据请求标头中的 podns 和 podname 识别 pod,然后向 k8s(通过 MIC)查询匹配的 azure 身份。然后 NMI 发出 ADAL 请求以获取请求中资源的令牌,并返回令牌和 clientid 作为响应。

https://github.com/Azure/aad-pod-identity#node-managed-identity

【讨论】:

  • 如果对于某些用例我不想要 pod 身份令牌,但 AKS 集群托管身份令牌,我将如何实现呢?不会有 pod 命名空间标头吗?
  • 现在,您需要使用 Azure 管理 API 卷曲容器服务对象
  • 但似乎 servicePrincipalProfile 会返回一个带有客户端 ID MSI 的空负载,这是因为目前 AKS 仅支持动态配置的令牌。他们将支持带上您自己的令牌/密钥(带上您自己的用户定义的 MSI)。一旦你有了它,你现在就可以在你的 POD 中重用它,你可以使用 AKs 资源 PRincipalID 重用系统分配的 MSI 与委派参见:docs.microsoft.com/en-us/azure/aks/…
  • 我不明白。您能否详细说明如何获得 AKS MSI 的令牌 - docs.microsoft.com/en-us/azure/aks/use-managed-identity?通常的方法是访问 IMDS 端点(169.254.169.254)。但是,如果我为其他一些 pod 运行 MIC 和 NMI 以以 pod 身份方式获取令牌,我怎样才能获得系统分配的 AKS MSI 的令牌?
  • 你不能。现在看来 containerService 对象没有暴露秘密。
【解决方案2】:

您在选项 1 (https://docs.microsoft.com/en-us/azure/aks/use-managed-identity) 中提到的 AKS 托管标识仅供集群内部使用。您不能使用该身份从您的 pod 访问 azure 资源。

您可以使用 Pod 身份来满足您的需求。您需要为要使用的托管身份创建一个身份绑定 (https://github.com/Azure/aad-pod-identity#5-deploy-azureidentitybinding),并在您的 pod 规范 (https://github.com/Azure/aad-pod-identity#6-deployment-and-validation) 中指定该身份绑定。

当 pod 从 IMDS 端点请求令牌时,它不需要指定身份:这是由 NMI 根据发出请求的 pod 规范中的身份绑定自动计算出来的。

【讨论】:

猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 2021-10-11
  • 2021-11-12
  • 2020-12-30
  • 1970-01-01
  • 2019-12-24
  • 2020-08-31
  • 1970-01-01
相关资源
最近更新 更多