「Vercel自体が危険」
営業的な単純化Vercelはプラットフォーム全体でDDoS対策やFirewallを提供しています。危険なのはVercelを使うことではなく、公開したアプリの認証・入力検証・権限設定を決めないことです。Vercel自身も、アプリ・ユーザーアクセス・環境変数の管理は顧客側の責任だと説明しています。
AI × 公開範囲 × SECURITY
公開ボタンは押せます。でも「社内向け」は、URLを作ることではありません。誰が入れるか、何を読めるか、どこまで使えるかを決めることです。
提示された説明には、正しい注意喚起と、サービス契約へ誘導しやすい言い切りが混ざっています。分けて読むと、必要な対策が見えてきます。
Vercelはプラットフォーム全体でDDoS対策やFirewallを提供しています。危険なのはVercelを使うことではなく、公開したアプリの認証・入力検証・権限設定を決めないことです。Vercel自身も、アプリ・ユーザーアクセス・環境変数の管理は顧客側の責任だと説明しています。
インターネットに公開された時点で、発見・スキャンされる前提に変わります。CISAも、公開状態の資産や古いソフトウェア、初期パスワードなどが攻撃対象になりやすいとして、外部から見える資産の棚卸しを勧めています。秘密のURLは、認証ではありません。
ブラウザへ送った値は、利用者が開発者ツールで読めます。Next.jsでは NEXT_PUBLIC_ で始まる環境変数がブラウザ用JavaScriptへ埋め込まれます。公開してよい識別子もありますが、LLM・決済・データベースの秘密鍵を同じ場所へ置いてはいけません。「環境変数にした」だけでは十分ではありません。
誰でも呼べるAPIが毎回有料のLLMを呼ぶなら、第三者の連続利用やバグによって料金が増える可能性があります。OWASPも、APIには回数・入力サイズ・処理量の制限と、外部サービスの支出上限を設けるよう勧めています。VercelのWAFにもレート制限はありますが、プロジェクト側で設定して初めて働く対策です。
古い・サポート切れ・脆弱性のある依存関係を放置するのは危険です。OWASPは、使用中のバージョンを把握し、脆弱性情報を監視し、リスクに応じて更新する継続的な運用を求めています。ただし「最新なら無条件に安全」ではありません。更新前後の動作確認と、戻せる手順も必要です。
企業SaaSは通常、基盤の更新・監視・障害対応を運用します。しかし、契約だけで自作アプリの認証やデータの扱いまで安全になるわけではありません。「誰が、どの範囲を、何時間以内に直すのか」を確認せず、保守という言葉だけで判断しないことが大切です。
クラウドでは、サービス提供者と利用者が分担して守ります。ここを一つの「安全/危険」にまとめると、見落としが起きます。
DDoS緩和、ネットワーク、実行基盤、プラットフォームのアップデートなど。
Deployment Protection、Firewallのルール、レート制限、支出アラートなど。設定しない機能は効きません。
ログイン、ユーザーごとの権限、入力検証、データベースの公開範囲、APIの処理量。
秘密鍵のローテーション、依存関係の更新、ログ確認、障害時の停止・復旧、担当者の引き継ぎ。
「社内向け」は、社員だけが見られるように認証と権限を設計した状態です。会社名を画面に書くこと、URLを共有しないこと、検索に出ないようにすることは、アクセス制御の代わりになりません。
全部を完璧にする必要はありません。ただし、次の項目を「誰が確認したか」まで決められないなら、公開はまだ早い状態です。
NEXT_PUBLIC_ は公開値専用。漏えいした鍵は削除・再発行します。Deployment Protectionは、設定した保護範囲にだけ効きます。Vercelの公式説明では、HobbyプランのStandard ProtectionはプレビューやデプロイURLを保護しますが、本番ドメインは公開のままです。本番まで閉じる設定やプラン条件は、公開前に公式ドキュメントで確認してください。
「作れる」ことと「公開してよい」ことは別です。次のどれに当たるかを、作った本人だけでなくデータの持ち主と決めます。
公開して問題のないデータだけを扱い、認証・入力制限・ログ・依存関係の更新担当が決まっている。料金上限も確認済み。
社内限定なのに認証がない、LLMを呼ぶのに回数制限がない、プレビューURLが誰でも開けるなど、対策が一つ欠けている。
個人情報・顧客情報・機密資料を扱うのに権限設計がない、漏れた秘密を無効化できない、停止・復旧の担当者がいない。
このアプリを公開する前に、次を調べて表にしてください。
1. 公開されるページとAPIの一覧
2. ログイン・ユーザーごとの権限チェックの場所
3. ブラウザへ送られる環境変数と、秘密情報の候補
4. 回数・入力サイズ・同時実行数・外部API料金の上限
5. 依存関係のバージョンと、既知の脆弱性を確認する方法
6. ログに個人情報や秘密が残らないか
7. 停止・再デプロイ・前の版へ戻す手順
不足があればコードを変更せず、先にリスクと確認事項を説明してください。Claude Codeはコードの候補を作れますが、「この社員にこのデータを見せてよいか」「月いくらまで使ってよいか」「事故時に誰が止めるか」は決めません。そこを人が決めて初めて、社内向けアプリになります。