![[アップデート]Kiro WebのIAM Role設定で信頼ポリシーが更新されていたので動作確認してみた](https://images.ctfassets.net/ct0aopd36mqt/4uTbTE9O9jUJCOs80dZ0Ao/e2da592b5eaaad0f5993d6ff64a12467/aws-kiro.png?w=3840&fm=webp)
[アップデート]Kiro WebのIAM Role設定で信頼ポリシーが更新されていたので動作確認してみた
こんにちは、臼田です。
みなさん、Kiro使ってますか?(挨拶
今回はKiro WebとIAM Roleの連携で信頼ポリシーが更新されていたので、これを試すとともに、実際Kiro WebからAWSの操作を行った際のログも見ていきます。
概要
先日Kiro WebからIAM Roleを呼び出すことができるようになりました。
従来Kiro Webは、AWS環境へアクセスしたい場合にはIAM Userのアクセスキーを環境変数に持たせておくなど、AWSと直接連携する機能がなくたいへんでした。
この機能はまさにKiro WebからAWSを操作するためのベストな手法となりました。
私もこの設定を行おうとしたところ、設定画面上で信頼ポリシーが更新されていることを確認したので、その動作確認を行いました。

やってみた
まず最初に、旧来のIAM Roleの信頼ポリシーで動作を見てみたいと思いました。
IAM Role作成
というわけでその状態のIAM Roleを作成していきます。
まずはIAMのマネジメントコンソールにアクセスし、IAM Roleの作成を開始します。

「カスタム信頼ポリシー」で以下のような内容を入力します。※ sts:ExternalIdは環境に合わせ置き換えます
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "q.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "d-xxxxxxxxxx.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
]
}

続いて権限をアタッチします。今回はReadOnlyAccessを選択します。

適当なRole名を付けて作成します。

作成が完了したら詳細画面を開きます。

IAM RoleのARNを控えます。

これで準備は完了です
旧方式の設定
Kiro WebのSettings画面から設定を行います。
IAM RoleのARNを入力し保存します。

しかし残念ながら下記エラーとなり設定できませんでした。
Error
IAM role cannot be assumed by Kiro. Verify your trust policy.
というわけで、新規にKiro WebにIAM Roleを設定する場合には、新しい信頼ポリシーでないと行けないようです。

新しい信頼ポリシーでの設定
さて、新しい信頼ポリシーはどのようになっているのでしょうか?フォーマットは以下のようになっています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "q.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:SetSourceIdentity"
],
"Condition": {
"StringEquals": {
"sts:SourceIdentity": "<your-kiro-userId>"
}
}
},
{
"Effect": "Allow",
"Principal": {
"Service": "q.amazonaws.com"
},
"Action": "sts:TagSession",
"Condition": {
"ForAllValues:StringEquals": {
"aws:TagKeys": [
"GroupIds",
"KiroSessionId"
]
}
}
}
]
}
主に以下の違いがあります。
- AssumeRole時のConditionが
sts:ExternalIdからsts:SourceIdentityに変わった sts:SetSourceIdentityも許可をする必要があるsts:TagSessionのAction許可も必要GroupIds/KiroSessionIdタグのみ許可されている
sts:SourceIdentityを使うことで、ソースIDを参照して制御し、CloudTrailにソースIDが記録されたり、ロールをさらに引き継いだ際にもソースIDを継承するなどより厳密な管理と監査が可能になっています。また、タグの情報も増えてよりCloudTrailから辿れる情報が増えています。
引き受けたロールで実行されるアクションのモニタリングと制御 - AWS Identity and Access Management
ではこちらのフォーマットで設定しましょう。Kiro Webの設定画面から直接設定をコピーし、IAM Roleの信頼ポリシーを変更します。

改めて登録することで、今度は設定が反映されました。

CloudTrailのログ
Kiro Webから実行された操作のCloudTrailログがどのようになっているか確認しました。
下記はS3のListBucketsを実行した際のログです。sourceIdentityが含まれていることや、invokedByなどでq.amazonaws.comから呼ばれていることがわかります。
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXXXXXXXXXXXXXXXXX:d-xxxxxxxxxx.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"arn": "arn:aws:sts::123456789012:assumed-role/KiroWebReadOnlyRole/d-xxxxxxxxxx.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"accountId": "123456789012",
"accessKeyId": "ASIAXXXXXXXXXXXXXXXX",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXXXXXXXXXXXXXXXXX",
"arn": "arn:aws:iam::123456789012:role/KiroWebReadOnlyRole",
"accountId": "123456789012",
"userName": "KiroWebReadOnlyRole"
},
"attributes": {
"creationDate": "2026-08-07T08:14:27Z",
"mfaAuthenticated": "false"
},
"sourceIdentity": "d-xxxxxxxxxx.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
},
"invokedBy": "q.amazonaws.com"
},
"eventTime": "2026-08-07T08:14:36Z",
"eventSource": "s3.amazonaws.com",
"eventName": "ListBuckets",
"awsRegion": "us-east-1",
"sourceIPAddress": "q.amazonaws.com",
"userAgent": "q.amazonaws.com",
"requestParameters": {
"Host": "s3.us-east-1.amazonaws.com"
},
"responseElements": null,
"additionalEventData": {
"SignatureVersion": "SigV4",
"CipherSuite": "TLS_AES_128_GCM_SHA256",
"bytesTransferredIn": 0,
"AuthenticationMethod": "AuthHeader",
"httpStatusCode": 200,
"bytesTransferredOut": 2035
},
"requestID": "XXXXXXXXXXXXXXXX",
"eventID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"readOnly": true,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "123456789012",
"eventCategory": "Management"
}
ちなみに、マネジメントコンソール上でフィルターをかけて調べる場合には、ユーザー名にd-xxxxxxxxxx.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx部分を入れると探しやすいです。
まとめ
Kiro Webと連携するIAM Roleの設定を、新しい信頼ポリシーで設定してみました。
リリース当初より、管理や監査がやりやすくなっていて良いですね。
既存で設定した環境の更新が必要かは確認できなかったですが、少なくとも新しく設定する場合には古い信頼ポリシーは使えないので気をつけましょう。








