
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 ci は package-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.json の context を編集して 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)を有効化して、社内ドキュメントを検索できる状態を作ってみる。