Cloudflare Zero Trust
OK、完全コピペで動く版を作りました。
👉 上から順に貼り付ければ Zero Trust付きSaaSの土台が完成します。
■ 🧩 コピペ用フルコマンド(Windows / Mac共通)
# =========================
# ① プロジェクト作成
# =========================
npm create cloudflare@latest zero-trust-saas
# ※選択
# Hello World Worker
# TypeScript
# Deploy → No
cd zero-trust-saas
npm install
# =========================
# ② Cloudflareログイン
# =========================
npx wrangler login
# =========================
# ③ D1データベース作成
# =========================
npx wrangler d1 create saas-db
# ↓ 出力された database_id をメモ
# =========================
# ④ wrangler.toml編集
# =========================
# 手動で開く(VSCode or メモ帳)
# ↓ これを追加
# [[d1_databases]]
# binding = "DB"
# database_name = "saas-db"
# database_id = "ここに貼る"
# =========================
# ⑤ schema.sql作成
# =========================
echo CREATE TABLE users (id TEXT PRIMARY KEY, email TEXT UNIQUE, plan TEXT DEFAULT 'free', created_at TEXT DEFAULT CURRENT_TIMESTAMP); > schema.sql
# =========================
# ⑥ D1にテーブル反映
# =========================
npx wrangler d1 execute saas-db --file=schema.sql
# =========================
# ⑦ Workersコード書き込み
# =========================
# src/index.ts を開いて全置換
# =========================
# ▼ここからコピペ▼
export default {
async fetch(request, env) {
const email = request.headers.get("cf-access-authenticated-user-email")
if (!email) {
return new Response("Unauthorized", { status: 401 })
}
let user = await env.DB.prepare(
"SELECT * FROM users WHERE email = ?"
).bind(email).first()
if (!user) {
const id = crypto.randomUUID()
await env.DB.prepare(
"INSERT INTO users (id, email, plan) VALUES (?, ?, ?)"
).bind(id, email, "free").run()
user = { id, email, plan: "free" }
}
return Response.json(user)
}
}
# ▲ここまでコピペ▲
# =========================
# ⑧ デプロイ
# =========================
npx wrangler deploy
# ↓ 表示されるURLをコピー
# https://xxxx.workers.dev
# =========================
# ⑨ ローカルテスト(任意)
# =========================
npx wrangler dev
■ 🔐 Zero Trust設定(手動・必須)
-
Cloudflare ダッシュボードへ