IAM 作为委托人的角色

Don*_*per 1 amazon-web-services amazon-iam

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

Unsupported Principal: The policy type IDENTITY_POLICY does not support the Principal element. Remove the Principal element.
Run Code Online (Sandbox Code Playgroud)

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

{
  "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"
    ]
    }]
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 6

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

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