AWS IAM Identity Center の特定の許可セットに対応するロールだけを SCP の Deny 対象から除外するときの ARN 指定方法

AWS IAM Identity Center の特定の許可セットに対応するロールだけを SCP の Deny 対象から除外するときの ARN 指定方法

2026.05.12

はじめに

AWS Organizations の SCP を利用して、メンバーアカウントに対して特定の操作を制限したいケースがあります。

ただし、すべてのプリンシパルを制限したいわけではなく、IAM Identity Center の AdministratorAccess 許可セット経由で操作する管理者だけは例外にしたい、という要件もあります。

IAM Identity Center では、ユーザーやグループに AWS アカウントへのアクセスを割り当てる際に、以下のような許可セットを利用します。

cm-hirai-screenshot 2026-05-08 10.44.50
許可セット

このような要件では、IAM Identity Center が作成する AWSReservedSSO_... ロールの ARN を SCP の条件に指定します。

今回、この設定を確認する中で、IAM Identity Center のリージョンによって AWSReservedSSO_... ロール ARN の形式が異なることが分かりました。

本記事では、IAM Identity Center の AdministratorAccess 許可セットに対応するロールだけを SCP の Deny 対象から除外する方法と、IAM Identity Center のリージョンによる ARN 形式の違いについて紹介します。

結論

IAM Identity Center を東京リージョン、つまり ap-northeast-1 で利用している場合、SCP の条件には以下のように指定します。

"ArnNotLike": {
  "aws:PrincipalArn": [
    "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*"
  ]
}

この条件は、aws:PrincipalArn が上記の ARN パターンに一致しない場合に Deny する、という意味になります。

つまり、IAM Identity Center の AdministratorAccess 許可セットに対応するロールは Deny 対象から除外され、それ以外のロールやユーザーは Deny 対象になります。

一方で、IAM Identity Center を us-east-1 で利用している場合は、AWSReservedSSO_... ロール ARN にリージョン部分を含めない形式になります。

"ArnNotLike": {
  "aws:PrincipalArn": [
    "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AdministratorAccess_*"
  ]
}

ap-northeast-1 ではリージョンを含めますが、us-east-1 ではリージョンを含めない点がポイントです。

IAM Identity Center の許可セットは AWSReservedSSO ロールとして作成される

IAM Identity Center で許可セットを AWS アカウントに割り当てると、対象アカウント内に AWSReservedSSO_ で始まる IAM ロールが作成されます。

AWS ドキュメントにも以下の記載があります。

When you assign a permission set to an AWS account, IAM Identity Center creates a role with a name that begins with AWSReservedSSO_.
AWS アカウントに許可セットを割り当てると、IAM Identity Center は AWSReservedSSO_ で始まる名前のロールを作成します。
https://docs.aws.amazon.com/singlesignon/latest/userguide/referencingpermissionsets.html

たとえば、AdministratorAccess という許可セットを AWS アカウントに割り当てると、以下のようなロールが作成されます。

AWSReservedSSO_AdministratorAccess_1234567890abcdef

東京リージョンで IAM Identity Center を利用している場合、ロール ARN は以下のような形式になります。

arn:aws:iam::111111111111:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_1234567890abcdef

複数の AWS アカウントに同じ SCP を適用する場合は、アカウント ID 部分を * にして指定します。

arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*

AWSReservedSSO_AdministratorAccess_*AdministratorAccess 部分は、許可セット名に対応します。許可セット名が AdminAccess であれば、AWSReservedSSO_AdminAccess_* のように、実際の許可セット名に合わせて指定します。

また、末尾の一意なサフィックス部分は固定値として扱わず、* を付けておくのがよいです。許可セットの割り当て状況によってはロールが再作成され、サフィックスが変わる可能性があるためです。

ここまでの内容から、SCP で IAM Identity Center の特定の許可セットを例外にしたい場合は、AWSReservedSSO_<許可セット名>_* の IAM ロール ARN を条件に指定すればよいことが分かります。

us-east-1 の場合はリージョンを含めない

今回確認していて特に注意が必要だと感じたのが、us-east-1 の場合の ARN 形式です。

IAM Identity Center を ap-northeast-1 などのリージョンで作成している場合、AWSReservedSSO_... ロール ARN にはリージョンが含まれます。

arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*

一方で、us-east-1 の場合は以下のように指定します。

arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AdministratorAccess_*

us-east-1 の場合に、以下のように /us-east-1/ を含めてしまうと、実際のロール ARN と一致しません。

arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdministratorAccess_*

AWS ドキュメントにも以下の記載があります。

