Cloudflare Accessは特定のユーザーや端末、サービスだけにアプリケーションへのアクセスを許可するゼロトラスト型のアクセス制御サービスです。インターネット上に公開したサービスの手前にCloudflare Accessを配置するだけで設定でき、サービス本体にログイン機能がなくてもOK。今回はブラウザからのアクセスを維持しつつ、サービストークンを持つアプリからの通信も通せるように「サービス認証」を設定してみます。
Access | ゼロトラストネットワークアクセス(ZTNA)ソリューション | Cloudflare
https://www.cloudflare.com/ja-jp/sase/products/access/
以前、Cloudflare Tunnelを使ってローカルPCで動作しているAIサーバー「Lemonade」をインターネットから利用できるようにし、さらにCloudflare Accessによるメール認証を設定して、許可したユーザーだけがアクセスできるようにしました。
無料で使えるCloudflare Accessで安全にローカルのAIを外部から使えるように設定してみた – GIGAZINE
ブラウザからアクセスする場合、Cloudflare Accessのログイン画面を操作することで認証できます。一方で、Node.jsなどで作成したアプリからLemonadeのAPIを呼び出す場合には人間によるログイン操作を必要としない認証方法が必要です。
そこで利用できるのが、Cloudflare Accessの「サービス認証」です。サービス認証では、アプリやサーバーなどのプログラムに対して「サービストークン」と呼ばれる専用の認証情報を発行します。アプリから送信するHTTPリクエストにサービストークンのクライアントIDとシークレットを付与することでCloudflare Accessで保護されたサービスへアクセスできるようになります。
さっそく実際に設定していきます。まずはCloudflareのダッシュボードにログインし、左上のクイック検索で「サービス」と検索して「サービス認証」をクリックします。
「サービストークンを追加する」をクリック。
サービストークン名を入力し、有効期間を「無期限」に設定して「トークンを生成する」をクリックします。
クライアントIDとシークレットが作成されます。ヘッダー名とセットになってコピーできるようになっているので、両方をコピーして保存します。ただ、この画面では右下の「保存」をクリックできませんでした。
「保存」はクリックできませんでしたが、サービストークンのページを再読み込みしてみるとトークンが生成されていたのでこのまま進めます。
続いて左のメニューから「ポリシー」を開き、「ポリシーを追加する」をクリック。
ポリシールールで「Service Token」を選択し、先ほど作成したサービストークン「MyApp to Lemonade」を選択します。ポリシー名を入力し、アクションを「サービス認証」に変更。
最下部へスクロールして「ポリシーを保存」をクリックします。
左のメニューから「アプリケーション」へ移動し、以前作成した「lemonade」をクリック。
「ポリシー」タブへ移動して「既存のポリシーを追加」から先ほど作成した「MyApp to Lemonade」ポリシーを選択します。
無事追加されました。「保存」をクリック。
さっそくアプリからアクセスしてみます。サービストークンを作成した際に保存しておいたクライアントIDとシークレットを「CF-Access-Client-Id」と「CF-Access-Client-Secret」ヘッダーにそれぞれ設定します。今回は疎通を確認するための一時的な利用のため、ソースコードに直接記述しました。
アプリからLemonadeにアクセスしてAIの返事をもらうことができました。人の操作を介さずにAIを利用できるため、さまざまな用途に活用できそうです。
ソース元はコチラ
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。














