セキュリティ
デフォルトでは、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が必要な場合accessはauthenticated.サポートされている値は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 パス、トラフィック・コントローラー:
- をチェックする。
Authorizationヘッダが存在する。存在しない場合は401 Unauthorized. - Vonage の認証サービスに対して認証情報を検証し、呼び出し元がインスタンス所有者と同じ Vonage アカウントに属していることを確認します。無効または不一致の場合は
403 Forbidden. - バリデーションがパスした場合、リクエストは変更されずにアプリケーションに転送される。
について 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