【问题标题】:Security concerns of using managed identity using AAD Pod Identities使用 AAD Pod 身份使用托管身份的安全问题
【发布时间】:2021-06-25 05:57:17
【问题描述】:
我一直在研究托管标识和 AKS 集群,这是我的理解:
- 我只能将一个用户托管标识分配给 AKS 群集。
- 我必须对身份进行相关角色分配才能获得访问权限。
现在我的问题是,假设我有两个不同的 pod。一个豆荚想要
访问 keyvault 并且其他 pod 想要访问 Azure DNS。这
使这项工作的唯一方法是将用户管理的身份修改为
授予对这两种资源的访问权限。但现在看来两个豆荚都可以
访问这两个资源。
现在我的问题:
- 我的上述理解是否正确,这是使用 AAD Pod Identity 的常用方式吗?
- 有没有更好的方法来避免上述安全问题?
【问题讨论】:
标签:
azure
kubernetes
azure-active-directory
azure-aks
azure-managed-identity
【解决方案1】:
关于 AKS 中的托管标识,它们有两个用途。 AKS 集群本身及其 pod。
关于集群的托管标识,该标识用于访问 the docs 中所述的多个 azure 资源:
目前,Azure Kubernetes 服务 (AKS) 集群(特别是 Kubernetes 云提供商)需要一个身份才能在 Azure 中创建额外的资源,例如负载均衡器和托管磁盘。此身份可以是托管身份或服务主体。
那么你有managed identities for Pods。 目前处于预览阶段,仅在 linux 节点上可用!
您可以create 多个其中一个和assign permissions 每个身份。然后您需要添加一个引用托管标识的pod identity,并在部署 pod 时使用它。
通过这种方式,您最多可以拥有 200 个 pod 身份。
那么,回到这个问题
现在我的问题是,假设我有两个不同的 pod。一个 pod 想要访问 keyvault,而另一个 pod 想要访问 Azure DNS。 完成这项工作的唯一方法是修改用户管理的身份以授予对这两种资源的访问权限。但现在看来两个 pod 都可以访问这两种资源。
这是不正确的,如上所述,您可以拥有多个 pod 身份,每个身份都有自己的访问权限。