繁体   English   中英

IAM 作为校长的角色

[英]IAM Role as a Principal

当我尝试在账户 B (111111111111) 中创建此 IAM 策略以便账户 A (2222222222222) 中的角色可以访问特定的 ECR 存储库时,它会出错,指出委托人无效。

Unsupported Principal: The policy type IDENTITY_POLICY does not support the Principal element. Remove the Principal element.

这是无效的政策,如果我要删除主要角色,我不完全理解我如何才能达到同样的结果。

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "Sid0",
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::2222222222222:role/role-name-1"
    },
    "Action": [
      "ecr:DescribeImages",
      "ecr:DescribeRepositories"
      "ecr:BatchCheckLayerAvailability",
      "ecr:GetDownloadUrlForLayer",
      "ecr:GetRepositoryPolicy",
      "ecr:ListImages",
      "ecr:BatchGetImage",
      "ecr:GetAuthorizationToken"
    ],
    "Resource": [
      "arn:aws:ecr:us-west-1:111111111111:repository/ecr-name-1"
    ]
    }]
}

当您使用基于身份的策略时,一旦您将策略附加到 IAM 用户或角色,就会自动推断出策略的Principal 在这种情况下,给定的用户/角色成为Principal 因此您没有明确指定它。

相反,对于基于资源的策略,例如 S3 存储桶策略,您必须指定Principal 这是因为这些策略绑定到资源,而不绑定到任何 IAM 用户或角色。 因此,您必须为它们显式定义Principal

您似乎在做的是IAM role chaining

IAM 政策不能有委托人。 只有资源策略(例如 S3 存储桶策略)可以。 IAM 策略中的委托人始终隐式地是进行 API 调用的身份,该调用正在根据该策略进行评估。

IAM 角色具有信任策略,定义必须满足哪些条件才能允许其他委托人担任该角色。 你需要做两件事:

  1. 代入身份必须有权对待代入角色执行 AssumeRole(您在账户 A 中的 IAM 角色策略中执行此操作)
  2. 待代入角色必须允许代入身份代入角色(您在账户 B 的信任策略中这样做)

有关更多信息,请参阅如何将信任策略与 IAM 角色结合使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM