为多个AKS集群共享服务主体是否允许一个集群处理另一个AKS集群的资源?应该为每个AKS集群创建一个服务主体吗?,这种做法似乎受到Azure和Terraform等工具的鼓励。
长话短说:
我们需要为每个客户创建一个AKS集群,以确保另一个级别的数据隔离。具体来说,假设攻击者可以以某种方式侵入Pod、逃避Pod隔离、访问集群的Kubernetes API和集群的服务主体(SP),则表示攻击者不应该访问另一个集群的持久卷声明。
Azure只创建一个服务主体一次,并将其用于下一个集群(文档,源代码):
当您使用az aks create命令自动生成服务主体时,服务主体凭据将被写入用于运行该命令的计算机上的文件~/..azure/aksServiceprial.json。
由于不确定集群的SP能(或应该)做多少,我发现以下信息相当混乱:
这意味着集群SP必须能够访问集群的资源组( RG ) --即集群创建的所有资源都位于其中的RG,而不是创建集群的RG。--这是糟糕的,因为它意味着在AKS集群之间共享SP需要said SP访问所有集群RGs。
az ad sp create-for-rbac --skip-assignment --name terraform-aks-ng-sp我也可以通过从Cloud进行检查来确认这一点:
PS Azure:> z角色分配列表--受让人http://terraform-aks-ng-sp [] Azure:/ /
空列表显示SP没有角色。--这是(或者更确切地说是)好的,因为共享SP只能访问真正共享的资源(例如容器注册中心)。

--这是个糟糕的,因为共享一个SP似乎意味着可以隐式地访问所有集群RGs。
更新:在AKS集群之间共享SP似乎甚至受到Terraform的鼓励。
发布于 2019-12-11 10:53:20
这里的问题在哪里?创建AKS时,只需为每个AKS指定特定的服务主体即可。您不应该使用Azure CLI创建资源,您应该使用某种工具(pulumi、ansible等)
https://stackoverflow.com/questions/59283942
复制相似问题