If your identity source in IAM Identity Center is hosted in us-east-1, there is no aws-region in the ARN.
IAM Identity Center の ID ソースが us-east-1 にホストされている場合、ARN に aws-region は含まれません。
https://docs.aws.amazon.com/singlesignon/latest/userguide/referencingpermissionsets.html

ドキュメント上は「IAM Identity Center の ID ソースが us-east-1 にホストされている場合」と表現されています。記事内では分かりやすさのために「IAM Identity Center を作成したリージョン」と表現していますが、正確には、実際に作成されている AWSReservedSSO_... ロール ARN を確認して SCP に指定するのが確実です。

この違いを知らないと、us-east-1 の環境で誤って /us-east-1/ を含めた ARN を指定し、想定した管理者ロールが Deny 対象から除外されない可能性があります。

aws:PrincipalArn には IAM ロール ARN を指定する

IAM Identity Center 経由で AWS アカウントにサインインして操作すると、CloudTrail などでは STS の assumed-role ARN が表示されることがあります。

たとえば、以下のような形式です。

arn:aws:sts::111111111111:assumed-role/AWSReservedSSO_AdministratorAccess_1234567890abcdef/user@example.com

しかし、SCP の aws:PrincipalArn に指定するのは、この STS の assumed-role ARN ではありません。指定するのは、以下のような IAM ロール ARN です。

arn:aws:iam::111111111111:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_1234567890abcdef

AWS ドキュメントでは、IAM ロールの場合、aws:PrincipalArn のリクエストコンテキストには、そのロールを引き受けたユーザーではなくロール ARN が返ると説明されています。

For IAM roles, the request context returns the ARN of the role, not the ARN of the user that assumed the role.
IAM ロールの場合、リクエストコンテキストは、そのロールを引き受けたユーザーの ARN ではなく、ロールの ARN を返します。
https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html

そのため、SCP では以下のように arn:aws:iam::...:role/... の形式で指定します。

"ArnNotLike": {
  "aws:PrincipalArn": [
    "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*"
  ]
}

CloudTrail で確認できる ARN と、SCP の条件に指定する ARN の形式が異なる点に注意してください。

SCP の記述例

以下は、特定の操作を IAM Identity Center の AdministratorAccess 許可セット以外では禁止する SCP の例です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenySpecificActionExceptAdminSSO",
      "Effect": "Deny",
      "Action": [
        "example:SpecificAction"
      ],
      "Resource": "*",
      "Condition": {
        "ArnNotLike": {
          "aws:PrincipalArn": [
            "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*"
          ]
        }
      }
    }
  ]
}

Action には、実際に制限したい AWS アクションを指定します。

ポイントは、Deny の条件に ArnNotLike を使っている点です。AdministratorAccess 許可セットに対応するロール ARN に一致しない場合に Deny することで、管理者ロールだけを Deny 対象から除外できます。

今回の ARN では、アカウント ID やロール名の一意なサフィックス部分に * を使うため、ARN パターンで比較できる ArnNotLike を利用しています。

複数の許可セットを例外にしたい場合

AdministratorAccess 以外にも例外にしたい許可セットがある場合は、aws:PrincipalArn の配列に ARN パターンを追加します。

"ArnNotLike": {
  "aws:PrincipalArn": [
    "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*",
    "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_PlatformAdmin_*",
    "arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_SecurityAdmin_*"
  ]
}

この例では、以下の許可セットに対応する IAM Identity Center ロールが Deny 対象から除外されます。

  • AdministratorAccess
  • PlatformAdmin
  • SecurityAdmin

管理者向けの許可セットを複数用意している場合は、このように配列で追加できます。許可セット名とロール名の対応が分かるよう、実際に作成されている IAM ロールもあわせて確認しておくとよいです。

まとめ

IAM Identity Center の AdministratorAccess 許可セット経由のロールだけを SCP の Deny 対象から除外したい場合は、aws:PrincipalArnAWSReservedSSO_AdministratorAccess_* の IAM ロール ARN を指定します。

東京リージョンなどでは、以下のようにリージョンを含めます。

arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/ap-northeast-1/AWSReservedSSO_AdministratorAccess_*

一方で、us-east-1 の場合は、以下のようにリージョンを含めません。

arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AdministratorAccess_*

IAM Identity Center のリージョンによって AWSReservedSSO_... ロール ARN の形式が異なる点は、SCP の例外条件を書くうえで重要です。

実際に対象アカウントに作成されている IAM ロール ARN を確認したうえで設定することをお勧めします。

この記事をシェアする

関連記事