![[アップデート] Kiro Web のサンドボックスに IAM ロールを設定して AWS リソースへアクセスできるようになりました](https://images.ctfassets.net/ct0aopd36mqt/4uTbTE9O9jUJCOs80dZ0Ao/e2da592b5eaaad0f5993d6ff64a12467/aws-kiro.png?w=3840&fm=webp)
[アップデート] Kiro Web のサンドボックスに IAM ロールを設定して AWS リソースへアクセスできるようになりました
いわさです。
Kiro Web ではエージェントはサンドボックス内でタスクを実行します。
デフォルトで AWS CLI もインストールされていて便利ではあったのですが、これまで AWS リソースを操作したい場合はサンドボックスに AWS の認証情報を渡す必要がありました。
サンドボックスの環境変数でAWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY を登録する方法しかなく、IAM ユーザーの長期クレデンシャルを使う必要がありました。
長期クレデンシャルはローテーションの管理が必要ですし、できれば使いたくないという方も多かったと思います。
これが先日のアップデートで、Kiro Web のサンドボックスに IAM ロールを設定できるようになりました。
エージェントや CLI ツール、MCP サーバーすべてがこの認証情報を使って AWS リソースにアクセスでき、タスク完了後に認証情報は自動で削除されるようです。
The sandbox receives short-lived credentials that the agent, CLI tools, and MCP servers can all use to interact with your AWS resources. Credentials refresh automatically while the task runs and are removed when it completes.
これで IAM アクセスキーを使わなくてよくなりますね。ありがてえ。
なお、同じアップデートで Figma、Stripe、Supabase などサードパーティサービスへの認証フローも標準化されたようです。
今回は IAM ロールの設定を確認してみたので紹介します。
IAM ロールを設定してみる
Settings > Agent > Sandbox の画面を開くと、下の方に「AWS Credentials」というセクションが追加されています。
「+ IAM Role」ボタンから設定を追加できます。
これまではその上の「Secrets」にアクセスキーとシークレットを設定していたんですよね。

「+ IAM Role」を押すと「Add IAM Role」ダイアログが表示されます。
ここに IAM ロールの ARN を入力します。
ダイアログには信頼ポリシーのサンプルも表示されています。

信頼ポリシーの内容を確認してみましょう。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "q.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "d-906615e692.0408d418-60d1-700f-46bd-c1762b1db782"
}
}
}
]
}
Principal が q.amazonaws.com サービスで、Condition に sts:ExternalId が指定されています。
ダイアログ内に「The ExternalId limits the role to only be assumed by your Kiro account.」と記載されているとおり、この ExternalId は自分の Kiro アカウント固有の値ですね、d-xxxxの部分は IAM Identity Center のインスタンスIDで、それに続く UUID は私のユーザーIDです。
つまり、自分がサインインした Kiro Web のセッション以外からはこの IAM ロールを AssumeRole できないということになります。セキュリティ上も良さそうです。
IAM ロールを作成する
AWS マネジメントコンソールの IAM で、上記の信頼ポリシーを使ってロールを作成します。
「カスタム信頼ポリシー」を選択して、Kiro Web で表示されたポリシーをそのまま貼り付けます。

許可ポリシーは用途に応じて設定します。今回は動作確認が目的なので、Lambda の読み取り権限があるポリシーを付与しました。
Kiro Web にロールを登録する
作成した IAM ロールの ARN を Add IAM Role ダイアログに入力して Save します。

保存すると、AWS Credentials セクションに「default」という名前でロールが登録されます。
Secrets に登録していた AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY はもう不要なので削除しました。

動作確認
IAM ロール経由で AWS アカウントにアクセスできるか確認してみます。
エージェントに「AWS CLI で AWS アカウントにアクセスし、適当な Lambda 関数1件の情報を確認してください。」と依頼してみました。

Lambda 関数の情報を取得できています。
検証用の Lambda 関数の取得自体に意味はないのですが、IAM ロールがアクセスできるアカウントのリソースを操作できていることが確認できました。
さいごに
本日は Kiro Web のサンドボックスに IAM ロールを設定して AWS リソースへアクセスできるようになったアップデートを確認してみました。
これまで Secrets に IAM アクセスキーを登録する必要があったのですが、IAM ロールを使えるようになったことで長期クレデンシャルの管理から解放されます。
信頼ポリシーの ExternalId で自分の Kiro アカウントからしか AssumeRole できないので、不要なアクセス経路も生まれません。
Kiro Web で AWS 操作をしている方は全員コレに切り替えたほうがいいですね。







