Cloudflare Zero TrustとGoogleアカウントを連携する。
Cloudflare Zero Trustのユーザー認証にGoogleアカウントを連携した設定記録です。
2024年4月22日
Cloudflare AccessとGoogleアカウントを連携して使いやすく。
先の記事でCloudflare AccessとAzure Entra IDの連携を実装しましたが、あらかじめEntra IDにログインしていれば、アプリケーションの利用時にログインが不要なので、とても使い勝手が良くて満足していました。 ただし、自分以外の人にアプリケーションを公開する場合にEntra IDだと、マイクロソフトのテナント内にユーザを作成して、相手に共有しないといけません。GoogleやFacebookなどのアカウントを活用できれば、アカウント作成の必要がないためより簡単に共有できます。
今回はGoogleアカウントとの連携を行ってみました。手順は例によってCloudflareの公式ページを参考にしています。
Google Cloud Platform側の設定
Googleアカウントとの連携にあたって、法人向けのGoogle Workspaceはいりません。通常のGoogleアカウントで作業できます。また、Cloudflareの公式ページだとGoogle Cloud Platform(GCP)のユーザである必要もないと書いていますが、私はGCPの契約をしてしまっていたので、本当に不要なのかはわかりませんでした。
最初に、GCPのリソース管理ページへ移動します。そしてプロジェクトを作成
リンクを押します。
プロジェクト名をわかりやすいく設定して、作成
ボタンを押します。
新しいプロジェクトが作成されたら、プロジェクトのトップページに移動して、クイックアクセスからAPIとサービス
へ移動します。
APIとサービスへ移動したら、さらにメニューから認証情報
へ移動し、同意画面を構成
を開始します。
メニューはOAuth同意画面
へ切り替わりました。User Type
の選択を外部にして、作成
ボタンを押します。ちなみに内部の方はGoogle Workspace向けのようです。
OAuth同意画面のウィザードが開始され、まずアプリ名を決めます。ユーザーサポートメールはGCPにログインしているアカウントのアドレスでないといけないため、選択肢からGmailアカウントを選びます。
デベロッパーの連絡先情報は任意のアドレスで構わないようですが、サポートメール同様にGmailを登録しました。入力したら保存して次へ
を押します。
ウィザードの2番目、スコープ登録ですが公式ページだと必須ではないようです。ただし、認証するユーザへどのような情報が収集されているか伝えるためにも、登録するのが推奨されているようです。
スコープを追加または削除
リンクを押して移動します。
スコープの一覧からuserinfo.email
を探してチェックを付けて、この1件のスコープだけを追加します。
テストユーザーは必要に応じで追加します。今回は追加なしとしたので、何もせずに保存して次へ
を押しました。
APIとサービスのメニューで認証情報
へ移動し、認証情報を作成
からOAuthクライアントID
を押します。
クライアントIDの作成では、アプリケーションの種類
としてウェブアプリケーションを選択します。名前はわかりやすいように決定します。
承認済みのJavaScript生成元
へは公式ページを参考にして、次のように入力します。<your-team-name>
はZero Trustのチーム名に置き換えてください。
https://<your-team-name>.cloudflareaccess.com
同様に、リダイレクトURLもチーム名を置き換えて入力します。
https://<your-team-name>.cloudflareaccess.com/cdn-cgi/access/callback
作成
ボタンを押すとクライアントIDとシークレットが作成されて表示されます。両方ともCloudflareに登録するので、記録して控えておきます。
Cloudflare側の設定
Cloudflareでの設定はAzure Entra IDと同様で、SSettings > Authentication > Login methods
からAdd new
ボタンを押します。
Identity Provider(IdP)の一覧からGoogle
を選びます。
App ID
とClient secret
にGCPのページで生成された値を入力して、Proof Key for Code Exchange(PKCE)
も有効にします。
以上で、Cloudflare Accessの認証ページにGoogleアカウントでログインするためのボタンが追加されます。
まとめ
Azure Entra IDと同じようにとても簡単にGoogleアカウントと連携したシングルサインオンが実現できました。Googleアカウントの普及率はとても高いと思われるので、プライベートな開発で認証を実現したい場合に重宝しそうです。