是否可以阻止 EKS 上的 kubernetes pod 承担节点的 IAM 角色?
Is it possible to prevent a kubernetes pod on EKS from assuming the node's IAM role?
默认情况下,AWS EKS 上的任何 kubernetes pod 都可以承担底层节点的 IAM 角色。这意味着所有容器 immediately get access 到 AmazonEKSWorkerNodePolicy 和 AmazonEC2ContainerRegistryReadOnly 等策略,我想避免这些策略。
我不想使用 iptables
完全阻止所有容器使用 AWS API,因为如果提供适当的凭据,应该可以调用它。
使用 IAM roles for service accounts,可以将某个 IAM 角色与 pod 的服务帐户相关联。但这是否会阻止 pod 承担底层节点的 IAM 角色?
AWS 文档中描述了可以防止它(如果一起使用)的两个主要因素:
- OP 已经指出的服务帐户的 IAM 角色。
- Blocking access to instance metadata service - 阻止 IMDS 可能会停止您拥有的某些 运行 应用程序/服务,因此应事先进行适当测试。
最重要的是,正如文档中指出的那样,这取决于 CNI,如果您使用 Calico,这很好write-up 解决了 Calico 网络策略的问题和缓解措施。
另一种选择是使用 kube2iam。
默认情况下,AWS EKS 上的任何 kubernetes pod 都可以承担底层节点的 IAM 角色。这意味着所有容器 immediately get access 到 AmazonEKSWorkerNodePolicy 和 AmazonEC2ContainerRegistryReadOnly 等策略,我想避免这些策略。
我不想使用 iptables
完全阻止所有容器使用 AWS API,因为如果提供适当的凭据,应该可以调用它。
使用 IAM roles for service accounts,可以将某个 IAM 角色与 pod 的服务帐户相关联。但这是否会阻止 pod 承担底层节点的 IAM 角色?
AWS 文档中描述了可以防止它(如果一起使用)的两个主要因素:
- OP 已经指出的服务帐户的 IAM 角色。
- Blocking access to instance metadata service - 阻止 IMDS 可能会停止您拥有的某些 运行 应用程序/服务,因此应事先进行适当测试。
最重要的是,正如文档中指出的那样,这取决于 CNI,如果您使用 Calico,这很好write-up 解决了 Calico 网络策略的问题和缓解措施。
另一种选择是使用 kube2iam。