secure-endpoint について
secure-endpointは、アプリケーションを変更せずにngrok Traffic Policyでアクセス制御、リクエスト制限、エッジ応答を設定するスキルです。アプリ外でエンドポイントを保護する場面を対象としています。
主な機能
- 01OAuth/OIDCログインゲートの設定
- 02IPアドレスやCIDRによる制限
- 03パスや条件によるリクエスト拒否
- 04リクエストレートの制限
- 05エッジからのカスタム応答
- 06ヘッダーの追加・削除
活用シーン
- 01ログインを必須にし、特定ユーザーに限定
- 02指定したIPやCIDRからのみアクセスを許可
- 03上流を保護するためクライアントをレート制限
- 04メンテナンスページをエッジから返す
MCP 対応
ngrok MCPサーバーが接続されている場合、Traffic Policyを事前に検証する手順が示されています。関連するngrokツールでポリシー設定やエンドポイントの状態も扱えます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ngrok/ skills --skill secure-endpointインストール後、Claude Code で/secure-endpointを入力して読み込まれたか確認します。
詳細
エンドポイントを保護する
Traffic Policy を使って、アプリを変更せずにエンドポイントにアクセス制御、スロットリング、またはエッジレスポンスを追加します。一般的なアクセス制限を1つのスキルでカバーします。依頼に合ったシナリオに進んでください。
始める前に
認証が必要です(ngrok-setup)。アクションの設定を取得し、保護するエンドポイントがプライベートな受信先の場合は、内部バインディングのルールも ngrok-engine から取得してください。
シナリオ
ログインを必須にする(OAuth / OIDC)
エンドポイントを ID プロバイダーの背後に置き、必要に応じて特定のユーザーに制限します。
on_http_request:
- actions:
- type: oauth
config: { provider: google }
- expressions:
- "!actions.ngrok.oauth.identity.email.endsWith('@yourcompany.com')"
actions:
- type: deny
プロバイダーの全リストと生の OIDC については、ngrok-engine -> ngrok-engine/references/auth-actions.md を参照してください。
特定の IP に制限する
既知のアドレス/CIDR のみを許可し、それ以外を拒否します。
on_http_request:
- actions:
- type: restrict-ips
config:
enforce: true
allow:
- 203.0.113.4/32
- 198.51.100.0/24
範囲には restrict-ips を使います。conn.client_ip in [...] は文字列を完全一致で比較します。単独のアドレス('203.0.113.4')には一致しますが、CIDR には一致しません。203.0.113.4 は文字列 203.0.113.4/32 と等しくないため、CIDR のリストを指定すると何にも一致せず、全員が拒否されます。CIDR を評価するには restrict-ips を使います。CEL の in テストは、完全一致のアドレスがいくつかの場合には問題ありません。
パスまたは条件をブロックする(拒否)
on_http_request:
- expressions: ["req.url.path.startsWith('/admin')"]
actions:
- type: deny
config: { status_code: 403 }
レート制限
クライアントごとにスロットリングして、アップストリームを保護します。現在の rate-limit アクション設定を ngrok-engine から取得します(名前、レート、バケットキー、アルゴリズム、容量を指定します)。ほかのアクションと同じ方法で追加してください。
メンテナンスページ/カスタムレスポンス
アップストリームに到達せず、エッジから直接レスポンスを返します。
on_http_request:
- actions:
- type: custom-response
config:
status_code: 503
headers: { content-type: text/html }
body: "<html><body><h1>Back soon</h1></body></html>"
アプリに一切アクセスしないヘルスチェック:
on_http_request:
- expressions: ["req.url.path == '/healthz'"]
actions:
- type: custom-response
config:
{
status_code: 200,
headers: { content-type: text/plain },
body: "ok",
}
ヘッダーを追加/削除する
通常は補助的な手順として使います(アップストリーム認証ヘッダーの挿入、CORS の追加、ヘッダーの削除など)。ngrok-engine の add-headers を参照してください。
組み合わせる
ルールは順番に実行されます。複数のルールを重ねてください。API ゲートウェイの一般的な入口は、restrict-ips -> oauth -> rate-limit -> forward です。チェーンを停止するアクション(deny、custom-response)は、チェーンを停止させるルールに含めてください。
適用する
ユーザーが利用する接続先にポリシーを適用します。ngrok-surfaces を参照してください。ポリシー本体はどこでも同じです。ngrok MCP サーバーが接続されている場合は、まずポリシーを検証してください(ngrok-engine を参照)。
エージェント向けの注意事項
- ユーザーの言葉に合ったシナリオを選び、すべてを列挙しないでください。
- ほかの作業と組み合わせられます。Webhook 受信先の保護には、このスキルの認証ルールと
receive-webhooksの verify+forward を使います。 - アプリのコードを変更する必要はありません。アプリの認証ミドルウェアを使おうとしている場合は、そこで止めてください。このスキルがその役割を置き換えます。