コンテンツにスキップ

Claude CodeでWorkersのサイトにCloudflare Accessをかけて許可した人だけに見せる

公開したサイトを、全員には見せたくないことがある。作りかけを関係者だけに見せたい。家族や仲間うちのページを作った。自分だけが開ける道具を置きたい。

この記事では、見せてよい人のメールアドレスを Cloudflare に登録し、その人だけを通す。仕組みは Cloudflare Access という Cloudflare の機能。サイトを開こうとした人に Cloudflare がログイン画面を出し、メールに届いたコードで本人確認をしてから通す。

書くコードは1行もない。設定は Cloudflare のダッシュボードで行う。

Access がやることは、2つの設定の組み合わせで決まる。

  1. 名簿を作る。入ってよい人のメールアドレスを並べたもので、Cloudflare では「ポリシー」と呼ぶ。名簿はいくつでも作れる
  2. サイトごとに、どの名簿の人を通すかを選ぶ。1つのサイトに名簿を2つ以上選んでもよく、どれか1つに載っていれば通れる

サイトを開いた人は、まず Cloudflare のログイン画面でメールアドレスを入れ、メールに届いたコードで本人だと示す。そのアドレスが、そのサイトに選ばれた名簿に載っていれば中が見える。載っていなければ、サイトに届く前に Cloudflare が止める。

名簿とサイトは別々に持つ。たとえば「家族」と「親戚」の名簿を作り、家族のアルバムには両方、家計簿には「家族」だけを選ぶ。家族が1人増えたら「家族」の名簿に1行足すだけで、アルバムにも家計簿にも入れるようになる。

左に名簿が2枚(家族の茶トラの猫3匹、親戚の灰色の猫2匹)、右に扉が2つ(アルバムと家計簿)。家族の名簿から両方の扉へ、親戚の名簿からアルバムの扉だけへ矢印。アルバムの扉の前の猫は5匹が載った紙を、家計簿の扉の前の猫は家族の3匹だけが載った紙を持ち、親戚の灰色の猫は家計簿の扉の前で止められている

名簿は「家族」と「親戚」の2つ。アルバムは両方の名簿の人を、家計簿は家族の名簿の人だけを通す

Basic認証でサイトに鍵をかけるでは、合言葉を1つ決めて、知っている人だけを通した。この記事はその次の一歩で、合言葉の代わりに「人」で通す。Cloudflare Access は合言葉方式と比べて、次の点が違う。

合言葉(Basic認証)Cloudflare Access(この記事)
入れる人の決め方合言葉を知っているかメールアドレスで1人ずつ
誰が入ったか区別できないメールアドレスで分かる
1人だけ外すできない(全員の合言葉を変える)ポリシーからその人を消す
書くコード認証の処理(頼めば書いてもらえる)なし
止まる場所自分のサイトの中サイトに届く前(Cloudflare 側)
初回の準備合言葉を Cloudflare に預けるZero Trust の初回設定(カード登録あり)

とくに違うのは「止まる場所」。合言葉方式は、自分のサイトの中で「合っているか」を照合する。Access はサイトに届く前に Cloudflare が止めるので、許可していない人のリクエストはサイトのファイルまで届かない。

無料で50人まで使える(Cloudflare Zero Trust の Free プラン)。身内や関係者に見せる用途なら、まず足りる。

必要な前提は「WranglerでCloudflareに公開する」を終えていること。公開先は Cloudflare Workers。データベースも Git も使わない。

コードは書かないかわりに、Cloudflare の英語の管理画面をいくつも開く。初めて見る言葉も出てくるので、先に表で押さえておく。

言葉意味
Zero TrustCloudflare Access を含む、Cloudflare のサービスのまとまり。最初に一度だけ使い始める手続きをする
One-time PINメールに届く6桁のコードでログインする方式
ポリシー(policy)「誰を通すか」の決まり。この記事では、通してよい人のメールアドレスを並べた名簿
セッション一度ログインしたあと、もう一度聞かれずに入れる状態。既定で24時間続く

1ページだけのサイトを作り、サイト全体に鍵をかける。

public/
└─ index.html 許可した人だけが見られる

サイトを開くと、Cloudflare のログイン画面が出る。

Cloudflare Access のログイン画面。Cloudflare のボタンの下に Email 欄と Send login code ボタン

メールアドレスを入れて Send login code を押すと、そのアドレスに6桁のコードが届く。

