0

accountA の IAM ロール用に構成された次の信頼関係を検討してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

これは、accountA で実行されている cloudformation に暗黙的にアクセス範囲を限定しますか? それとも、他のアカウント (B、C、D など) の cloudformation スタックがこのロールを引き受けることができますか?

次のように、代理攻撃を回避するために以前に sourceArn 条件を使用しました。

"Condition": {
        "ArnLike": {
          "aws:SourceArn": [
            "xxxx"
           ]
        }
 }

これは必要ですか、それとも信頼関係の範囲を accountA に限定するには初期ポリシーで十分ですか?

4

1 に答える 1

2

このポリシーは、CloudFormation サービスがアカウント内のロールを引き受けることを許可しています。

デフォルトでは、これはあなたのアカウントにも適用されます。つまり、あなたのアカウントの CloudFormation のみがロールを引き受けることができ、別のアカウントの CloudFormation は引き受けることができません。別のアカウント ID を持つプリンシパルを明示的に追加して、別のアカウントの CloudFormation からのクロスアカウント アクセスを許可する必要があります。これは次のようになります。

"Principal": {
    "AWS": "123456789012"
    "Service": "cloudformation.amazonaws.com"
},

明確にするために、ユーザーがロールをサービスに渡すことを許可するには、次のアクセス許可が必要です。

  • 「iam:GetRole」
  • 「iam:PassRole」

IAM ロール Arn に対するこれらのアクセス許可がないと、それを CloudFormation サービスに渡して引き受けることができません。

つまり、サービスがロールを引き受けることができることに加えて、ユーザー/ロールには IAM ロール arn を渡す権限が必要です。

詳細については、ロールを AWS サービスドキュメントに渡すためのアクセス許可をユーザーに付与するを参照してください。

于 2021-02-06T09:13:06.033 に答える