Cloudflare Access、ユーザーの ID 情報を確認する
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 information
や Authentication 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