mcpField
S
secure-endpoint

secure-endpoint

github.com/ngrokセキュリティ18145 回インストール4 日前に更新
リポジトリ

secure-endpoint について

secure-endpointは、アプリケーションを変更せずにngrok Traffic Policyでアクセス制御、リクエスト制限、エッジ応答を設定するスキルです。アプリ外でエンドポイントを保護する場面を対象としています。

主な機能

  1. 01OAuth/OIDCログインゲートの設定
  2. 02IPアドレスやCIDRによる制限
  3. 03パスや条件によるリクエスト拒否
  4. 04リクエストレートの制限
  5. 05エッジからのカスタム応答
  6. 06ヘッダーの追加・削除

活用シーン

  1. 01ログインを必須にし、特定ユーザーに限定
  2. 02指定したIPやCIDRからのみアクセスを許可
  3. 03上流を保護するためクライアントをレート制限
  4. 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 を使います。
  • アプリのコードを変更する必要はありません。アプリの認証ミドルウェアを使おうとしている場合は、そこで止めてください。このスキルがその役割を置き換えます。

コメント