Cloudflare One (Cloudflare Access) を OIDC IdP として、Grafana Cloud の Generic OAuth SSO を設定する手順を例に、実際の画面操作に沿ってステップバイステップで解説します。

概要

Cloudflare One の Access 機能を使うと、Cloudflare を OIDC/SAML の IdP プロキシとして動作させ、 外部 SaaS アプリケーションへのアクセスを一元管理できます。

本記事では、サンプルとして無料で利用できる Grafana Cloud (Free tier) を OIDC クライアント (SP) として、 Cloudflare One と SSO 連携する手順を解説します。 Grafana Cloud は Generic OAuth 機能により OIDC SSO をサポートしており、設定も比較的シンプルです。

構成図と認証フロー

システム構成

%%{init: {'theme':'default', 'themeVariables': {'fontSize':'10px', 'nodeSpacing':25, 'rankSpacing':35, 'padding':12}}}%%
flowchart LR
  subgraph SP["Grafana Cloud (SP)"]
    GC["Grafana Cloud\n[PROJECT-NAME].grafana.net\nGeneric OAuth\n(OIDC Client)"]
  end
  subgraph CFOne["Cloudflare One (IdP Proxy)"]
    ACC["Access for SaaS\nOIDC Provider"]
  end
  subgraph IdP["Identity Provider"]
    AAD["Azure AD\n/ Entra ID"]
  end
  GC <-->|"OIDC\nAuth Code Flow\n+ PKCE"| ACC
  ACC <-->|"IdP\nIntegration"| AAD
      
図1: Cloudflare One を IdP プロキシとした OIDC SSO 構成

認証フロー

本記事では、WARPエージェント(Cloudflare One Client)無しの純粋クライアントレスなブラウザからのアクセスとなります。

そのため認証完了後の通信はCloudflareを経由せずクライアントからGrafana Cloudへ直接通信する形になります。

Cloudflareを経由させるには、WARPエージェント(Cloudflare One Client)をクライアント端末にインストールすることで、Cloudflare Gateway経由で通信させることも可能です。

%%{init: {'theme':'default', 'themeVariables': {'fontSize':'10px', 'nodeSpacing':25, 'rankSpacing':35, 'padding':12}}}%%
sequenceDiagram
    participant U as User
    participant G as Grafana Cloud
    participant CF as Cloudflare Access
    participant IdP as Azure AD

    U->>G: 1. /login にアクセス
    U->>G: 2. "Sign in with\nCloudflare Access" クリック
    G->>CF: 3. Authorization Request\n(Auth Code Flow + PKCE)
    CF->>IdP: 4. IdP認証へリダイレクト
    IdP->>U: 5. 認証画面表示
    U->>IdP: 6. 認証情報を入力
    IdP->>CF: 7. 認証結果を返却
    CF->>CF: 8. Access Policy 評価
    CF->>G: 9. Authorization Code 返却
    G->>CF: 10. Token Request
    CF->>G: 11. ID Token / Access Token
    G->>U: 12. ログイン完了
    U->>G: 13. 認証完了後のアクセス
    
図2: OIDC Authorization Code Flow + PKCE の認証シーケンス

前提条件

事前に必要なもの
  • Cloudflare One (Zero Trust) アカウント
  • Cloudflare One に Identity Provider (IdP) が設定済みであること (例: Azure AD, Okta, Google 等)
    本環境はAzure ADを設定済みです。
  • Grafana Cloud アカウント (Free tier で可) 

1 Grafana Cloud アカウント作成

以下の URL からGrafana Cloud のアカウントを作成します。

https://grafana.com/auth/sign-up/create-user

サインアップ方法は以下から選択できます。

方法 備考
メールアドレス 任意のメールで登録
Google アカウント Google OAuth 連携
GitHub アカウント GitHub OAuth 連携
Microsoft アカウント Microsoft OAuth 連携
Tip
Cloudflare One の IdP に登録している同じメールアドレスを使用すると、後続のSSO連携テストがスムーズになります。

