You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS信任策略角色链疑问:角色假设关系确认

关于IAM角色信任策略与权限的疑问

问题背景

  • 信任策略(node-trust-policy.json)中包含角色eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole
  • s3-velero-policy权限策略将附加到一台EC2实例对应的IAM角色
  • eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole角色已附加到EKS节点

需要确认:

  1. 是EC2实例在拥有s3-velero-policy对应角色的同时,扮演eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole角色?
  2. 还是EKS节点在拥有eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole角色的同时,扮演s3-velero-policy对应角色?

疑问来源:IAM文档指出Principal元素定义允许扮演该角色的对象,但看了信任策略后,不确定作为Principal的eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole是否可以扮演s3-velero-policy对应的角色,或是反过来。


核心结论

EKS节点(已附加eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole角色)可以扮演s3-velero-policy对应的IAM角色,而非反过来。

具体解释

  1. 角色关系明确:

    • node-trust-policy.json是附加了s3-velero-policy权限策略的那个IAM角色的信任策略
    • 信任策略里的Principal字段,本质是定义允许哪些实体来扮演当前这个角色
  2. 拆解信任策略的两条规则:

    • 第一条允许ec2.amazonaws.com服务扮演该角色:说明任何EC2实例都可以通过实例配置文件直接关联这个带Velero权限的角色
    • 第二条允许eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole角色扮演该角色:说明已经持有这个EKS节点角色的实体(也就是EKS节点本身),可以调用sts:AssumeRole接口获取该Velero角色的临时凭证,从而获得S3和EC2相关操作权限
  3. 两种猜测的正误判断:

    • 错误:EC2实例不会去扮演EKS节点角色——EKS节点角色的信任策略(未提供)通常仅允许EC2服务或EKS相关服务扮演,不会包含Velero角色作为Principal
    • 正确:EKS节点在自身拥有eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole角色的基础上,可以主动扮演s3-velero-policy对应的角色,以此获得Velero备份/恢复所需的存储权限

附上对应的策略代码

节点信任策略(node-trust-policy.json)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com" 
      },
      "Action": "sts:AssumeRole"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::xxxxx:role/eksctl-demo-eks-cluster-nodegroup--NodeInstanceRole-O7yw97MymI8w" 
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

S3 Velero权限策略(s3-velero-policy.json)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVolumes",
        "ec2:DescribeSnapshots",
        "ec2:CreateTags",
        "ec2:CreateVolume",
        "ec2:CreateSnapshot",
        "ec2:DeleteSnapshot"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:DeleteObject",
        "s3:PutObject",
        "s3:AbortMultipartUpload",
        "s3:ListMultipartUploadParts"
      ],
      "Resource": [
        "arn:aws:s3:::velero/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::velero"
      ]
    }
  ]
}

内容的提问来源于stack exchange,提问作者Destiny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.08 07:13:09