IAM ロールマネージャーを Organizations の SCP で拒否してみた

IAM ロールマネージャーを Organizations の SCP で拒否してみた

2026年8月に一般提供が始まった IAM ロールマネージャーは、コンソールでの操作に必要なロールを自動で作成します。生成されるロールに広範な権限が付与される場合もあるため、組織として利用を許可するかを決める必要があります。Organizations の SCP で有効化そのものを禁止する方法と、権限の広いロールテンプレート由来のロール作成を拒否する方法の2通りを実際に試しました。
2026.08.14

はじめに

2026年8月12日、IAM ロールマネージャーの一般提供が始まりました。対応サービスのコンソールから、そのサービスが必要とするロールをテンプレートに沿って作成できる機能です。

https://aws.amazon.com/about-aws/whats-new/2026/08/aws-iam-role-manager/

https://aws.amazon.com/blogs/security/how-aws-iam-role-manager-rethinks-the-starting-point-for-iam-roles/

機能の全体像や対応サービス、有効化の手順は、以下の既報記事で紹介しています。

https://dev.classmethod.jp/articles/iam-role-manager-ga/

統制を考えるうえで押さえておきたいのは、生成されるロールに AWS 管理ポリシー PowerUserAccess がアタッチされる場合があることです。このポリシーの主要なステートメントは、アクションを列挙していません。iam:*organizations:*account:* の3つを NotAction で除外し、Resource* です。つまりこの3つ以外のすべての API を全リソースに許可し、新しい AWS サービスが追加されると自動的に許可対象へ入ります。ほかに iam:CreateServiceLinkedRoleorganizations:DescribeOrganization など一部のアクションを明示的に許可するステートメントがあります。

公式ドキュメントの Manage access to role manager は、SCP で統制する例として3つを示しています。有効化を禁止するもの、Null 条件でロールテンプレート由来のロール作成を一括で拒否するもの、ロールマネージャー以外の経路でのロール作成を拒否するものです。

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_role-manager_enable-use.html

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_role-manager_least-privilege.html

本記事では、有効化そのものを禁止する SCP と、権限の広い PowerUserRoleTemplate 由来のロール作成だけを拒否する SCP を、管理アカウントで作成し、OU にアタッチしました。メンバーアカウントで拒否が成立するかを確かめています。AWS Lambda 関数の作成時にロールマネージャーがどのように動作するかは、IAMの新機能「ロールマネージャ」で Lambda の実行ロール設定を省略してみたで扱っています。

検証内容

管理アカウントで作成した SCP を検証用の OU にアタッチし、配下のメンバーアカウントから AWS CLI で操作しました。

有効化そのものを禁止する

ロールマネージャーの有効化は iam:PutAccountProperties で行い、RoleManager ネームスペースを対象に指定します。公式ドキュメントのサンプル SCP をそのまま使いました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyRoleManagerEnablement",
      "Effect": "Deny",
      "Action": "iam:PutAccountProperties",
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "iam:AccountPropertyNamespaces": "RoleManager"
        }
      }
    }
  ]
}

この状態でメンバーアカウントから有効化を試みると、拒否されました。

$ aws iam put-account-properties --properties RoleManager/Enabled=true

An error occurred (AccessDenied) when calling the PutAccountProperties operation:
User: arn:aws:sts::444455556666:assumed-role/OrganizationAccountAccessRole/role-manager-scp-verify
is not authorized to perform: iam:PutAccountProperties on resource: *
with an explicit deny in a service control policy:
arn:aws:organizations::111122223333:policy/o-exampleorgid/service_control_policy/p-example11111

メッセージには with an explicit deny in a service control policy と拒否元のポリシー ARN が含まれています。そのため、メンバーアカウント側でもどのポリシーで止まったのかを判別できます。

テンプレート単位で拒否する

有効化を許可したまま、作成できるロールをテンプレート単位で制限する SCP の記述方法もあります。条件キー iam:RoleTemplateARN は、先に挙げた Manage access to role manager の SCP 例でも使われています。ただし、3つの例のうち、テンプレートを指定して制限するものはありません。ここでは、StringLike 条件で PowerUserRoleTemplate にだけ一致するよう指定しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyPowerUserRoleTemplate",
      "Effect": "Deny",
      "Action": "iam:*",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "iam:RoleTemplateARN": "arn:aws:iam::aws:role-template/iam.amazonaws.com/PowerUserRoleTemplate*"
        }
      }
    }
  ]
}

