Kiro Webから別AWSアカウントへスイッチロールできるか検証してみた[できた]

Kiro Webから別AWSアカウントへスイッチロールできるか検証してみた[できた]

Kiro Webから別のAWSアカウントのIAM Roleへのスイッチロールはできまぁす!信頼ポリシーにの設定がミソです。
2026.09.07

こんにちは、臼田です。

みなさん、Kiro使ってますか?(挨拶

今回はKiro Webで利用しているAWSアカウントから、別のAWSアカウントのIAM Roleへスイッチロールできるか検証してみました。

結論

Kiro Webに割り当てているIAM Roleから別のIAM Roleへのスイッチロールは可能です!IAM Roleの信頼ポリシーを以下のようにしてあげれば実装できます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "[Kiroに設定したIAM RoleのARN]"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity",
                "sts:TagSession"
            ]
        }
    ]
}

概要

Kiro WebではIAM Roleを設定することでAWS環境へのアクセスが可能です。

https://dev.classmethod.jp/articles/kiro-web-sandbox-service-role/

https://dev.classmethod.jp/articles/update-kiro-web-iam-role-trusted-policy/

ただし、現在この手法では1つのIAM Roleしか設定できません。ドキュメントはこちら

しかし我々は知っています。1つのIAM Roleから複数のIAM Roleを利用する方法を。

そう、スイッチロール(Assume Role)です!

というわけで好奇心を抑えられず実現可能か試してみました。

やってみた

まず既存でKiro WebにIAM Roleが設定されている状態です。

001_kiro_web_switchrole

この状態で、スイッチロールしたいAWSアカウントにIAM Roleを作成します。

権限はReadOnlyでもAdministratorAccessでも好きなものを選ぶとよいと思いますが、信頼ポリシーは以下の内容である必要があります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "[Kiroに設定したIAM RoleのARN]"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetSourceIdentity",
                "sts:TagSession"
            ]
        }
    ]
}

002_kiro_web_switchrole

通常のスイッチロールではsts:AssumeRoleの許可だけで済むことが多いですが、Kiro WebではSourceIdentityとセッションタグ(transitiveTagKeys)が自動伝播するため、sts:SetSourceIdentitysts:TagSessionも含めて3つのActionをスイッチ元・スイッチ先の両方で許可する必要があります。

設定したらKiro Webから実行してみましょう。せっかくなのでプレビュー中のiOS版から使ってみます。以下のように指示をして…

003_kiro_web_switchrole

以下のように成功しました。

004_kiro_web_switchrole

これで複数のAWSアカウントでいろんな事をKiroと一緒にできますね!

失敗した行程

最初は普通のスイッチロールと同じ感じで行けるかと思ってsts:AssumeRoleのみで検証していました。その際のエラーメッセージを置いておきます。

1回目

ただのsts:AssumeRoleのみ、sts:SetSourceIdentityが足りないと言われる。

An error occurred (AccessDenied) when calling the AssumeRole operation:
User: arn:aws:sts::999999999999:assumed-role/TestRole/d-1234567890.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
is not authorized to perform: sts:SetSourceIdentity on resource: arn:aws:iam::888888888888:role/TestRole

2回目

sts:AssumeRolests:SetSourceIdentityのみ、sts:TagSessionが足りないと言われる。

An error occurred (AccessDenied) when calling the AssumeRole operation:
User: arn:aws:sts::999999999999:assumed-role/TestRole/d-1234567890.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
is not authorized to perform: sts:TagSession on resource: arn:aws:iam::888888888888:role/TestRole

まとめ

Kiro Webからスイッチロールして設定されたIAM Roleとは別のAWSアカウントのIAM Roleで操作してみました。

現状では複数のAWSアカウントのIAM Roleを設定できないので、代わりにこの方法で複数のAWSアカウントを活用していきましょう!

この記事をシェアする

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

関連記事