帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
防止在 Amazon EKS 中出现跨服务混淆代理
混淆代理问题是一个安全问题,即没有执行操作权限的实体可能会迫使更具权限的实体执行该操作。在 AWS 中,跨服务模拟可能会导致混淆代理问题。一个服务(呼叫服务)调用另一项服务(所谓的服务)时,可能会发生跨服务模拟。可以操纵调用服务以使用其权限对另一个客户的资源进行操作,否则该服务不应有访问权限。为防止这种情况,AWS 提供可帮助您保护所有服务的数据的工具,而这些服务中的服务主体有权限访问账户中的资源。
我们建议在资源策略中使用 aws:SourceArn
和 aws: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:SourceAccount
和 aws:SourceArn
来限制权限。
防止 Amazon EKS 集群角色出现跨服务混淆代理
每个集群都需要一个 Amazon EKS 集群 IAM 角色。由 Amazon EKS 管理的 Kubernetes 集群会使用此角色来管理节点,而传统云提供商
资源 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:SourceArn
和 aws: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" } } } ] }