Enter your code の画面。コードの入力欄と Verify ボタン

コードを入れると中身が見える。

「メンバー限定ページ」と表示されたページ

このログイン画面は Cloudflare が出すもので、自分では作らない。

鍵をかけるまでに開く画面は、次の4つ。冒頭の「名簿を作る」が5章、「どの名簿の人を通すかを選ぶ」が6章にあたる。

章開く画面用意するものやること
3章Zero Trust の初回(一度だけ)Access を使える状態Free プランを選び、支払い情報を入れる
4章Zero Trust の Identity providersログイン方法One-time PIN(メールに届くコードで本人確認)を足す
5章Zero Trust の Policies名簿(ポリシー)入れる人のメールアドレスを登録する
6章Worker の Access タブどの名簿の人を通すか5章の名簿を選んで、鍵をかける

Finder で作業用のフォルダを新しく作る。たとえば ホーム → claude → my-members-site。

次に Claudeデスクトップアプリを起動し、左上の </> のアイコン(Code)を選択 → 新規 → いま作ったフォルダを指定する(~/claude/my-members-site)。

そこで次のように頼む。

プロンプト
このフォルダに public フォルダを作って、1ページだけの静的サイトを作ってください。
public/index.html に「メンバー限定ページ」と分かる見出しと、短い説明を1行。
凝らなくていい

鍵をかける前に、まず普通のサイトとして公開する。Wrangler のログインは WranglerでCloudflareに公開するで済ませてある前提。

プロンプト
Cloudflare に新しい Worker「my-members-site」を作って、public フォルダの中身を wrangler でデプロイして。
設定ファイル(wrangler.jsonc)も作ってほしい。

公開URLは https://my-members-site.サブドメイン.workers.dev(サブドメインはアカウントごとに決まっている)。開いて、ページが見えることを確かめる。

鍵をかける前に、もう1つ見ておく。

Workers は、デプロイするたびにバージョンごとの URL(Version URL)も作る。https://バージョンIDの先頭8文字-my-members-site.サブドメイン.workers.dev という形で、公開前の確認などに使うためのもの。

プロンプト
いまデプロイしたバージョンの Version URL(プレビュー用の URL)を調べて、
公開URLと Version URL の両方に curl -I でアクセスして、返事のステータスを見せて

どちらも 200 が返る。このサイトには公開URL以外にも入口があり、誰にも教えていない URL でも、知られれば開ける。

この記事のやり方では、この入口もまとめて守られる。6章でかけたあと、同じ確かめ方で見比べる。

3. Zero Trust を使えるようにする(初回だけ)

Section titled “3. Zero Trust を使えるようにする(初回だけ)”

Cloudflare Access は、Cloudflare の Zero Trust というサービスの中の機能。最初に一度だけ、Zero Trust を使い始める手続きをする。2回目以降のサイトでは、この章は飛ばしてよい。

やることは「プランを選ぶ → 支払い情報を入れる → 完了」の3つ。

Cloudflare のダッシュボードを開き、左サイドバーの Zero Trust → Overview をクリックする。「Welcome to Cloudflare Zero Trust」という画面が出るので、右上の Get started をクリックする。

Welcome to Cloudflare Zero Trust の画面。右上に Get started ボタン

画面が切り替わって、もう一度 Get started が出ることがある。そのときはもう一度押す。

「Choose a plan」という画面が出る。左の Zero Trust Free の Select plan をクリックする。

Choose a plan の画面。Zero Trust Free($0 / seat / month、50 seat limit)、Standard、Enterprise の3つ

Free の説明に「50 seat limit」(50人まで)と書いてある

「Activate Zero Trust Free」という画面が出る。無料プランでも、ここで支払い情報を入れる必要がある。右側の Order summary に「Protect up to 50 users at no cost」「$0/month」と出ているとおり、請求はされない。

Activate Zero Trust Free の画面の上部。Apple Pay、Google Pay、PayPal のボタンと、$0/month の注文内容

カードのほかに Apple Pay・Google Pay・PayPal も選べる

カード番号を入れたくなければ、Apple Pay・Google Pay・PayPal も使える。その下にカードの入力欄がある。

さらに下の Billing address(請求先)を埋める。英語で入れる。

Billing address の入力欄(名前・国・住所・都道府県・郵便番号・Account type)と、同意のチェック2つ、Activate Zero Trust Free ボタン

画像の名前と住所は撮影用のダミー

