Workers に Zero Trust Access のトークンをつけて Workers 実行時のセキュリティを上げる

Cloudflare Workers は、サイトの設定変更操作もエンドポイントを叩くだけで実行できるようにしてくれます。しかし、Workers エンドポイントがわかってしまえば、誰でも実行できてしまいます。そこで、セキュリティ対策として Zero Trust の Access 機能を使って Workers 実行時に認証機能を追加してみましょう。

 

Workers のエンドポイント

例として、既存のページルールを無効化する Workers を作成しました。API参考資料

Workers が生成してくれたエンドポイントはこちらです。

しかし、このエンドポイントには、認証用のトークンを付与できませんので新しいエンドポイントを作成します。

 

まず DNS メニューのレコードに、新エンドポイントのためのレコードを作成します。

タイプ:CNAME
名前(値):kimclass-302redirect-status-disabled
ターゲット:<ゾーン名として登録したドメイン名>

これが新しいエンドポイントになります。

kimclass-302redirect-status-disabled.<ゾーン名として登録したドメイン名>

 

次に、新エンドポイントを先ほど作成した Workers に関連付けます。

Workers 管理画面の「トリガー」タブに遷移し、「ルート」メニューで「ルートを追加」

ルート:<新エンドポイント>
ゾーン:ゾーン名を選択

 

 

💡 テスト 新エンドポイントで Workers が実行されるか確認します。

 

認証用トークンを発行

これから認証用トークンを作成し、新エンドポイントに関連づけます。

Zero Trust 画面に遷移し、Access > Service Auth 画面にて、認証用トークンを発行します。

「Create Server Token」 クリック後、トークン名と有効期限を入力すると次の画面でトークンが発行されます。

ここで発行された CF-Access-Client-Secret キーは一度だけしか表示されませんので、大切に保管してください。

 

Workers にトークンを関連づける

作成した Workers を Zero Trust Access の管理下に登録します。ポリシーにて作成した認証用トークンを関連づけます。

Access > Applications 画面にて「Add an application」をクリックします。

アプリケーションのタイプに、Self-hosted を選択します。

 

Configure app を以下のように設定しました。(要件によって設定内容を変えてください)

 

Add policies を以下のように設定しました。(要件によって設定内容を変えてください)

 

Setup を以下のように設定しました。(要件によって設定内容を変えてください) Cookie settings 以外はデフォルトのままです。

 

 

💡 テスト リクエスト時にヘッダーをつけて実行し、Workers が実行されるか確認します。

curl --request GET \
-url https://<新エンドポイント>/ \
-header 'CF-Access-Client-Id: ' \
-header 'CF-Access-Client-Secret: '

(補足)kimclass-302redirect-status-disabled.classmethod.space をクリックするだけだと、エラー画面になります。

  以上です。 便利な Workers をセキュアにご利用される際にご参考になればうれしいです!