ラストマイル セキュリティ

ラストマイル セキュリティは、API サービスによってプロキシされるバックエンド サービスを保護します。ラストマイル セキュリティの主な目的は、アプリ デベロッパーがバックエンド サービスの URL を検出し、そのバックエンド URL に直接アクセスする API プロキシをバイパスする、いわゆる「エンドラン」攻撃を防ぐことです。

ラストマイル セキュリティを設定するための主要なオプションは次のとおりです。

  • クライアント TLS / SSL
  • 送信の認証
  • Node.js tls モジュール

クライアント TLS / SSL

ラストマイルを保護するための主なメカニズムはクライアント TLS / SSL で、「相互認証」とも呼ばれます。

Edge からバックエンドへの TLS の構成(Cloud と Private Cloud)をご覧ください。

送信の認証

ラストマイル セキュリティは、API プロキシがバックエンド サービスに認証情報を提示するよう要求することでも適用できます。

たとえば、API プロキシにバックエンド サービスへの API キーを提示させる場合です。また、API プロキシが OAuth クライアントの認証情報アクセス トークンを取得、提示するように構成することもできます。

API キー

API キーは、API プロキシからバックエンド サービスへの送信リクエストに適用できます。これは、バックエンド サービスが API キーの発行と検証が可能な API であることを前提としています。

送信リクエストに API キーを提示する API プロキシを設定する場合は、ランタイムに API プロキシによって取得できる場所に API キーを格納します。API キーを格納する場所としては Key-Value マップがあります。Key Value Map Operations ポリシーをご覧ください。

AssignMessage ポリシータイプを使用して、API キーを HTTP ヘッダー、クエリ パラメータ、またはペイロード要素として送信リクエストに追加できます。Assign Message ポリシーをご覧ください。

OAuth クライアントの資格情報

OAuth クライアントの資格情報を使用すると、API キーに取消可能レイヤを追加できます。バックエンド サービスが OAuth クライアントの資格情報をサポートしている場合は、API プロキシがクライアントの資格情報アクセス トークンをリクエストごとに提示するように構成できます。

API プロキシは、トークン エンドポイントからアクセス トークンを取得するためにコールアウトを実施するように構成する必要があります。また、呼び出しごとに新しいアクセス トークンを取得しないよう、アクセス トークンをキャッシュに保存する必要もあります。

送信クライアントの資格情報を実装する方法はいくつかあります。

このサンプルを変更してトークン エンドポイントを呼び出すと、アクセス トークンを取得できます。このサンプルでは、JavaScript を使用してトークンを HTTP Authorization ヘッダーとして送信リクエストに添付しています。これを行うために Assign Message ポリシーを使用することもできます。

SAML

GenerateSAMLAssertion ポリシータイプを使用すると、API プロキシからバックエンド サービスへの送信 XML リクエスト メッセージに SAML アサーションを添付できます。これにより、バックエンド サービスは API プロキシから受信したリクエストに対して認証と認可を行えます。

SAML アサーション ポリシーをご覧ください。

Node.js

API プロキシ ターゲットが Node.js アプリケーションの場合、Node.js の tls モジュールを使用して、バックエンド サービスとの安全な接続を作成できます。Node.js で通常行うのと同じ方法で tls モジュールを使用して送信リクエストを行います。基本的には、クライアント側の鍵と証明書(.pem ファイル)を resources/node ディレクトリに追加してスクリプト内に読み込む必要があります。tls モジュールとそのメソッドの使用方法については、Node.js tls モジュールのマニュアルをご覧ください。詳細については、Node.js モジュールの Edge サポートについてをご覧ください。