ankuro.dev
← ブログ一覧に戻る
GenUをCDKでデプロイしてアクセス制御してみた
2026-03-11#AWS#GenU#CDK#Bedrock#Cognito#WAF

GenUをCDKでデプロイしてアクセス制御してみた

GenUとは

GenU(Generative AI Use Cases JP) は、AWSが公開しているOSSの生成AIプラットフォームだ。

チャット・要約・翻訳・議事録生成・画像生成など、業務でよく使われるユースケースが最初から揃っている。RAGやエージェント機能も設定で有効化できる。社内AIツールとして展開したり、自社サービスのベースとして使ったりすることを想定して作られている。


構築環境

  • OS: Windows 11
  • Node.js: v18以上
  • AWS CLI: 設定済み
  • IAMユーザー: AdministratorAccess権限が必要

デプロイ手順

1. リポジトリをクローン

git clone https://github.com/aws-samples/generative-ai-use-cases-jp.git
cd generative-ai-use-cases-jp
npm ci

npm cipackage-lock.json の内容を厳密に再現してパッケージをインストールするコマンドだ。npm install と異なり、lockファイルを書き換えないため、環境の再現性が高い。

2. CDKブートストラップ(初回のみ)

cd packages/cdk
npx cdk bootstrap

CDKがAWSにデプロイするための準備をするコマンド。S3バケットやIAMロールが自動で作成される。初回のみ実行すれば良い。

3. デプロイ

npx cdk deploy --all

20〜30分ほどかかる。完了するとCloudFormation → GenerativeAiUseCasesStack にスタックが作成され、出力タブにアクセス用のURLが表示される。


アクセス制御

GenUのアクセス制御は packages/cdk/cdk.jsoncontext を編集して cdk deploy --all を再実行するだけで変更できる。

パターン①:制限なし(デフォルト)

"selfSignUpEnabled": true,
"allowedSignUpEmailDomains": null,

URLを知っていれば誰でもアカウント作成・ログインができる状態。検証用途では問題ないが、社内展開では制限が必要。

パターン②:Cognitoコンソールから手動登録のみ

"selfSignUpEnabled": false,

セルフサインアップを無効化する。管理者がAWSコンソール(Cognito)から手動でユーザーを追加する運用になる。

追加コスト:なし

パターン③:メールドメイン制限

"selfSignUpEnabled": true,
"allowedSignUpEmailDomains": ["example.co.jp"],

指定したメールドメインのみサインアップを許可する。社内ドメインを指定すれば、社員だけが自己登録できる状態になる。

追加コスト:なし

実際に yahoo.co.jp で登録しようとすると PreSignUp failed with error Invalid email domain. というエラーになった。

パターン④:IP制限(WAF)

"allowedIpV4AddressRanges": ["xxx.xxx.xxx.xxx/32"],

指定したIPアドレスからのみアクセスを許可する。裏側でAWS WAFが自動作成され、CloudFrontの手前でIPチェックが行われる。

許可外のIPからアクセスすると Request not allowed due to WAF block. というエラーになる。オフィスの固定IPやVPNのIPを指定すれば、許可した拠点からのみアクセス可能にできる。複数IPを配列で指定することもできる。

追加コスト:WAF WebACL $5/月 + ルール $1/月 = 約$6/月〜


アクセス制御の比較

方式 設定 追加コスト 向いているケース
制限なし デフォルト なし 個人検証
手動登録のみ selfSignUpEnabled: false なし 少人数・厳密管理
ドメイン制限 allowedSignUpEmailDomains なし 社内ドメインで制限
IP制限 allowedIpV4AddressRanges 約$6/月〜 オフィスIPのみ許可

コスト感(RAGなし)

RAGを使わない構成であれば、固定費はほぼかからない。

  • Lambda・API Gateway・DynamoDB・S3・Cognito:従量課金(使った分だけ)
  • Bedrock APIコール:使った分だけ
  • WAF(IP制限時のみ):約$6/月〜

RAGを有効化する場合は別途コストがかかるため、次の記事で解説する。


まとめ

GenUはcdk.jsonの設定変更だけでアクセス制御を柔軟に変えられる。社内展開を検討する際の第一歩として、まずデプロイして各パターンを試してみることをおすすめする。

次回はRAG(Bedrock Knowledge Base)を有効化して、社内ドキュメントを検索できる状態を作ってみる。