mcpField
C
cloudflare-access-app-setup

cloudflare-access-app-setup

github.com/mizchiクラウド・DevOps41647 回インストール1 週間前に更新
リポジトリ

cloudflare-access-app-setup について

セルフホスト型のCloudflare Accessアプリ、メール許可リストポリシー、任意のサービス トークンを作成・更新するスキルです。Pulumiの状態管理なしで、単発の設定、CIテスト、認証情報のローテーションに使えます。

主な機能

  1. 01Accessアプリの冪等な設定
  2. 02メール許可リストポリシーの作成
  3. 03任意のサービストークン作成
  4. 04環境変数またはコマンドラインで設定
  5. 05アプリのAUDとトークン認証情報を出力

活用シーン

  1. 01新しいCloudflare WorkerにAccessを設定
  2. 02CIスモークテスト用のサービストークン追加
  3. 03サービストークン認証情報のローテーション
  4. 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-emailsallow-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 の認証を参照してください。

コメント