無料で使えるCloudflare Accessで安全にローカルのAIを外部から使えるように設定してみた

Cloudflare Tunnelを使うことで、ルーターのポート開放などの設定不要で、ローカルPC上で動いているサービスをCloudflare経由で公開できます。Tunnelを設定しただけの状態では誰でもアクセスできてしまうので、今回はCloudflare Tunnelで公開したURLに対して、Cloudflare Accessによる認証を追加してみることにしました。
https://www.cloudflare.com/ja-jp/sase/products/access/
Cloudflare Tunnelを使ってローカル環境のサービスへ外部からアクセスできるようにする方法は前回の記事で解説しています。
無料でポート開放など面倒な設定不要でローカル環境を外部に公開できる「Cloudflare Tunnel」を使ってみた - GIGAZINE

Cloudflare Accessを使うと、公開したアプリケーションの前段に認証レイヤーを追加できます。そのため、今回ローカルで動作させているLemonadeのような「ローカル環境で使うことを前提にした設計」のアプリでもCloudflare側で「誰がアクセスできるか」を制御可能というわけ。
早速Cloudflareのダッシュボードにログインし、左のメニューから「Zero Trust」をクリックします。

Zero Trustのページが開いたら、まずはポリシーを設定していきます。「Accessコントロール」の項目にある「ポリシー」をクリックし、「ポリシーを追加する」をクリック。

今回はメール認証を設定するので、「メール」を選択して許可するメールアドレスを追加。右側で「ポリシー名」を分かりやすく記入し、アクションで「許可」を選択します。

ページをスクロールして最下部の「ポリシーを保存」をクリック。

続いて、保護範囲を決めるためにアプリケーションを設定します。「Accessコントロール」の項目の「アプリケーション」をクリックし、「新規アプリケーションを作成」をクリック。

「セルフホストとプライベート」タブの「パブリックDNS」を選択し、「セルフホストとプライベートで続行」をクリックします。

保護対象のドメインを記入します。今回はローカルのLemonadeへつながるTunnelに設定したドメインを記入しました。

スクロールし、Accessポリシーの欄で「既存のポリシーを追加」の矢印をクリックして「Lemonade Tunnel(allow)」をクリック。

最下部までスクロールして「作成」をクリックします。

Lemonadeを公開しているURLにアクセスすると以下のようにログインを求める画面が出現。メールアドレスを入力して「Send login code」をクリックします。

メールで届いたログインコードをコピー。

ブラウザに貼り付けて「Verify」をクリックすればログイン完了です。

前回の記事同様に、外部からローカルのLemonadeサーバーへアクセスすることができました。今回は認証が設定されているので他人に使われる心配もないというわけです。
