セキュリティ

デフォルトでは、VCRアプリケーションのすべてのエンドポイントは一般にアクセス可能です。そのため security ブロックイン vcr.yml を使用すると、3つのアクセス・レベルとオプションの認証実施を使用して、パスごとにアクセスを制御できます。

アプリケーションのすべてのエンドポイントにセキュリティルールを設定することを強く推奨します。エンドポイントを無防備なままにしておくと、アプリケーションが不正アクセスや不正使用、予期せぬコストにさらされることになります。最低限、制限的なデフォルト・アクセス・レベルを設定し、公開が必要なパス(Vonage ウェブフック・コールバックなど)のみを明示的に開くようにしてください。

アクセスレベル

レベル 説明
public 認証は不要。誰でもエンドポイントに到達できる。
private プラットフォームの外部からはアクセスできない。内部VCRサービスのみ呼び出すことができる。
authenticated の有効な Vonage API 認証情報が必要です。 Authorization ヘッダ(HTTP Basic: base64(api_key:api_secret)).アプリケーションにリクエストを転送する前に、プラットフォームは認証情報を検証します。

構成

instance:
    security:
        access: private
        override:
            - path: "/webhooks/*"
              access: public
            - path: "/api/**"
              access: authenticated
              auth-method: vonage_basic
  • access を設定する。 デフォルト アクセス・レベルは、オーバーライドに一致しないすべてのパスに適用されます。
  • override はパス固有のルールのリストである。ルールは順番に評価される。
  • auth-method が必要な場合 accessauthenticated.サポートされている値は vonage_basic.

パスのワイルドカード

ワイルドカード 試合
* 単一のパスセグメント /users/*/profile 試合 /users/123/profile ただし /users/123/settings/profile
** 任意の数のパスセグメント /api/** 試合 /api/v1, /api/v1/users, /api/v1/users/123等々。

Webhookエンドポイントには無制限のアクセスが必要

Vonageプラットフォームのコールバック(着信コール、着信メッセージ、配信レシートなど)は、インスタンスの外部から発信されます。これらのエンドポイントは publicそうでなければ、Vonageプラットフォームはそれらに到達できず、プロバイダーはイベントを受信できません。

instance:
    security:
        access: private
        override:
            - path: "/onCall"
              access: public
            - path: "/onMessage"
              access: public
            - path: "/api/**"
              access: authenticated
              auth-method: vonage_basic

認証アクセスの仕組み

リクエストが authenticated パス、トラフィック・コントローラー:

  1. をチェックする。 Authorization ヘッダが存在する。存在しない場合は 401 Unauthorized.
  2. Vonage の認証サービスに対して認証情報を検証し、呼び出し元がインスタンス所有者と同じ Vonage アカウントに属していることを確認します。無効または不一致の場合は 403 Forbidden.
  3. バリデーションがパスした場合、リクエストは変更されずにアプリケーションに転送される。

について vonage_basic auth メソッドは HTTP Basic 認証を使用します。呼び出し側はVonage APIキーとAPIシークレットをBasic認証クレデンシャルとして送信する必要があります:

Authorization: Basic base64(api_key:api_secret)

ほとんどのHTTPクライアントは、ユーザー名とパスワードを与えると自動的にこれを処理する:

リクエストがハンドラに到達する前に、プラットフォームが認証を行います。ハンドラの内部で呼び出し元を特定する必要がある場合、プラットフォームは検証済みの Account ID を x-neru-apiaccountid ヘッダーを使用する:

認証メソッドの継承

もし override エントリセット access: authenticated が省略されている。 auth-methodを継承する。 auth-method 値を指定します。どちらも設定されていない場合、デプロイメント API は設定を拒否します。

instance:
    security:
        access: public
        auth-method: vonage_basic   # inherited by all authenticated overrides
        override:
            - path: "/admin/**"
              access: authenticated  # uses vonage_basic from above
            - path: "/api/**"
              access: authenticated  # also uses vonage_basic from above