Kiro × AWS Security Agent:作るのもレビューもAIに任せる開発体験をやってみた
目次
はじめに
こんにちは!ベンジャミンの眞木です。
今回は先日下記のブログで紹介したAWS Security Agentのコードレビューを試してみようと思います。
まだ先日のブログをご覧になっていない方、AWS Security Agentってそもそもどういうサービスなの?と思った方は先に先日のブログからご覧いただけると理解しやすいかと思います。
https://benjamin.co.jp/blog/technologies/hands-on-aws-security-agent/
ただコードレビューをするだけではおもしろくないので、今回はAWSが提供する開発用のAIエージェントのKiroを使って開発した簡単なwebアプリケーションをAWS Security Agentにレビューしてもらおうと思います。
セットアップについて
Step 1:AWS Security Agent のセットアップ
まずはエージェントのセットアップから始めていきます。
こちら、最初は先ほどご紹介した先日のブログの「Step 1:AWS Security Agent のセットアップ」と同じ手順で進めます。
Step 2:コードレビュー機能の有効化 & 設定
1.先ほど作成したAgent Spaceを選択し、「コードレビューを有効にする」を選択します。

2.「新規登録を作成」から、Githubを選択して「次へ」を選択します。

3.Githubの画面に遷移するので使用するユーザー名とリポジトリを選択し、「Install & Authorize」を選択します。
今回は「security_agent_demo」というリポジトリを使用します。
なお、AWS Security Agentによるコードレビュー機能は、脆弱性情報が公になるのを防ぐためプライベートリポジトリのみで使用できます。
また、GitHubアプリは1つのGitHubアカウントまたは組織に対して1回しかインストールできません。同じGitHub組織を複数のAWS Security Agentアカウント(異なるAWSアカウント)に接続しようとすると競合が発生します。


4.任意の登録名を入力してGithubアカウントタイプを選択し、「接続」を選択します。

5.一旦、1の画面に戻るので、再度「コードレビューを有効にする」を選択します。
今度は「利用可能な登録」から先ほど登録したGithubの登録名を選択して「次へ」を選択します。

6.接続するリポジトリを選択して「次へ」を選択します。

7.コードレビューを「有効化済み」にして、Code review settingsは「Security requirements and vulnerability findings」を選択し、「接続」を選択します。
ただし、今回はカスタムのセキュリティ要件は特に設定していないので「Security vulnerability findings」だけでも良いです。

8.再度1の画面に戻るので、下部のコードレビューのタブを開き、「有効化済み」になっていれば設定は完了です。

レビュー結果について
では、実際にコードレビューをしてみましょう。
といっても、Githubでプルリクエストを作るだけで勝手にレビューをしてくれます。
今回はKiroに「React+Typescriptでtodo管理のwebアプリケーションを作成してください。」とだけ雑に指示を出してフロントエンドを構築してもらった後に「仮にバックエンド機能を実装してください。」と依頼しました。
ここからはGithubのプルリクエストの画面になります。
KiroがNode.js + Express + SQLiteでバックエンドの機能を作ってくれたのでこれをプルリクエストに入れたところ、すぐにaws-security-agentがレビュー中である旨を返してきます。

数分待つと、APIエンドポイントに認証機能が付いていない旨の指摘が来ました。

あくまでデモとして作っているアプリケーションではありますが、実運用では認証機能が必要になるのでKiroにAWS Security Agentからの指摘をそのまま渡して修正してもらいました。
その修正を再度プルリクエストに入れたところ、下記のように更に指摘が来ました。

要約すると、
・JWTトークンをlocalStorageに保存しており、XSS攻撃で盗まれるリスクがある
・パスワード検証がクライアント側のみで、ブルートフォース攻撃に弱い
・JWT検証時にアルゴリズムが未指定で、トークン偽造が可能
・HTTPエンドポイントがハードコードされており、認証情報が平文で送信される
・トークンの有効期限が7日間で、サーバー側での失効手段がない
といったことを指摘されました。
今回はデモなのでここまでで止めますが、実際の開発プロセスではこのように指摘と修正を繰り返すことでセキュリティ面の抜け漏れを無くしていくことができると感じました。
AWS Security Agentはプレビュー期間中なので注意点があります。
・プレビュー期間中は無料で使用できますが、一般提供開始後は料金が発生する可能性があります。詳細は公式の発表を待とうと思います。
・現在はバージニア北部(us-east-1)のみで使用できます。
まとめ
AWS Security Agentを使ってみて、想像以上の速度と細かさでセキュリティ面の問題点を指摘してくれて驚きました。
AIエージェントを使った開発においてセキュリティ面の懸念は付きものだと思いますが、自動でここまでレビューしてくれると少し懸念が緩和されるように感じます。
気になった方はAWS Security Agentを使ってみてください!
