🫂

Cloudflare Access、ユーザーの ID 情報を確認する

2024/07/15に公開

Cloudflare Access アプリケーションにそのユーザーがどう見えているかを確認する方法をいくつか照会します。

ソーシャルエンジニアリング攻撃に注意を。

1. 管理者がダッシュボードから確認

My Team > Users で当該ユーザーを検索し、ユーザーをクリックします。

User Identity のタブを探します。

User Registry identity でユーザーをクリックします。

Identity details > User identity でユーザの概況を見れます。

Get-identity endpoint では IdP からの情報や WARP クライアントで得たデバイスポスチャの情報など詳細を確認することができます。

2. App Launcher でユーザー自身が確認、管理者に連絡

App Launcher が有効になっていて、App Launcer へのユーザーの認証認可は成功している前提です。

ユーザーを App Launcher https://<チーム名>.cloudflareaccess.com/ に誘導します。
ログイン後に右上のプルダウンメニューから Account をクリックしてもらいます。

Account informationAuthentication method にはサマリーが、


Diagnostics には詳細が出てきます。
こちらに誘導し、User identity から Click to copy の情報を送付してもらいます。

3. 認証情報をユーザーに表示するページを用意(1)

認証後のトークンを https://<チーム名>.cloudflareaccess.com/cdn-cgi/access/get-identity に送付すると、詳細の情報を得ることができます。フロントに Workers を置いて表示させてみます。

workers

import { Hono } from 'hono'
import { getCookie } from 'hono/cookie'
const app = new Hono()
const myTeam = 'チーム名'
const idEndpoint = 'https://'+myTeam+'.cloudflareaccess.com/cdn-cgi/access/get-identity'
app.get('/', async (c) => {
const originUrl = c.req.query('original_url')
const referer = c.req.header('referer')
const CF_Authorization = getCookie(c, 'CF_Authorization')
const authCookie = 'CF_Authorization='+CF_Authorization
const resp = await fetch(idEndpoint,{
headers: {
cookie: authCookie
}
})
const data = await resp.json()
data.origin_url=originUrl
data.referer=referer
return c.json(data)
})

export default app

2 と同じ情報を取ることができます。

戻りの JSON データを素材として利用し、HTML ページなどでユーザーにサービス提供することもできそうです。たとえば Pages の場合は Access の Pages プラグインがあり、同様のことに getIdentity API を利用できます。

4. 認証情報をユーザーに表示するページを用意(2)

サーバー側で JWT の検証ロジックを組んで返す例です。Fastapi の例もあります。
Workers でもできますが、今回はこちらの例を参考にトークンの検証ついでに、トークンとヘッダーの内容も返してみます。


なお、リクエストヘッダーに含まれるトークンの情報量はデータサイズなどを鑑み、 3 のエンドポイントで取れるものとくらべ制限されています。

5. その他(2~4 をブロックページに利用)

ブロックページのアクセス許可範囲は広く、アプリケーションは限定的なグループのみ可能としているケースを考えます。

アプリケーションのポリシー

ブロックページのポリシー

Access アプリケーションのブロックページ設定で Redirect URL を選択し、その先に 2~4 のようなページを指定します。

ブロックページにユーザのその時の認証情報について何かしらを含むことができます。

6. 参考(WARP クライアント向けのヘルプページ)

Access アプリケーションに関係なく、ユーザーが利用している端末の現状(Gatewayが入っているか、どのISPにその端末がいるか)などを確認したい場合は https://help.teams.cloudflare.com/ に誘導します。

右上のLink アイコンをクリックすると、URL が表示されますので、送ってもらえば管理者はユーザーと同じページを見ることができます。

ダッシュボードからもリンクが貼れれています。

他にもあるかもしれませんが、とりあえず以上にします。
Access ログやデバイスの情報を確認したい場合が出てきそうですが、それらはまた今度。

Discussion