この SCP を適用した状態で、aws iam acquire-role --template-arn <テンプレートの ARN> を3パターン実行しました。

呼び出したテンプレート 結果
PowerUserRoleTemplate:1 AccessDenied
PowerUserRoleTemplate-v1 AccessDenied
AWSSecretsManagerRotationRoleTemplate:1 成功(ロール作成)

上2行は同じテンプレートを別の表記で指定したものです。エラーメッセージには、AcquireRole ではなく、内部で実行される iam:CreateRole が拒否されたことが示されます。次は PowerUserRoleTemplate:1 を指定したときのメッセージです。

An error occurred (AccessDenied) when calling the AcquireRole operation:
User: arn:aws:sts::444455556666:assumed-role/OrganizationAccountAccessRole/rm-template-scp-verify
is not authorized to perform: iam:CreateRole on resource: role/PowerUserRole
with an explicit deny in a service control policy:
arn:aws:organizations::111122223333:policy/o-exampleorgid/service_control_policy/p-example22222

この SCP は PowerUserRoleTemplate を指定した呼び出しを拒否します。このテンプレートは Elastic Beanstalk、EventBridge、Lambda、Step Functions で共有されているため、iam:RoleTemplateARN だけではサービス単位の切り分けはできません。対応関係は IAM ユーザーガイドのロールテンプレート一覧に記載されています。

SCP の末尾のワイルドカードは、CloudTrail に記録される PowerUserRoleTemplate-v1 と、生成されたロールの SourceRoleTemplate やドキュメントに示される PowerUserRoleTemplate:1 の両方に一致します。両者は同じ TemplateVersionId を返す、同一のテンプレートバージョンです(関連記事での実測)。

バージョンは2026年8月時点のものです。PowerUserRoleTemplateAWSSecretsManagerRotationRoleTemplate はいずれも :1PowerUserAccess は v12 です。

AWSSecretsManagerRotationRoleTemplate 由来のロールには、管理ポリシーではなく SecretRotationPermissionPolicy が付与されていました。このロールでは、シークレットの対象、種類、呼び出し元アカウントを条件で絞っています。一方、PowerUserRoleTemplate で付与される PowerUserAccess の主な許可には、対象リソースや用途を絞る条件がありません。テンプレートごとに権限設計が異なるため、内容を確認して制御対象を決める必要があります。

許可された Secrets Manager 向けロールのポリシー

テンプレートは信頼ポリシーに aws:SourceAccount 条件を設定していました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SecretsManagerPrincipalAccess",
      "Effect": "Allow",
      "Principal": {
        "Service": "secretsmanager.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "444455556666"
        }
      }
    }
  ]
}

インラインポリシーでは、シークレット操作の対象をアカウント内のシークレット ARN に絞っています。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowRotationAccessGeneric",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue",
        "secretsmanager:UpdateSecretVersionStage"
      ],
      "Resource": "arn:aws:secretsmanager:us-east-1:444455556666:secret:*",
      "Condition": {
        "StringEquals": {
          "secretsmanager:resource/Type": "AWS::RDS::DBInstance"
        }
      }
    },
    {
      "Sid": "AllowPasswordGenerationAccessAdmin",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetRandomPassword"
      ],
      "Resource": "*"
    }
  ]
}

まとめ

IAM ロールマネージャーは、有効化そのものを止めるか、テンプレート単位で作成できるロールを選ぶかの2段で統制できます。

ロールマネージャーにより、必要なロールの設定を省略できる開発用アカウントがない場合は、有効化そのものを SCP で禁止する方法がシンプルです。

組織でロールマネージャーの利用を認める場合は、利用を認めるアカウントを専用の例外 OU に配置します。それ以外の OU では、SCP によりロールマネージャーの有効化を原則として禁止します。例外 OU でも、意図せず強い権限を持つロールが利用されることを避けるため、テンプレート単位の制御を検討することをおすすめします。


そのマルチアカウント運用、気合いで支えていませんか

Organizations や Control Tower で土台は作れても、アカウントもポリシーも増えるほど、運用は「詳しい一人」に寄りかかっていく。属人化が限界を迎える前に、組織として回す仕組み=CCoEへ。5,600社の支援から得た立ち上げの型を、無料資料にまとめました。

CCoE総合支援

組織で回す仕組みの資料をもらう

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事