項目書き方
First name / Last name名前(ローマ字)
CountryJapan
Address line 1番地と町名(例:1-2-3 Marunouchi)
City市区町村(例:Chiyoda-ku)
State都道府県を一覧から選ぶ
ZIP code郵便番号
Account type個人なら Personal

最後に同意のチェックを2つ入れる。

  • 利用規約とプライバシーポリシーへの同意
  • 「無料の範囲を超えた利用分を、解約するまで毎月請求することを認める」という同意

2つ目を読んで不安になるかもしれないが、Access は51人目でログインが止められるだけで、勝手に有料にはならない(冒頭の注意を参照)。

Activate Zero Trust Free をクリックする。

「Purchase complete」と出れば完了。Continue to Zero Trust をクリックする。

Purchase complete の画面。Continue to Zero Trust ボタンと、$0/month の注文内容

Zero Trust(Cloudflare One)のトップ画面に入る。上のタブが Discover のとき、右の Account details に、Team name(チーム名)と Plan「Zero Trust Free」が出ている(Overview のタブには Plan の行が無い)。

Cloudflare One のトップ画面。右に Account details(Team name、Plan: Zero Trust Free)

チーム名は自動で付く

チーム名は自動で付き、ログイン画面のアドレス(チーム名.cloudflareaccess.com)に使われる。

次に、サイトを開いた人がどうやって本人確認をするかを決める。この記事では One-time PIN(メールに届くコードでログインする方式)を使う。

4-1. 最初は「Cloudflare」でしかログインできない

Section titled “4-1. 最初は「Cloudflare」でしかログインできない”

Zero Trust の左サイドバーで Integrations → Identity providers を開く。

Identity provider integrations の画面。一覧に Cloudflare が1つだけ入っている

一覧には Cloudflare が1つだけ入っている。これは「Cloudflare のアカウントでログインする」方式。

画面の説明には「ログイン方法を追加しなければ one-time pin が既定になる」と書いてあるが、実際にはそうならない(手元で確かめた)。このまま鍵をかけると、ログイン画面には Cloudflare のボタンしか出ず、メールアドレスの入力欄が無い。

ログイン画面。Sign in with: の下に Cloudflare のボタンだけがある

One-time PIN を足す前のログイン画面

これでは、Cloudflare のアカウントを持っていない人は入れない。身内や関係者に見せたいなら、One-time PIN を足す。

右上の Add an identity provider をクリックする。「Add a login method」という画面に、ログイン方法の一覧が出る。

Add a login method の画面。Microsoft Entra ID、Facebook、GitHub、Google、One-time PIN などの一覧。Cloudflare には ADDED と出ている

One-time PIN をクリックする。右に「ADDED」と出れば追加済み。

One-time PIN の右に ADDED と表示されている

押すだけでよい。設定する項目も、保存ボタンも無い。追加すると、ログイン画面に Email の欄が出るようになる(1章の画面)。

Google Cloud Console のような外部の設定は要らない。コードを送るメールは Cloudflare が出す。

次に、誰を通すかを決める。Cloudflare Access ではこれをポリシーと呼ぶ。

ポリシーは、鍵をかける前に作っておく。6章で鍵をかける画面ではポリシーを選ぶだけで、新しく作ることはできないため。

Zero Trust の左サイドバーで Access controls → Policies を開く。

Reusable policies の画面。まだポリシーが無く、Add a policy ボタンがある

Add a policy をクリックすると、ポリシーの入力画面が出る。

Add policy の画面。左の Policy rules で Include の Selector が Emails、右の Policy details で Policy Name が members

アドレスを入力しているところ(アドレスはぼかしてある)

項目入れるもの
Policy Name(右)好きな名前。例:members
Action(右)Allow(最初から選ばれている)
Include の Selector(左)Emails
Include の Value(左)自分のメールアドレス

アドレスを入れて確定すると、× の付いた札に変わる。右下の Save policy をクリックする。

Add policy の画面全体。アドレスが札になり、右下に Save policy ボタン

一覧に戻り、作ったポリシーが並ぶ。

Reusable policies の一覧に members(Allow)が1行ある

身内にも見せたい人がいるなら、ここでアドレスを足しておいてもよい(あとから足すこともできる。→ 8-1)。

Cloudflare のダッシュボード → Compute → Workers & Pages → my-members-site を開く。上に並ぶタブから Access を選ぶ。

