防止在 Amazon EKS 中出现跨服务混淆代理 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

防止在 Amazon EKS 中出现跨服务混淆代理

混淆代理问题是一个安全问题,即没有执行操作权限的实体可能会迫使更具权限的实体执行该操作。在 AWS 中,跨服务模拟可能会导致混淆代理问题。一个服务(呼叫服务)调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作,否则该服务不应有访问权限。为防止这种情况,AWS 提供可帮助您保护所有服务的数据的工具,而这些服务中的服务主体有权限访问账户中的资源。

我们建议在资源策略中使用 aws:SourceArnaws:SourceAccount 全局条件上下文键,以限制 Amazon Elastic Kubernetes Service(Amazon EKS)为其他服务提供的资源访问权限。

aws:SourceArn

使用 aws:SourceArn 来仅将一个资源与跨服务访问相关联。

aws:SourceAccount

使用 aws:SourceAccount 来让该账户中的任何资源与跨服务使用相关联。

防范混淆代理问题最有效的方法是使用 aws:SourceArn 全局条件上下文键和资源的完整 ARN。如果不知道资源的完整 ARN,或者正在指定多个资源,请针对 ARN 未知部分使用带有通配符字符(*)的 aws:SourceArn 全局上下文条件键。例如 arn:aws:<servicename>:*:<123456789012>:*

如果 aws:SourceArn 值不包含账户 ID,例如 Amazon S3 桶 ARN,您必须使用 aws:SourceAccountaws:SourceArn 来限制权限。

防止 Amazon EKS 集群角色出现跨服务混淆代理

每个集群都需要一个 Amazon EKS 集群 IAM 角色。由 Amazon EKS 管理的 Kubernetes 集群会使用此角色来管理节点,而传统云提供商会使用此角色为服务创建带有 Elastic Load Balancing 的负载均衡器。这些集群操作只能影响同一账户,因此建议您将每个集群角色限制为该集群和账户。这是 AWS 建议的具体应用,即在您的账户中遵循最低权限原则

资源 ARN 格式

aws:SourceArn 的值必须是 EKS 集群的 ARN,格式为 arn:aws:eks:region:account:cluster/cluster-name 。例如, arn:aws:eks:us-west-2:123456789012:cluster/my-cluster

EKS 集群角色的信任策略格式

以下示例演示如何使用 Amazon EKS 中的 aws:SourceArnaws:SourceAccount 全局条件上下文键来防止混淆代理问题。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }