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
認証フロー
本記事では、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. 認証完了後のアクセス
前提条件
- 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 連携 |
アカウント作成後、Grafana Cloud のダッシュボード (https://<スタック名>.grafana.net) にログインできることを確認してください。
2 Cloudflare One で SaaS App を追加
基本情報の入力
- Cloudflare One にログイン
- 左メニューから Access controls > Applications に移動
- Add an application をクリック
- アプリケーションタイプで SaaS を選択

- Application フィールドに
Grafana Cloudと入力し、表示される候補を選択 - 認証プロトコルで OIDC を選択
- Add application をクリック
OIDC 設定
SaaS アプリケーションのセットアップ画面で、以下の項目を設定します。
| 設定項目 | 値 |
|---|---|
| スコープ | openid, email, profile, groups |
| リダイレクト URL | https://<your-grafana-domain>/login/generic_oauth |
| PKCE | ON (有効化) |


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

Access ポリシーの作成
「+ 新しいポリシーを作成する」をクリックし、アプリケーションにアクセスを許可するユーザーを定義します。
| 項目 | 設定例 |
|---|---|
| ポリシー名 | Allow Grafana Users (任意) |
| アクション | Allow |
| ルール (Include) | Emails – 許可するメールアドレスを指定 |

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

3 Grafana Cloud で Generic OAuth を設定
- Grafana Cloud (
https://<your-grafana-domain>) にログイン - 左上のメニューアイコンをクリック
- Administration > Authentication に移動
- 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 (チェックを入れる) |
Login provider denied login request エラーが発生し、ログインに失敗します。保存と有効化
全ての入力が完了したら、画面下部の 「Save and enable」 をクリックします。 これにより Generic OAuth が有効化され、Grafana のログイン画面に SSO ボタンが表示されるようになります。
4 動作確認
- シークレットウィンドウ (InPrivate / プライベートブラウジング) を新しく開く
https://<your-grafana-domain>/loginにアクセス- ログイン画面に 「Sign in with Cloudflare Access」 ボタンが表示されることを確認
- ボタンをクリック

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

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

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

トラブルシューティング
https://<your-grafana-domain>/login/generic_oauth が正確に設定されているか確認してください。 末尾の / の有無にも注意が必要です。- ブラウザの開発者ツール (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
参考リンク