GenU とデジタル庁の「源内」を比べて、社内の IP だけで使う構成を考えた

AWS に作った社内文書チャット(GenU)の構成図を作り直し、デジタル庁がオープンソースで公開している「源内」と比べました。比べて分かったのは、私の環境の画面がインターネットに公開されていることです(使うにはログインが必要です)。そこで、社内の IP アドレスからだけ使えるようにする構成を、イメージ図にしました。

まとめ:Claude Code で AWS に社内文書チャットを作る まとめ

構成図:GenU が作る範囲を枠で囲んだ

GenU + Bedrock Knowledge Bases + S3 Vectors + MCP チャットの構成図

最初に作った構成図は、どこまでが GenU(AWS が公開している、生成 AI のチャット画面などを自分の AWS に作れるサンプル)で、どこからが自分で用意したものか分かりにくい図でした。そこで、GenU が cdk deploy(設定ファイルどおりに AWS の部品を一括で作るコマンド)で作る部品を、オレンジの点線の枠で囲みました。

区分部品
GenU が作る(枠の中)画面の配信(CloudFront・S3)、ログイン(Cognito)、API(API Gateway・Lambda)、会話の履歴(DynamoDB)、文書の検索(Knowledge Bases)、検索用データ(S3 Vectors)、社内文書の置き場所(S3)、MCP チャット用の Lambda
GenU は作らない(枠の外)答える AI と文書を数値に変える AI(Bedrock のモデル。AWS が用意したものを呼び出すだけ)、予算の通知(Budgets。手で作成)、利用者・管理者

枠の線は、資料からの推測ではなく、実際に AWS に作られた部品の一覧(CloudFormation のスタック)を Claude Code に読んでもらって決めました。

GenU が cdk deploy で作った部品を、AWS の CloudFormation のスタックから一覧にして。
構成図の部品を「GenU が作るもの」と「それ以外」に分けて、根拠になったスタック名も書いて。

源内と比べた

源内は、デジタル庁が政府の職員向けに作った生成 AI の利用環境です。一部が GitHub で公開されています。画面の本体(genai-web)は GenU をもとに作られたもの、とクラスメソッドの記事で紹介されています。

同じところ

  • AWS CDK(AWS の部品をコードで作る道具)で作る
  • ログインは Cognito、答える AI は Bedrock
  • 画面は CloudFront で配信し、API は API Gateway と Lambda

違うところ

  • 文書検索(RAG)や MCP チャットは載っていない:私が動かした Knowledge Bases・S3 Vectors・MCP チャットは、源内にはありません。代わりに、別に作った AI アプリを REST API(決まった形式でデータをやり取りする窓口)でつなぐ仕組みになっています。AI アプリのひな形は AWS・Azure・Google Cloud の3種類が公開されています
  • 組織で使うための機能が多い:権限の3区分(システム管理者・チーム管理者・利用者)とチームごとの管理、SAML(会社の ID でログインする仕組み)への対応、データの暗号化などが加わっています
  • 機能を絞っている:GenU にある要約・議事録・動画生成などは削られています

画面はインターネットに公開されていた

源内のコードを読むと、接続元の IP アドレスを制限する設定 allowedIpV4AddressRanges があり、設定のひな形では null(制限しない)になっていました。GenU にも同じ名前の設定があります。

私の環境の cdk.json を見ると、この設定は null のままでした。つまり、画面の URL を知っていれば、どこからでもログイン画面までは開けます。

ただし、使うにはログインが必要です。自分でアカウントを作る機能はオフで、ログインせずに API を呼ぶと 401(認証が必要)が返ることを確認しています。

社内の IP だけにする構成(イメージ)

WAF で社内の IP だけ許可する構成のイメージ

GenU のコードを Claude Code に読んでもらうと、allowedIpV4AddressRanges に社内の IP アドレスの範囲を入れて再デプロイするだけで、GenU が WAF(決めた条件以外の通信を止める仕組み)を3か所に付けることが分かりました。

入口WAF
画面(CloudFront)付く(バージニア北部リージョンに作られる)
ログイン(Cognito)付く
質問の受け付け(API Gateway)付く
MCP チャット(Lambda の URL)付かない

設定は cdk.json の1行です(IP アドレスは説明用の例です)。

"allowedIpV4AddressRanges": ["203.0.113.0/24"]

社内以外の IP アドレスからのアクセスは、WAF で止められます(403 が返ります)。

MCP チャットの入口だけは WAF が付かない

コードを読んで分かった注意点です。MCP チャット(AWS の公式ドキュメントを調べて答える機能)は、画面から Lambda の URL を直接呼ぶ作りでした。Lambda の URL には WAF を付けられません。

ただし、この URL は、ログインして受け取った一時的な鍵が無いと呼べません。ログインには WAF が付くので、社外からいきなり使われることはありません。一方で、IP アドレスでは止まらない入口が1つ残る、という点は知っておく必要があります。なお、GenU の資料では MCP チャットは「Deprecated(今後は推奨しない)」になっています。

費用の見込み

WAF の料金は、Web ACL(WAF の設定のまとまり)1つにつき月5ドル、ルール1つにつき月1ドル、リクエスト100万件につき0.6ドルです。GenU では Web ACL が2つ(画面用と、ログイン・API 用)作られるので、見込みは月12ドル程度です。今の検証環境の費用(2026-10-17 時点で1.13ドル)と比べると、大きな割合になります。

まだ設定はしていません。社内の人に配るときに設定する予定です。

頼み方

GenU の画面を、社内の IP アドレスからだけ使えるようにしたいです。
まだ設定は変えないでください。
1. GenU のコードを読んで、IP 制限の設定を入れると WAF がどこに付くか、付かない入口はあるかを一覧にして
2. 月の費用の見込みを、料金ページの出典付きで出して
3. 変える設定ファイルの行を見せて。デプロイは私が OK してから

出典(確認日:2026-10-17)

前回:AWS の構築を Claude Code に任せるときの線引き

コメント

タイトルとURLをコピーしました