Azure API Management のサブスクリプション

Azure API Management での "サブスクリプション" は、API コンシューマーが API Management インスタンスを通じて公開された API にアクセスするための最も一般的な方法です。 この記事では、この概念の概要について説明します。

サブスクリプションとは

API Management を通じて API を公開することで、サブスクリプション キーを用いて API アクセスを簡単に保護できます。 公開された API を使用する必要がある開発者は、これらの API を呼び出すときに、有効なサブスクリプション キーを HTTP 要求に含める必要があります。 有効なサブスクリプション キーがない場合、呼び出しは次のようになります。

  • API Management ゲートウェイによって直ちに拒否されます。
  • バックエンド サービスに転送されません。

API にアクセスするには、開発者にサブスクリプションとサブスクリプション キーが必要です。 サブスクリプションは、基本的にサブスクリプション キーのペアの名前付きコンテナーです。

さらに、次の点も考慮する必要があります。

  • 開発者は、API 発行元の承認なしにサブスクリプションを取得できます。
  • API の公開元は、API コンシューマー用のサブスクリプションを直接作成することもできます。

ヒント

API Management では、API へのアクセスをセキュリティで保護するための他のメカニズムもサポートしています。たとえば、以下があります。

サブスクリプション キーを管理する

定期的なキーの再生成は、一般的なセキュリティ対策です。 サブスクリプション キーを必要とする Azure サービスと同様に、API Management でもキーをペアで生成します。 サービスを利用する各アプリケーションは、キー A からキー B に切り替え、最小限の中断で鍵 A を再生成できます。その逆も同様です。

Note

  • API Management には、有効期限の設定やキーの自動ローテーションなど、サブスクリプション キーのライフサイクルを管理するための組み込み機能は用意されていません。 Azure PowerShell や Azure SDK などのツールを使用して、これらのプロセスを自動化するワークフローを開発できます。
  • API への時間制限付きアクセスを強制するために、API 発行元はサブスクリプション キーを含むポリシーを使用したり、トークンベースの認証などの組み込みの有効期限を提供するメカニズムを使用したりできます。

サブスクリプションの範囲

サブスクリプションは、製品、すべての API、または個々の API というさまざまな範囲に関連付けることができます。

製品のサブスクリプション

従来、API Management のサブスクリプションは、常に 1 つの 製品のスコープに関連付けられていました。 開発者 :

  • 開発者ポータルで製品の一覧を確認していました。
  • 使用する製品のサブスクリプション要求を送信します。
  • これらのサブスクリプションのキー (自動的に承認または API 発行元によって承認) を使用して、製品内のすべての API にアクセスします。

現時点では、製品をスコープとするサブスクリプションは、開発者ポータルのユーザー プロファイル セクションにのみ表示されます。

製品のサブスクリプション

すべての API または個々の API のサブスクリプション

次のいずれかへのアクセスを許可するキーを作成することもできます。

  • 1 つの API、または
  • API Management インスタンス内のすべての API。

このような場合、最初に、製品を作成してそれに API を追加する必要はありません。

すべてのアクセス許可を持つサブスクリプション

各 API Management インスタンスには、不変の全 API サブスクリプション ("すべてのアクセス許可を持つサブスクリプション" とも呼ばれる) が付属しています。 この組み込みサブスクリプションにより、テスト コンソール内での API のテストとデバッグがより簡単になります。

警告

すべてのアクセス許可を持つサブスクリプションを使用すると、API Management インスタンス内のすべての API へのアクセスが可能になります。これは、承認されたユーザーのみが使用する必要があります。 このサブスクリプションを定期的な API アクセスに使用したり、クライアント アプリにすべてのアクセス許可を持つサブスクリプションのキーを埋め込んだりしないでください。

Note

API スコープのサブスクリプションまたはすべてのアクセス許可を持つサブスクリプションを使用している場合、製品スコープで構成されているポリシーは、そのサブスクリプションからの要求には適用されません。

スタンドアロン サブスクリプション

API Management では、開発者アカウントに関連付けられない "スタンドアロン" サブスクリプションも許可します。 この機能は、サブスクリプションを共有する複数の開発者やチームと同様のシナリオで役立ちます。

所有者を割り当てずにサブスクリプションを作成すると、サブスクリプションはスタンドアロン サブスクリプションになります。 開発者とチームの残りの部分にスタンドアロン サブスクリプション キーへのアクセスを許可するには、次のいずれかを実行します。

  • サブスクリプション キーを手動で共有します。
  • カスタム システムを使用して、サブスクリプション キーをチームで使用できます。

Azure portal でサブスクリプションを作成する

API の公開元は、Azure portal で直接サブスクリプションを作成できます。

API Management でサブスクリプション キーを使用して、または使用しないで要求を処理する方法

既定では、開発者がサブスクリプション キーを使用してアクセスできるのは製品または API のみです。 シナリオによっては、API の公開元は、サブスクリプションを必要としない製品または特定の API を公開することがあります。 発行元は特定の API への、セキュリティで保護されていないアクセスを有効にできますが、クライアント アクセスをセキュリティで保護するために別のメカニズムを構成することが推奨されています。

注意事項

サブスクリプションを必要としない製品または API を構成する場合は注意が必要です。 この構成では制限が過度に緩められ、API が特定の API セキュリティの脅威に対してより脆弱になるおそれがあります。

ポータルを使用してサブスクリプション要件を無効にするには:

  • 製品の要件の無効化 - 製品の [設定] ページで [サブスクリプションを要求する] を無効にします。
  • API の要件の無効化 - API の [設定] ページで [サブスクリプションは必須です] を無効にします。

サブスクリプション要件を無効にすると、選択した 1 つまたは複数の API にサブスクリプション キーなしでアクセスできます。

API Management では、サブスクリプション キーのないクライアントから API 要求を受信すると、次のルールに従ってその要求を処理します。

  1. まず、API を含むがサブスクリプションを必要としない製品 ("オープンな" 製品) が存在するかどうかを確認します。 オープンな製品が存在する場合は、その製品用に構成された API、ポリシー、およびアクセス規則のコンテキストで要求を処理します。
  2. API を含むオープンな製品が見つからない場合は、API にサブスクリプションが必要かどうかを確認します。 サブスクリプションが必要ない場合は、その API と操作のコンテキストで要求を処理します。
  3. 構成済みの製品または API が見つからない場合、アクセスは拒否されます。

次の手順

API Management の詳細情報:

  • API Management ポリシーがさまざまなスコープでどのように適用されるかを確認します。
  • API Management の他の概念を確認します。
  • チュートリアルに従って API Management の詳細を確認します。
  • FAQ ページで一般的な質問を確認します。