Worker の Access タブ。This Worker is not protected by Access と Protect this Worker behind Access ボタン

Protect this Worker behind Access をクリックすると、Manage Worker access という画面が出る。

Manage Worker access の画面。Scope が All traffic、Authentication policy に members、Session duration 24 hours、Apply Access ボタン

項目選ぶもの
ScopeAll traffic
Authentication policy5章で作ったポリシー(members)

ポリシーを選ぶと Session duration(一度ログインしたら、次に聞かれるまでの時間)が出る。最初は 24 hours。そのままでよい。

Apply Access をクリックする。画面が切り替わり、「Require login on every URL: production and previews」と出れば、鍵がかかっている。

適用後の Access タブ。Worker Access・All traffic・Require login on every URL: production and previews、ポリシー members

サイトのファイルは変えていないので、デプロイし直さなくてよい。

Chrome のシークレットウィンドウ(ファイル → 新規シークレットウィンドウ)で公開URLを開く。1章のログイン画面が出る。

  1. Email に5章で登録したアドレスを入れて Send login code をクリック
  2. 届いたメールの6桁のコードを入れて Verify をクリック(コードは10分で切れる。メールは [email protected] から届く)
  3. 「メンバー限定ページ」が見える

Cloudflare から届いたメール。Your Cloudflare Access code、6桁のコード、Log in ボタン

コードは塗りつぶしてある

メールの Log in ボタンからも入れる。コードを打つ代わりにボタンを押せばよいので、スマホで受け取ったときに楽。

一度ログインすると、Session duration(24時間)のあいだは聞かれない。

7-2. 許可していない人は入れない

Section titled “7-2. 許可していない人は入れない”

7-3. 入口がすべて守られたか確かめる

Section titled “7-3. 入口がすべて守られたか確かめる”

2-3 と同じ確かめ方で、もう一度見る。

プロンプト
公開URLと、さっき調べた Version URL の両方に curl -I でアクセスして、
返事のステータスと、転送先(location)を見せて

どちらも 302 になり、転送先が チーム名.cloudflareaccess.com のログイン画面になっていれば、守られている。2-3 では 200(誰でも見える)だった。

鍵をかけたあとにデプロイして作られる新しいバージョンも、同じように守られる(手元で確かめた)。

足す

Zero Trust の Access controls → Policies で、5章のポリシー(members)を開き、Configure をクリックする。5章と同じ入力画面が出るので、Value の欄(いまのアドレスの札の横)に足す人のアドレスを入れて確定し、Save policy をクリックする。

ポリシーの編集画面。Emails の Value 欄にアドレスの札が2つ並んでいる

札を並べると「どれかのアドレスなら通す」になる

保存すれば、足した人もすぐにログインできる(手元で確かめた)。

外す

同じ画面で、外す人のアドレスの札の × を押して Save policy をクリックする。次にその人がログインしようとしても、コードは届かない。

ただし、すでにログインしている人は、ポリシーから消しただけでは締め出されない。セッション(6章の Session duration、既定24時間)が切れるまで、ページが見えたままになる(手元で確かめた)。すぐに締め出したいときは、続けてセッションを取り消す。

Zero Trust の Team & Resources → Users を開くと、ログインしたことのある人が並んでいる。外す人の行の「…」から View details を選ぶ。

Users の一覧。User name、Email、Seat usage(Active)、Last login の列。行の「…」から View details

詳細の画面の Session management にある Revoke sessions をクリックする。

ユーザーの詳細画面。Session management に Revoke sessions ボタン、Seat management に Remove user ボタン、下にセッションの有効期限

確認が出るので Revoke をクリックする。その人がページを再読み込みすると、ログイン画面に戻る(手元で確かめた)。

Revoke sessions の確認画面。Cancel と Revoke のボタン

確認の文面にあるとおり、Revoke sessions はいまのセッションを切るだけで、もう一度ログインすることは止めない。だから「ポリシーから消す」と「Revoke sessions」の2つをセットでやる。

人数の枠を空ける

50人の上限は「一度でもログインした人」で数える。ポリシーから消しても、Revoke sessions を押しても、数は減らない。枠を空けたいときは、同じ詳細画面の Seat management にある Remove user をクリックする。

Remove tatsuo? の確認画面。セッションを終わらせて Inactive にする、と書いてある。Cancel と Remove のボタン

