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

完了

API Management を使用して API を発行するときに、ゲートウェイを介して API にアクセスできるユーザーを定義します。

あなたの会社の気象アプリでは、サービスにサブスクライブしている顧客のみが、API にアクセスでき、予測データを使用できるように保証する必要があります。 このアクセスの制御を実現するには、サブスクリプション キーを発行します。

重要

ここで述べるサブスクリプションは、Azure アカウントの管理に使用される Azure サブスクリプションとは関係ありません。

ここでは、サブスクリプション キーを使って API をセキュリティで保護する方法を学習します。

サブスクリプションとキー

API とそれらに含まれる情報を無料で利用できるようにすることを選択できます。 しかし、通常は、有料のユーザー、または仕事上の関係がある組織にアクセスを制限する必要があります。 API へのアクセスを制御する方法としては、サブスクリプションの利用があります。 サブスクリプションは、API へのユーザー アクセスをセグメント化するために使用されます。

サブスクリプション キーによって、これらのサブスクリプションへのアクセスを有効にする承認が形成されます。 保護された API にクライアントから要求を行うたびに、有効なサブスクリプション キーを HTTP 要求に含める必要があります。そうしないと、呼び出しは拒否されます。

サブスクリプション キーは自動生成される一意のキーで、API 呼び出しの一部として渡すことができます。 キーはサブスクリプションに直接関連しており、さまざまな領域をスコープにすることができます。 サブスクリプションでは、アクセス許可とポリシーを細かく制御することができます。

3 つの主なサブスクリプションのスコープは次のとおりです。

スコープ 詳細
すべての API ゲートウェイからアクセス可能なすべての API に適用されます。
単一の API インポートされた単一の API と、そのすべてのエンドポイントに適用されます。
成果物 成果物は、API Management で構成する 1 つまたは複数の API のコレクションです。 複数の成果物に API を割り当てることができます。 成果物には、さまざまなアクセス ルール、使用量クォータ、使用条件を含めることができます。 そのため、パートナーとサプライヤーに WeatherData API に対する異なるアクセス権を付与したい場合は、API を成果物に割り当ててから、Azure portal を使用して API を成果物に関連付けます。

保護された API を呼び出すアプリケーションでは、すべての要求にサブスクリプション キーを含める必要があります。

これらのサブスクリプション キーはいつでも再生成できます。たとえば、キーが、許可されていないユーザーと共有されていると疑う場合は、新規に作成できます。

Subscription keys.

すべてのサブスクリプションには、プライマリ キーとセカンダリ キーの 2 つのキーがあります。 2 つのキーがあることで、必要に応じてキーを再生成しやすくなります。 たとえば、プライマリ キーを変更し、ダウンタイムを回避したい場合は、アプリ内でセカンダリ キーを使用します。

サブスクリプションが有効になっている成果物の場合、クライアントはその成果物内の API を呼び出すときにキーを指定する必要があります。 開発者は、サブスクリプション要求を送信することでキーを取得できます。 要求を承認する場合は、サブスクリプション キーを (暗号化されたメッセージなどで) 安全に送信する必要があります。 この手順は、API Management ワークフローの中核です。

サブスクリプション キーを使用して API を呼び出す

アプリケーションで、サブスクリプションによって保護されている API エンドポイントを呼び出すすべての HTTP 要求に、有効なキーを含める必要があります。 キーは、要求ヘッダーに含めるか、URL のクエリ文字列パラメーターとして渡すことができます。

サブスクリプション キーの既定のヘッダー名は Ocp-Apim-Subscription-Key であり、既定のクエリ文字列名は subscription-key です。

API の呼び出しをテストする場合、Azure portal のテスト コンソール、開発者ポータル、またはコマンドライン ツール (curl など) を使用できます。 サブスクリプション キーのヘッダーを示す、開発者ポータルを使用した GET 要求の例を次に示します。

Screenshot that shows how to call your API from developer portal.

curl を使用して要求ヘッダーにキーを渡す方法の例を次に示します。

curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path

curl コマンドを使用して URL 内のクエリ文字列としてキーを渡す方法の例を次に示します。

curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>

ヘッダーで、または URL のクエリ文字列として、必須のキーが渡されなかった場合、API ゲートウェイから [401 アクセスは拒否されました] 応答が返されます。