cloudflare-access-app-setup について
セルフホスト型のCloudflare Accessアプリ、メール許可リストポリシー、任意のサービス トークンを作成・更新するスキルです。Pulumiの状態管理なしで、単発の設定、CIテスト、認証情報のローテーションに使えます。
主な機能
- 01Accessアプリの冪等な設定
- 02メール許可リストポリシーの作成
- 03任意のサービストークン作成
- 04環境変数またはコマンドラインで設定
- 05アプリのAUDとトークン認証情報を出力
活用シーン
- 01新しいCloudflare WorkerにAccessを設定
- 02CIスモークテスト用のサービストークン追加
- 03サービストークン認証情報のローテーション
- 04プルリクエストテスト用の一時Accessアプリ作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mizchi/ skills --skill cloudflare-access-app-setupインストール後、Claude Code で/cloudflare-access-app-setupを入力して読み込まれたか確認します。
同梱ファイルassets/scripts/setup-access-app.tsREADME.md
詳細
Cloudflare Access アプリのセットアップ(API 駆動)
セルフホスト型の Cloudflare Access アプリ、メール許可リストポリシー、およびヘッドレス CLI/CI アクセス用のサービス トークンを作成します。べき等性があり、再実行すると重複を作成せず、既存のアプリを更新します。
長期的な選択肢としては Pulumi を推奨します(宣言型でドリフト検出に対応)。ただし、次のような場合はスクリプトが適しています。
- 単一アプリのために Pulumi の状態を管理したくない場合の一度限りのセットアップ。
- テストのために、PR ごとに一時的な Access アプリを起動する必要がある CI。
- スタックの残りの部分を再インポートせずに、サービス トークンを置き換える場合(認証情報のローテーション)。
呼び出すタイミング
次のような場合に使用します。
- 既存の Pulumi スタックがない、新しい Cloudflare Worker に Access を設定する場合。
- CI のスモークテスト実行用に、既存の Access アプリにサービス トークンを追加する場合。
- インフラの残りの部分には触れずに、サービス トークンの認証情報をローテーションする場合。
内容
assets/scripts/setup-access-app.ts
汎用スクリプトです。環境変数/CLI 引数で設定を読み取り、https://api.cloudflare.com/client/v4/accounts/<id>/access/apps で Cloudflare API を呼び出します。アプリの AUD を出力します(cloudflare.config.ts で worker.env.APP_ACCESS_AUD: bindings.text(aud) として宣言してください)。また、--create-service-token を指定した場合は、トークンの client_id と client_secret も出力します(.env.cloudflare に貼り付けてください)。
入力(環境変数または CLI):
| 変数 | 必須 | デフォルト |
|---|---|---|
CLOUDFLARE_API_TOKEN | はい | — |
CLOUDFLARE_ACCOUNT_ID | はい | — |
--name | はい | — |
--domain | はい | — |
--allow-emails | allow-emails または service-token のいずれか | — |
--create-service-token | 任意 | false |
--session-duration | 任意 | 24h |
--api-base | 任意 | https://api.cloudflare.com/client/v4 |
呼び出さないタイミング
- すでにインフラに Pulumi を使用している場合。Pulumi の
ZeroTrustAccessApplicationリソースを使用してください。状態ファイルが増えても、ドリフト検出にはその価値があります。 - 複雑なポリシーグラフ(マルチテナント、グループメンバーシップ、時間ベースのアクセス)が必要な場合。このスクリプトは意図的に対象を絞っており、メール許可リスト 1 つと、任意のサービス トークン 1 つのみを扱います。
ソース
mnemo バージョン(mnemo ドメインがハードコードされたデフォルト値を使用)は mizchi/mnemo/blob/main/mnemo-server/scripts/setup-access-app.mjs にあります。ここに含まれるバージョンは、ドメインのデフォルト値をパラメーター化した同じスクリプトです。
Access の手動操作では、pnpm exec cf cli search "create a self hosted Access application" で cf コマンドを見つけてから、そのスキーマを確認してください。同梱のヘルパーは REST API を直接呼び出すため、Wrangler は不要です。cf の認証を参照してください。