確認の文面のとおり、Remove を押すとセッションも終わり、その人は Inactive になって枠を使わなくなる。Users の一覧からも消える(手元で確かめた)。

Users の一覧。1人だけになり、Showing 1 - 1 と表示されている

Remove したユーザーが一覧から消えた

ただし、Remove user もログインそのものは止めない。ポリシーに残っている人がもう一度ログインすれば、また1人分に数えられる。外すときは、ポリシーから消してから押す。身内で使う程度なら、50人に届くことはまず無い。

公開URLの後ろに /cdn-cgi/access/logout を付けて開く(例:https://my-members-site.サブドメイン.workers.dev/cdn-cgi/access/logout)。「You successfully logged out.」と出て、ログイン画面に戻る。ほかにも Cloudflare Access で鍵をかけたサイトがあれば、そちらからもまとめてログアウトする(サイトごとにはログアウトできない)。

ページにログアウトのリンクを置きたければ、頼めばよい。

プロンプト
public/index.html に、/cdn-cgi/access/logout へのリンクを「ログアウト」として置いて

公開前に関係者だけに見せていたサイトを、そのまま一般に公開するときなど。

Worker の Access タブで Manage access → Edit Worker access の画面で、赤い Remove Worker-specific Access をクリックする。確認が出るので、もう一度 Remove Worker-specific Access をクリックする。

Edit Worker access の画面と、Remove Worker-specific Access? の確認の吹き出し

数秒で、公開URLも Version URL も誰でも見られる状態に戻る(手元では5秒)。7-3 の依頼文で、200 に戻ったことを確かめる。

5章のポリシーは消えずに残る。また鍵をかけるときは、6章からやり直せばよい。

守れるもの

  • 公開URLも、Version URL も、まとめて守れる。 「別の入口から素通し」が起きない
  • 人単位で出し入れできる。 1人だけ外すときは、ポリシーから消してセッションを取り消す(8-1)
  • 許可していない人のリクエストは、サイトに届かない。 止めるのは Cloudflare

守れないもの・気をつけること

  • 鍵を外すと、すぐに公開される。 8-3 のとおり、ボタン1つで数秒後には誰でも見られる。サイトの側には「Access が外れたら閉じる」仕組みが無い。誤って外さないように気をつけるしかない(サイトの側でも止めたいなら → 10-3)
  • 登録したメールアカウントが乗っ取られたら、入られる。 メールのコードで本人確認しているため。メールアカウントには2段階認証をかけておく
  • 50人まで。 51人目はログインできずに止められる(勝手に課金はされない)。一般公開のサービスの会員登録には向かない。身内・関係者向け
  • Cloudflare の設定に依存する。 ほかのサービスに引っ越すときは、鍵のかけ方から考え直しになる

ここまでで、Cloudflare Access は一通り使える。次の10章は補足で、読まなくてもかまわない。

10-1. なぜ Worker の画面でかけるのか

Section titled “10-1. なぜ Worker の画面でかけるのか”

Cloudflare Access には、Zero Trust の画面でアドレス(ホスト名)を登録して守るやり方もある。管理画面だけを守る管理画面を Cloudflare Access で守るはこちらを使っている。

ホスト名で守るやり方は、登録したアドレスしか守らない。2-3 で見た Version URL は、公開URLとは別のアドレスなので、登録しなければ守られずに残る。「鍵をかけたつもりで、別の入口が開いていた」が起きる。

この記事の Worker の Access タブは、その Worker に届くアドレスをまとめて守る。だから Version URL も一緒に守られる(7-3)。サイト全体を守るなら、こちらのほうが漏れが起きにくい。

設定の手間はほぼ同じ。3章(Zero Trust の初回設定)と4章(One-time PIN)はどちらのやり方でも必要で、違うのは最後に鍵をかける部分だけ。ホスト名で守るやり方はポリシーを同じ画面で作れるかわりに、守るアドレスを手で入力し、Version URL も別に登録する必要がある。逆に、/admin のようにパスで絞りたいときや、Pages・独自ドメインのサイトを守るときは、ホスト名で守るやり方を使う。

10-2. ログインしている人を表示する

Section titled “10-2. ログインしている人を表示する”

ページに「○○ でログイン中」と出したいことがある。これは静的なサイトのままでできる。Cloudflare Access は、ログインした人の情報を /cdn-cgi/access/get-identity というアドレスで返してくれるので、ページの JavaScript から読めばよい。

プロンプト
public/index.html に、/cdn-cgi/access/get-identity を fetch して、
返ってきた email を「○○ でログイン中」と表示する部分を足して

デプロイし直すと、ページにログインしたメールアドレスが出る。公開URLでも Version URL でも動く(手元で確かめた)。

10-3. 動的なページで、誰が来たかを使う

Section titled “10-3. 動的なページで、誰が来たかを使う”

ここまでのサイトは静的(決まったファイルを返すだけ)だった。Worker のコードでページを返す形(動的)にすると、Cloudflare Access が確かめた「誰が来たか」をサイトの側で使える。

守る力は、静的でも動的でも同じ。違いは、守ったあとにできること。

静的(この記事の本編)動的
鍵の範囲・ログイン・人の出し入れ同じ同じ
ログインしている人を表示するできる(10-2)できる
人によって見せるものを変えるできないできる
Access が外れたら閉じるできない(9章)できる
誰が何をしたかを記録するできないできる(データベースが要る)

Worker のコードでは、ctx.access からログインした人の情報を受け取れる。ctx.access は Access を通ってきたリクエストにだけ付くので、「付いていなければ 403(お断り)を返す」と書いておけば、8-3 のように誤って Access を外しても中身は出ない。運用の気づかいに頼らず、コードで守る形。

ctx.access から取り出したメールアドレスを見れば、人によって見せるものを変えられる。たとえば管理者のアドレスのときだけ、管理用の欄を出す。

頼むときは、こう言えばよい。

プロンプト
このサイトを、Worker のコードで HTML を返す形に作り直したい。
ログインした人の情報は、Cloudflare Access の ctx.access から取って。
ログインした人のメールアドレスを、ページに「○○ でログイン中」と出して。
管理者のときだけ「管理者向け」の欄を出して。管理者のメールアドレスは私が自分で入れる。

2行目は、受け取り方の指定。これが無いと、Claude Code は Access が付ける署名入りの値を自前で検証する作りにした。安全ではあるが、チームのドメインなど2つの値を Zero Trust の画面で探して貼る手順が増える。ctx.access ならその手間が無い。安全のために足した行は無い。

言わなくても、Claude Code は次のものを入れた(手元で試した)。

安全策何を防ぐか
ctx.access が無いとき、メールアドレスが取れないときは 403 を返すAccess が外れたときに、中身が誰でも見えること
public フォルダを使わず、ページはコードだけで返す静的ファイルが Worker を通らずに返り、ctx.access が届かないこと(下の caution)
管理者向けの欄は、サーバー側で HTML ごと出し分ける管理者でない人のブラウザに、管理者向けの中身が届くこと
人ごとに変わるページに、キャッシュさせない指定を付ける別の人に、前の人のページが返ること

管理者のアドレスは wrangler.jsonc の vars に、仮の値([email protected])で入る。変数の名前は頼むたびに変わる(ADMIN_EMAIL、ADMIN_EMAILS など)。ここは自分で書き換えてからデプロイする(Access でログインするときのアドレスにする)。

管理者のアドレスでログインすると、「管理者向け」の欄が出る。

「○○ でログイン中」の下に「メンバー限定ページ」と、オレンジの枠の「管理者向け」の欄

管理者のアドレスでログインしたとき(アドレスはぼかしてある)

ほかの人がログインすると、その欄は出ない。

「tatsuo@gmail.com でログイン中」と「メンバー限定ページ」だけが表示されている

管理者ではない人でログインしたとき

この状態で 8-3 の手順で Access を外すと、公開URLも Version URL も「Access required」(403)が返り、中身は出なかった(手元で確かめた)。静的なサイトのときは、同じ操作で誰でも見られるようになった(8-3)。

誰が何をしたかを記録する(投稿に名前を自動で付ける、など)には、記録を残す場所としてデータベースが要る。データベースを使うサイトの作り方はD1でデータを共有するWebアプリを作るで扱っている。

  • Worker の Access タブは 2026-08 に追加された機能。それより前の記事やドキュメントには、Worker の Settings → Domains & Routes から有効にする方法(2025-10〜)や、Zero Trust の画面でホスト名を登録する方法が書かれていることがある
  • Zero Trust Free の上限は50ユーザー(Cloudflare の料金表)。超えると Pay-as-you-go(1ユーザー月$7)
  • ログインのセッションは、Session duration(既定24時間)のあいだ続く。同じ Worker の Version URL にはコードなしで入れた