aws:PrincipalArn条件キーでは、assumed-roleセッションのARNではなくロールARNを指定する必要があります

aws:PrincipalArn条件キーでは、assumed-roleセッションのARNではなくロールARNを指定する必要があります

2025.10.14

発生した問題

AWS Organizations環境で、AWS Systems Manager Quick Setupを実行した際、次のエラーが発生しました。

None of configurations has succeeded in deployment step 1: CFN stack StackSet-AWS-QuickSetup-PatchPolicy-TA-277de-92934b38-df6f-422f-990d-ca69319db3c1 failed to deploy: ResourceLogicalId:EnableExplorerRoleForPatchPolicy, ResourceType:AWS::IAM::Role, ResourceStatusReason:Resource handler returned message: "Encountered a permissions error performing a tagging operation, please add required tag permissions. See https://repost.aws/knowledge-center/cloudformation-tagging-permission-error for how to resolve. Resource handler returned message: "User: arn:aws:sts::111111111111:assumed-role/stacksets-exec-115e79ce7397657addd4a21121099702/bad88f1b-72e9-4c3c-8c8d-df234fd75799 is not authorized to perform: iam:TagRole on resource: arn:aws:iam::111111111111:role/AWS-QuickSetup-EnableExplorer-ap-northeast-1-277de with an explicit deny in a service control policy

cm-hirai-screenshot 2025-10-10 8.52.57
エラーメッセージから、arn:aws:sts::111111111111:assumed-role/stacksets-exec-~がStackSetsを実行するロールで、iam:TagRoleアクションがSCP(サービスコントロールポリシー)によって拒否されていることがわかります。

試した対処法

SCPですべてのプリンシパルに対してiam:TagRoleiam:UntagRoleが拒否されていました。
元のSCP設定

			
			{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "iam:TagRole",
        "iam:UntagRole"
      ],
      "Resource": "*"
    }
  ]
}

		

エラーメッセージに表示されたarn:aws:sts::*:assumed-role/stacksets-exec-*を除外対象として追加しました。
修正後のSCP設定

			
			{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "iam:TagRole",
        "iam:UntagRole"
      ],
      "Resource": "*",
      "Condition": {
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:sts::*:assumed-role/stacksets-exec-*"
          ]
        }
      }
    }
  ]
}

		

しかし、この設定でもエラーは解決されませんでした。

原因

aws:PrincipalArn条件キーでは、assumed-roleセッションのARNを指定できません。

AWS IAMの公式ドキュメントには、aws:PrincipalArn条件キーに関して以下のように記載されています。

aws:PrincipalArn
このキーを使用して、リクエストを行ったプリンシパルの Amazon リソースネーム (ARN) をポリシーで指定した ARN と比較します。IAM ロールの場合、リクエストコンテキストは、ロールを引き受けたユーザーの ARN ではなく、ロールの ARN を返します。

IAM ロール — リクエストコンテキストには、条件キー aws:PrincipalArn に次の値が含まれています。引き受けたロールのセッション ARN をこの条件キーの値として指定しないでください。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principal-properties

つまり、IAMロールを使用したリクエストでは、aws:PrincipalArnには常にロール自体のARNが設定されます。そのため、SCPの条件で除外指定をする際は、以下のようにロールARNを使用する必要があります。

  • 指定可能: arn:aws:iam::*:role/stacksets-exec-*(ロール自体のARN)
  • 指定不可: arn:aws:sts::*:assumed-role/stacksets-exec-*(assumed-roleセッションのARN)

エラー発生の流れ

Quick Setup実行時に、各メンバーアカウントのstacksets-exec-*ロールが、アカウントごとに存在するIAMロール(AWS-QuickSetup-EnableExplorer-ap-northeast-1-xxx等)に対してタグ付与を行います。

このプロセスでSCPによる制限に阻まれました。

			
			QuickSetup 
    ↓
CloudFormation StackSet 作成
    ↓  
stacksets-exec-* ロールが assume される
    ↓
IAM ロールへのタグ付与試行 ← ここでSCPに阻まれた

		

解決方法

IAMロールを除外するには、以下のようにロール自体のARNを指定する必要があります。

			
			{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "iam:TagRole",
        "iam:UntagRole"
      ],
      "Resource": "*",
      "Condition": {
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:role/stacksets-exec-*"
          ]
        }
      }
    }
  ]
}

		

補足:stacksets-exec-*ロールについて

Organizationsで「信頼されたアクセス」を有効にすると、CloudFormation StackSetsのマネージドロールが自動生成されます。以下のBlackBelt資料に詳細が記載されています。

  • Organizationsで「信頼されたアクセス」を有効にするとStackSetsのマネージドロールが自動生成される
    - StackSets管理アカウント側: AWSServiceRoleForCloudFormationStackSetsOrgAdmin
    - ポリシー: stacksets-exec-* ロールを引き受ける
    - 信頼関係: stacksets.cloudformation.amazonaws.com を信頼
    - ターゲットアカウント側: stacksets-exec-*
    - ポリシー: AdministratorAccess
    - 信頼関係: AWSServiceRoleForCloudFormationStackSetsOrgAdmin ロールを信頼
    - AWSServiceRoleForCloudFormationStackSetsOrgMember ロールがこれを作成する

cm-hirai-screenshot 2025-10-10 8.53.09

https://d1.awsstatic.com/webinars/jp/pdf/services/20201006_BlackBelt_CloudFormation_DeepDive.pdf

このロールは、Quick Setup実行時に各メンバーアカウントでIAMロールへのタグ付与を行うため、SCPで例外対象とする必要があります。

この記事をシェアする

FacebookHatena blogX

関連記事

aws:PrincipalArn条件キーでは、assumed-roleセッションのARNではなくロールARNを指定する必要があります | DevelopersIO