Cloudflare TunnelにGoogle(Gmail)認証を追加する

公開日:
目次

Cloudflare Tunnelで公開したローカルサーバーに、Goggle(Gmail)認証を追加しました。備忘録として残します。

認証が必要な理由

固定URLだけでは、URLを知っていれば誰でもアクセスできてしまいます。特にローカルサーバーを外部に公開する場合、認証を追加することでセキュリティを強化できます。

Cloudflare Accessを使えば、Gmailアカウントでのログイン認証を無料で追加できます。

Gmail認証とOne-time PINの比較

Cloudflare Accessには、Gmail認証の他に One-time PIN という認証方法もあります。

項目 Gmail認証 One-time PIN
設定の手軽さ Google Cloud Platformの設定が必要 Identity Provider追加だけで完了
ログイン体験 Googleアカウントでワンクリック 毎回メールでコードを受信
セッション 長期間(24時間など)有効 10分で失効
対応メール Gmailのみ 任意のメールアドレス

Gmail認証は初期設定に手間がかかりますが、頻繁にアクセスする場合は毎回メールを開く必要がなく快適です。たまにしか使わない場合や設定を簡単にしたい場合は、One-time PINの方が向いています。

Gmail認証の設定

Google Cloud Platformでの設定

Google Cloud Platformコンソールにアクセスします。

新規プロジェクトを作成します。

プロジェクト名を入力して「作成」をクリックします。

Image from Gyazo

「APIとサービス」を選択します。

Image from Gyazo

「認証情報」を選択し、「同意画面を設定」をクリックします。

Image from Gyazo

OAuth同意画面で以下の項目を設定します。

  • アプリ名: 任意の名前(例:Claude Code UI)
  • ユーザーサポートメール: 自分のメールアドレス

Image from Gyazo

対象を 外部 に設定します。

Image from Gyazo

デベロッパーの連絡先情報を自分のメールアドレスに設定します。

Image from Gyazo

Google API サービスのポリシーに同意します。

Image from Gyazo

「作成」ボタンをクリックして完了します。

OAuth クライアントの作成

「認証情報」画面に戻り、「OAuth クライアントを作成」ボタンを選択します。

Image from Gyazo

以下の項目を設定します。

  • アプリケーションの種類: ウェブアプリケーション
  • 名前: 任意の名前

Image from Gyazo

「承認済みの JavaScript 生成元」に以下を追加します。

https://<your-team-name>.cloudflareaccess.com

<your-team-name> はCloudflare Oneの「Settings」→「Custom Pages」で確認できるチーム名です。

「承認済みのリダイレクト URI」に以下を追加します。

https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback

「作成」をクリックすると、クライアントIDとクライアントシークレットが表示されます。これらをメモしておきます。

Cloudflare側での設定

Cloudflare Oneダッシュボードにログインします。

「インテグレーション」→「プロバイダー」を選択します。

「Google」を選択します。

Image from Gyazo

以下の項目を入力します。

  • 名前: 任意の名前(例:Gmail Auth)
  • アプリ ID: 先ほどのクライアントID
  • クライアント シークレット: 先ほどのクライアントシークレット

Image from Gyazo

「保存」をクリックします。

アプリケーションの追加

「Accessコントロール」→「アプリケーション」を選択します。

「アプリケーションを追加する」をクリックします。

Image from Gyazo

「セルフホスト」を選択します。

Image from Gyazo

以下の項目を設定します。

  • アプリケーション名: 任意の名前
  • セッション時間: セッションの有効期限(例:24 hours)

「パブリックホストを追加」をクリックします。

Image from Gyazo

  • パブリックホスト名:
    • Subdomain: CloudflareTunnelで設定したサブドメイン(例:claude-ui)
    • Domain: CloudflareTunnelで設定したドメイン

Image from Gyazo

ポリシーの設定

認証ルールを設定します。

「ポリシーを追加する」をクリックします。

Image from Gyazo

  • ポリシー名: 任意の名前(例:gmail-auth)
  • アクション: Allow

「ルールを追加する」で「インクルード(包含)」を選択し、以下を設定します。

  • セレクター: Emails
  • : 許可するGmailアドレス(例:[email protected]

Image from Gyazo

ポリシーが設定できたら、それ以外はデフォルトのまま「次へ」を選択していき、最終的に保存して完了します。

動作確認

設定したURL(例:https://claude-ui.yourdomain.com)にアクセスします。

Cloudflare Accessのログイン画面が表示されます。

Gmailアカウントでログインします。

許可されたメールアドレスであれば、ローカルサーバーにアクセスできます。

使用上の留意点

この設定を使う際は、以下の点に注意してください。

  • 認証の有効期限: セッション有効期限を過ぎると再ログインが必要です
  • 許可リストの管理: 新しいユーザーを追加する場合は、ポリシーを編集してメールアドレスを追加します
  • External設定: User TypeをExternalにしているため、任意のGmailアカウントを許可リストに追加できます