
ラボ 2: ポリシーの適用
概要
API Manager は、Muleランタイムと統合されているAPIポリシー管理およびガバナンスツールです。このラボでは、Runtime Manager上にデプロイされたOmni Channel APIとAPI Manager間のセキュアな接続を利用して、APIのセキュリティ、サービス品質、コンプライアンスポリシーを管理できるように各種ポリシーを設定します。
前回のラボでは、CloudHub上の Mythical社 のOmni Channel APIにAnypoint Gatewayをデプロイしました。
これにより、API管理者は、API がどのように動作しているか、どのように使用されているか誰によって使用されているかを簡単に理解することができ、API 管理者は潜在的な問題が発生する前に特定することができます。
このラボでは、Mythical社 の Omni Channel API のプロキシゲートウェイにポリシーを適用します。API Manager は、コンプライアンス、サービス品質、セキュリティに関連する多くのアウトオブボックス (OOTB) ポリシーを提供します。さらに、独自のポリシーを追加することもできます。
ステップ 1: レート制限ポリシーの適用
ポリシー管理をテストするために、APIに Rate Limiting Policy を追加します。
-
Omni Channel API Administration ページに移動します。
-
API定義の下にあるPoliciesタブをクリックします。
-
Add Policy ボタンをクリックします。
-
Rate Limiting ポリシーを選択して、Next ボタンをクリックします。
-
図のように、1分間に最大3つのリクエストを入力し、Apply ボタン をクリックします。
ポリシーをすべてに適用することも、特定のメソッドとリソースに適用することもできます。
レート制限が有効になるのを見るために、期間を Minutes に設定していることを確認してください。
-
APIレベルのポリシーにレート制限のポリシーが表示されるはずです。
-
1分待ちます(API Gatewayはデフォルトで60秒ごとにポリシーの更新を受信します)。 また、ログを確認することで、APIが新しいポリシーを受信したことを確認することもできます。 アプリケーションの Runtime Manager のログのタブの下を見てください。 以下の com.mulesoft.module.policies… のようなログメッセージを探します。:
-
Postmanまたは他のAPIテストツールを使用してAPIをテストし、最後に/products/searchを追加してプロキシURLにアクセスします。 (例: http://<ユーザ名>-proxy-omni-channel.us-e2.cloudhub.io/products/search)
-
Send ボタンを 3回 クリックして、もう一度テストします。
-
3回目の呼び出しで、Quota has been exceeded を示すメッセージが表示されます。 これは、レート制限ポリシーが適用されたことを示しています。
-
Remove ボタンをクリックして、Rate Limiting を削除してください。
Rate Limiting を 削除 しましたか?
ステップ 2: SLA層の作成
API Managerでは、API所有者が設定した SLA層 に基づいてアクセスすることができます。ただし、これはオプションです。 前のステップで説明したように、SLA 層なしでアクセスを提供することも可能です。 API 所有者は、事前に定義された SLA 層を設定して、消費者が API へのアクセスを要求する際に表示したり選択したりできるようにすることができます。 API に SLA 層が定義されていない場合、アプリケーション所有者は SLA 層なしでアクセスを要求することができます。
API バージョンに新しい SLA 層を定義してみましょう。
-
Add SLA Tier をクリックします。
3つの[SLA tier]を設定します:
Tier Approval Throughput Period Trial
Automatic
1
Minute
Gold
Manual
10
Second
Platinum
Manual
100
Second
-
階層を構成するためのフィールドに入力します。
-
階層に 名前 (Name) をつけます。
-
この階層での申請アクセス 承認 (Approval) を自動的に承認するか、手動で承認するかを指示します。
-
時間帯ごとに許可されるリクエスト数を指定して 制限値 (Limites) を定義します。
-
追加 (Add) をクリックすると、階層が保存されます。
-
上記をすべての階層を繰り返します.
-
-
SLA 層は、先ほど定義したすべての情報とともに表示されます。さらに、その層に登録されているアプリケーションの数を示す列があります。また、行内のリンクを使用して層を編集または削除することができます。
使用しているMuleのバージョンに応じて、正しいポリシーバージョンを選択してください。
ステップ 3:Rate Limiting SLA-based ポリシーの追加
SLA層 を強制するには、SLA ベースのレート制限ポリシーまたはスロットリングポリシーを適用する必要があります。これらのポリシーでは、APIを使用するすべてのアプリケーションが特定の階層に登録する必要があります。Anypoint Platformがコントラクトした階層を適切に適用できるように、APIコールごとにクライアントの資格情報が必要になります。
エンドポイントにrate-limitingポリシーを適用してみましょう。
-
左メニューの Policies リンクをクリックし、Add Policy ボタンをクリックすると、組織で利用可能なポリシーのリストが表示されます。
-
Rate limiting - SLA based policyを選択し、Advanced Options の中の最新のポリシーバージョンを選択して、Apply ボタンをクリックします。
-
Client ID Expression の値を次のように変更します
#[attributes.headers['client_id']]
-
Client Secret Expression の値を次のように変更します
#[attributes.headers['client_secret']]
その他のユースケースについては、以下の点にご注意ください。選択したポリシーによっては、さらに設定を行う必要がある場合があります。
適用するポリシーがグレーアウトされている場合は、エンドポイントに適用することはできません。次のいずれか:
- 同じ要件を満たす別のポリシーがすでに適用されている(Fulfillsフィルターを参照)。
- 適用したいポリシーには、他のポリシーを最初に適用する必要がある場合(必要条件欄を参照)
ポリシーを削除するには、[Remove] をクリックします。ポリシーは直ちにエンドポイントから削除されます。ポリシーを再適用する場合は、再度設定する必要があることに注意してください。以前の設定は保存されません。 ユーザーは、適用されたポリシーを編集することもできます。
ステップ 4: APIへのアクセスを要求
API は検出可能でセルフサービスであることを思い出してください。 アクセスを要求するためには、Exchangeポータルへ移動します。
-
Exchange にアクセスし、Omni Channel Experience API を選択します。
-
右上にある Request Access ボタンをクリックします。
バージョンパネルでは、別のインスタンスが追加されていることがわかります。今回デプロイしたアプリケーションです。
-
ポップアップウィンドウが表示されます。
-
APIインスタンスで、APIを選択します。
-
Applicationで、 Create a new Application を選択します。
-
下図のような新規アプリケーションダイアログを完成させます(<user name> iPhone Application のようなユニークなアプリケーション名を作成する必要があります)。完了したら、Create をクリックします。
APIに関連付けられた階層があるので、階層も選択する必要があります。
-
デプロイしたAPIインスタンスを選択します。
-
Trial を選択します。
-
Request Access ボタンをクリックします。
-
デフォルトでは、すべてのAPIリクエストは Trial SLA層で承認されます。 +Client ID+と+Client secret+が表示されます。
これらの値は、次のステップで API を呼び出す際に使用するため、記録してください。
-
Exchangeでは、My applications をクリックして、登録されているすべてのアプリケーションにアクセスできます。
-
My Applications をクリックします。 すると、先ほど作成したAPIが表示されます。
-
自分のメールを確認してください。
-
自動承認されたことを示す以下の登録メールが表示されるはずです。
手動で承認するように階層を設定している場合は、開発者がアプリケーションへのアクセスを要求したときにメール通知が送信されます。 アプリケーションタブでアプリケーションを確認し、リクエストを承認、拒否、または取り消すことができます。 開発者が階層の変更を要求した場合は、変更要求を確認して新しい階層のアプリケーションを承認したり、変更要求を拒否したりすることもできます。
ステップ 5:APIをテスト
次に、Omni Channel Experience APIをテストします。
-
Postmanまたは他のAPIテストツールを使用してAPIを再度テストし、/products/searchを使用してCloudHub URLにアクセスします。例:
http://<ユーザ名>-proxy-omni-channel.us-e2.cloudhub.io/products/search. -
レスポンスが表示されるはずです:
Invalid client id or secret
これは、Rate Limiting - SLA が適用されるためです。
ステップ 6: 認証情報を使ってAPIをテスト
-
リクエストヘッダーに client_id と client_secret を追加します。
アプリケーションの認証情報を入力したので、製品情報にアクセスできるようになっているはずです。
-
テストを再度実行すると、Trial のレート制限を超えていることがわかります。
まとめ
このラボでは、以下の手順を完了しました:
-
Rate limiting ポリシーの適用
-
SLA層の作成
-
Rate Limiting SLA-based ポリシーの追加
-
APIへのアクセスを要求
-
認証情報を使わずにAPIをテスト
-
認証情報を使ってAPIをテスト
API を管理し、ポリシーを適用して API の セキュリティとガバナンスを強化 することで、より優れた 制御 が可能になりました。レート制限ポリシーを簡単に適用し、SLA 層を追加することで、管理と運用を容易にして 拡張性 を高めることができました。APIへの 簡単なアクセス を提供するための基本的なAPIポータルを作成し、SLAに基づいてプロビジョニングされたAPIにコンシューマーの資格情報を使用してアクセスする方法をテストしました。
さらに進む:
-
詳細について、 Mule 4 のポリシー を参照してください。
-
セキュリティポリシーの設定についてはこちらをご覧ください:
-
このラボで見たOOTBポリシーに加えて、 カスタムポリシーの作成をすることもできます。
-
詳細については、 APIバージョン管理
-
詳細については、 SLA 層を参照してください。
おめでとうございます!ラボ2が完了しました。
ラボ 3に進んでください。