Cloudflare Access の認証に Google アカウントを使用してみる

ウィスキー、シガー、パイプをこよなく愛する大栗です。

Cloudflare Access は Zero Trust の重要な要素でユーザー認証を行う機能です。今回は Google の IDaaS である Cloud Identity を使用して認証を行ってみます。

本内容は基本的に以下のドキュメントの内容となっています。

やってみる

前提

まず、Google Workspace を登録するかCloud Identityに登録して組織リソースを取得しておきます。また、Google Cloud にプロジェクトを作成していない場合にはプロジェクトを作成しておきます。

Google を ID プロバイダーとして設定

Google Cloud Console にアクセスして、[APIs & Services] - [Credentials] に遷移します。CONFIGURE CONSENT SCREENをクリックします。

ユーザータイプでExternalを選択して、CREATEをクリックします。

アプリ情報として、アプリ名、ユーザーサポートメール、アプリのロゴを入力します。

App Information

アプリのドメインとして、アプリケーションのホームページ、アプリケーションのプライバシーポリシーリンク、アプリケーション利用規約リンクを必要に応じて入力します。リンクで使用しているドメインうぃ承認済みドメインをして入力します。

App domain

デベロッパーの連絡先情報としてメールアドレスを入力してSAVE AND CONTINUE(保存して次へ) をクリックします。

Developer contact inforamtion

ADD OR REMOVE SCOPES(XXXX)をクリックします。

メールアドレスを Cloudflare 側で取得するために.../auth/userinfo.emailにチェックをしてUPDATEをクリックします。他にも必要な項目がある場合には、対象の項目をチェックします。

SAVE AND CONTINUE(保存して次へ) をクリックします。

テストユーザーを追加せずにSAVE AND CONTINUE(保存して次へ) をクリックします。

内容を確認してBACK TO DASHBOARDをクリックします。

OAuth の同意画面の設定を確認できます。

[APIs & Services] - [Credentials] に遷移して+ CREATE CREDENTIALSからOAuth client IDをクリックします。

Application type でWeb application、Name に OAuth クライアントの名称を任意に設定します。Authorized JavaScript origins に https://<Cloudflare Zero Trust のチームドメイン>を入力1します。Authorized redirect URIs に https://<Cloudflare Zero Trust のチームドメイン>/cdn-cgi/access/callbackを入力します。そしてCREATEをクリックします。

OAuth のクライアント ID とクライアントシークレットが表示されるのでメモしておきます。これは秘匿すべき情報ですので共有する場合には気をつけてください。

もしもクライアントシークレットを失ってしまった場合は、対象のクライアント ID をクリックして内容を確認します。

右側でクライアント ID とクライアントシークレットを確認できます。

Google Workspace をお使いの場合

もし Google Workspace をお使いの場合は以下の操作を追加で実施します。

Google 管理者アカウントでGoogle 管理コンソールにアクセスします。[セキュリティ]-[アクセスとデータ管理]-[API の制御] を開きTrust internal, domain-owned appsをチェックしてSAVEをクリックします。

Cloudflare に Idp を登録する

Cloudflare Zero Trust のコンソールで操作を行います。[Settings]-[Authentication] をクリックします。

[Login methods]-[Add new] をクリックします。

Googleをクリックします(Google Workspace を使用している場合にはGoogle Workspaceをクリックします)。

Name に先程作成した Google ID プロバイダーを示す一意な名称を入力し、App ID に OAuth のクライアント ID、Client secret に OAuth のクライアントシークレットを入力します。必要に応じてProof Key for Code Exchange (PKCE)を有効にしてSaveをクリックします(Google Workspace の場合にはGoogle Workspace domainが増えているためドメインを入力します)。

認証の確認

Testをクリックします。

Google アカウントの選択画面が表示されるので使用するアカウントをクリックします。

正常に認証を通過するとYour connection works!とメッセージが表示されて、name と email が取得できています。

これで Cloudflare Access の認証に アカウントを使用できるようになりました。

さいごに

全社で Google Workspace や Cloud Identity で ID を管理されている場合には Google アカウントを使ってシングルサインオンを行いたいと思いますので、このエントリを参考に設定していただければと思います。


  1. チームドメインは、Cloudflare Zero Trust のコンソールで、[Settings]-[General]-[Team domain] を参照してください。<チーム名>.cloudflareaccess.comの形式です。