アカウント作成後、Grafana Cloud のダッシュボード (https://<スタック名>.grafana.net) にログインできることを確認してください。

2 Cloudflare One で SaaS App を追加

基本情報の入力

  1. Cloudflare One にログイン
  2. 左メニューから Access controls > Applications に移動
  3. Add an application をクリック
  4. アプリケーションタイプで SaaS を選択

  5. Application フィールドに Grafana Cloud と入力し、表示される候補を選択
  6. 認証プロトコルで OIDC を選択
  7. Add application をクリック

OIDC 設定

SaaS アプリケーションのセットアップ画面で、以下の項目を設定します。

設定項目
スコープ openid, email, profile, groups
リダイレクト URL https://<your-grafana-domain>/login/generic_oauth
PKCE ON (有効化)

重要: 値を控える
このページに表示される以下の値をメモ帳等にコピーしておいてください。 Step 3 (Grafana Cloud 側設定) で使用します。

  • クライアント シークレット (ページを離れると非表示になります)
  • クライアント ID
  • 認証エンドポイント
  • トークンエンドポイント
  • ユーザー情報エンドポイント

Access ポリシーの作成

「+ 新しいポリシーを作成する」をクリックし、アプリケーションにアクセスを許可するユーザーを定義します。

項目 設定例
ポリシー名 Allow Grafana Users (任意)
アクション Allow
ルール (Include) Emails – 許可するメールアドレスを指定

ログイン方法の選択

画面下部の ログイン方法 セクションで、Grafana Cloud へのログイン時に使用する IdP を選択します (例: Azure AD)。選択したら 「次へ」 で進み、アプリケーションを保存します。



3 Grafana Cloud で Generic OAuth を設定

  1. Grafana Cloud (https://<your-grafana-domain>) にログイン
  2. 左上のメニューアイコンをクリック
  3. Administration > Authentication に移動
  4. Generic OAuth タイルをクリック

各フィールドの入力

Step 2 でコピーした値を使って、以下のように入力します。

Grafana フィールド 入力値
Display name Cloudflare Access (ログイン画面に表示される名前)
Client ID CF One でコピーした クライアント ID
Client secret CF One でコピーした クライアント シークレット
Auth style AutoDetect (デフォルトのまま)
Scopes openid email profile groups
Auth URL CF One でコピーした 認証エンドポイント
Token URL CF One でコピーした トークンエンドポイント
API URL CF One でコピーした ユーザー情報エンドポイント
Allow sign up ON
Auto login OFF (検証段階では OFF 推奨)

Extra security measures

フィールド
Use PKCE ON (チェックを入れる)
注意: PKCE の設定を合わせる
Cloudflare One 側で PKCE を ON にした場合、Grafana Cloud 側の Use PKCE も 必ず ON にしてください。この設定が不一致の場合、Login provider denied login request エラーが発生し、ログインに失敗します。

保存と有効化

全ての入力が完了したら、画面下部の 「Save and enable」 をクリックします。 これにより Generic OAuth が有効化され、Grafana のログイン画面に SSO ボタンが表示されるようになります。

4 動作確認

  1. シークレットウィンドウ (InPrivate / プライベートブラウジング) を新しく開く
  2. https://<your-grafana-domain>/login にアクセス
  3. ログイン画面に 「Sign in with Cloudflare Access」 ボタンが表示されることを確認
  4. ボタンをクリック

  5. Cloudflare Access の画面にリダイレクトされ、設定した IdP での認証を求められる
  6. IdP (例: Azure AD) で認証を完了

  7. 認証成功後、Grafana Cloud のダッシュボードが表示されればSSO連携完了

     

  8. Cloudflare Oneダッシュボードの「Access 認証ログ」でログイン状況を確認。

トラブルシューティング

Login provider denied login request
原因: PKCE の設定不一致が最も多い原因です。Cloudflare One 側で PKCE を ON にしている場合、 Grafana Cloud 側の Extra security measures > Use PKCE も必ず ON にしてください。 また、Client ID / Client Secret の入力ミスも確認してください。
Cloudflare Access の画面が表示されず即座にエラーになる
原因: Grafana 側に入力した Auth URL / Token URL / API URL が不正な可能性があります。 Cloudflare One のアプリ設定画面でエンドポイントを「コピー」ボタンで改めてコピーし直してください。 URLが途中で改行されていないかも併せて確認してください。
Redirect URL エラー
原因: Cloudflare One 側のリダイレクト URL と、Grafana の実際のコールバック URL が一致していません。 https://<your-grafana-domain>/login/generic_oauth が正確に設定されているか確認してください。 末尾の / の有無にも注意が必要です。
認証後にユーザーが作成されない
原因: Grafana Cloud の Generic OAuth 設定で Allow sign up が OFF になっています。 ON に切り替えてください。
デバッグのコツ
  • ブラウザの開発者ツール (F12) > Network タブで、OIDC リダイレクトの流れを追跡できます。
  • Cloudflare One > Insights > Logs > Access authentication logs でアクセスログを確認できます。
  • ログが記録されていない場合は、リクエストが Cloudflare Access に到達する前に失敗している可能性があります (Grafana 側の設定を重点的に確認)。

まとめ

  • Grafana Cloud アカウント作成 (Free tier)
  • Cloudflare One で SaaS Application 追加 (OIDC)
  • リダイレクト URL / スコープ / PKCE を設定
  • Access ポリシーを作成
  • Grafana Cloud で Generic OAuth を設定 (エンドポイント / クレデンシャル)
  • PKCE の設定を両サイドで一致させる
  • シークレットウィンドウで SSO ログイン動作確認
%%{init: {'theme':'default', 'themeVariables': {'fontSize':'10px', 'nodeSpacing':25, 'rankSpacing':35, 'padding':12}}}%%
flowchart LR
  A["1. Grafana Cloud\nアカウント作成"] --> B["2. CF One\nSaaS App 追加"]
  B --> C["3. Grafana Cloud\nGeneric OAuth 設定"]
  C --> D["4. 動作確認\nSSO ログイン"]
  style A fill:#eef2ff,stroke:#2563eb,color:#1a1d27
  style B fill:#fff7ed,stroke:#f6821f,color:#1a1d27
  style C fill:#fef9ee,stroke:#c77c14,color:#1a1d27
  style D fill:#ecfdf5,stroke:#059669,color:#1a1d27
      
図3: 設定フロー全体像

参考リンク