![Kiro Webから別AWSアカウントへスイッチロールできるか検証してみた[できた]](https://images.ctfassets.net/ct0aopd36mqt/4uTbTE9O9jUJCOs80dZ0Ao/e2da592b5eaaad0f5993d6ff64a12467/aws-kiro.png?w=3840&fm=webp)
Kiro Webから別AWSアカウントへスイッチロールできるか検証してみた[できた]
こんにちは、臼田です。
みなさん、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環境へのアクセスが可能です。
ただし、現在この手法では1つのIAM Roleしか設定できません。ドキュメントはこちら。
しかし我々は知っています。1つのIAM Roleから複数のIAM Roleを利用する方法を。
そう、スイッチロール(Assume Role)です!
というわけで好奇心を抑えられず実現可能か試してみました。
やってみた
まず既存でKiro WebにIAM Roleが設定されている状態です。

この状態で、スイッチロールしたい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"
]
}
]
}

通常のスイッチロールではsts:AssumeRoleの許可だけで済むことが多いですが、Kiro WebではSourceIdentityとセッションタグ(transitiveTagKeys)が自動伝播するため、sts:SetSourceIdentityとsts:TagSessionも含めて3つのActionをスイッチ元・スイッチ先の両方で許可する必要があります。
設定したらKiro Webから実行してみましょう。せっかくなのでプレビュー中のiOS版から使ってみます。以下のように指示をして…

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

これで複数の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:AssumeRoleとsts: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アカウントを活用していきましょう!







