Cloudflare Zero Trust で Service Token を使う
ほとんどスクリーンショットの羅列になってしまうのですが、日本語でも英語でも明示的な情報を見つけられなかったので、簡単に記しておきます。
TL;DR
Service Token を使いたいときは Policy の Action を Allow
ではなく Service Auth
にしなければならない
経緯などの話
Cloudflare Zero Trust (旧 Cloudflare access) を用いると、OIDCやsamlなどを用いて、既存のアプリケーションへのアクセスを制限できる。
たとえば私が保守運用しているサービスでは、管理画面を Cloudflare Zero Trust 以下にすることで、安全性を高めている。
また、ステージング環境に用いても便利に使える。
しかし、既存のサービスに紐づくアプリケーションのAPI接続を試験する中で、疎通できない問題が発生した。
これを解決するために、Service Authという機能が使えるらしく、そのトークン(ID/Secret)がService Tokenというものらしい。
ところが、普段のIdPと同じようにAllowで設定すると動かなかった。しばらく色々と試したが、最下部の参考コメントを参考に、以下のように設定することでService Authを使用することができた。
アプリケーションの設定が以下のような形。
ポリシーの設定が以下のような形。ActionがService Authになっているのが重要。
今回の例ではポリシーが一個だけだが、IdPによる既存のポリシーとは別に追加することでIdPとTokenを併用できる模様です。
参考: https://community.cloudflare.com/t/curl-access-with-service-token/198228/2
Discussion