作成: 2026-06-27 / 対象: Cloudflare Dashboard・Zero Trustの再現手順
health.lunelukkio.comだけをGoogle認証で保護するまでの設定を再現可能な形で整理します。設定はWorkers DashboardとZero Trust Dashboardの二か所に分かれます。中心用語はBuild、Binding、Accessです。Buildはコードを配備し、BindingはWorkerからD1へ名前付きで接続し、AccessはWorkerより手前で本人確認を行います。
Workers & Pages → health-moniter → Settings → Build
| 項目 | 設定値 | 意味 |
|---|---|---|
| Git repository | lunelukkio/health-moniter | デプロイ元 |
| Root directory | /frontend | コマンドを実行する基準 |
| Build command | npm run build | ReactとWorker成果物を生成 |
| Deploy command | npx wrangler deploy -c dist/health_moniter/wrangler.json | 生成された設定で配備 |
| Production branch | main | 本番自動デプロイの対象 |
Storage & databases → D1 / Workers & Pages → health-moniter → Bindings
health-moniter-dbを作成する。ローカルD1はMiniflareがSQLiteとして管理します。ファイル名はD1の識別子に対応するため、database_idを差し替えると同じbinding名でも別のローカルSQLiteを参照します。
Workers & Pages → health-moniter → Domains
| 項目 | 設定 |
|---|---|
| Custom Domain | health.lunelukkio.com |
| workers.dev | workers_dev = false |
| Preview URL | preview_urls = false |
Zero Trust → Settings → Authentication / Access → Applications
| 項目 | 設定 |
|---|---|
| Identity provider | Googleのみ |
| Application | Self-hosted health-moniter |
| Destination | health.lunelukkio.comのみ |
| Policy | 名前: Only me、Action: Allow、Include selector: Emails、Value: 本人のGoogleメールアドレス1件 |
| Authentication | Accept all identity providers: Off、Googleのみ、Instant authentication: On |
| Session Duration | 24 hours |
Only meは表示名ですが、実際のAllow条件はInclude selectorのEmailsで、本人のGoogleメールアドレス1件だけが指定されています。本ノートには実際のアドレスを記載しません。| 確認 | 期待結果 | 判定 |
|---|---|---|
| custom domainへ未認証アクセス | Accessログインへ302 | 確認済み |
| Google認証後 | health-moniterが表示される | 確認済み |
| 旧workers.dev | 公開されず404 | 確認済み |
| 別Googleアカウント | Emails条件に一致せず拒否される | 設定確認済み。別アカウントでの実試験は未実施 |
通常のWebアクセスで第三者がWorkerコードを書き換えることはできません。主要な残存リスクはCloudflare/GitHubアカウントの侵害、デプロイトークンの流出、依存パッケージの供給網です。多要素認証、最小権限トークン、依存更新レビューを継続します。
確信度: 高。設定値は2026-06-27の実作業と疎通確認に基づく。Cloudflareの画面名称は変更される可能性があるため、見つからない場合は同じ機能名でDashboard内を検索する。