+
+

ラボ 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 を追加します。

  1. Omni Channel API Administration ページに移動します。

  2. API定義の下にあるPoliciesタブをクリックします。

    module5 lab2 ap apimanager policies
  3. Add Policy ボタンをクリックします。

    module5 lab2 ap apimanager policies applyRateLimiting1
  4. Rate Limiting ポリシーを選択して、Next ボタンをクリックします。

    module5 lab2 ap apimanager policies applyRateLimiting2
  5. 図のように、1分間に最大3つのリクエストを入力し、Apply ボタン をクリックします。

    module5 lab2 ap apimanager policies configRateLimiting

    ポリシーをすべてに適用することも、特定のメソッドとリソースに適用することもできます。

    レート制限が有効になるのを見るために、期間を Minutes に設定していることを確認してください。

  6. APIレベルのポリシーにレート制限のポリシーが表示されるはずです。

    module 5 lab2 ap apimanager appliedPolicy ratelimiting
  7. 1分待ちます(API Gatewayはデフォルトで60秒ごとにポリシーの更新を受信します)。 また、ログを確認することで、APIが新しいポリシーを受信したことを確認することもできます。 アプリケーションの Runtime Manager のログのタブの下を見てください。 以下の com.mulesoft.module.policies…​ のようなログメッセージを探します。:

    module5 lab2 select runtime manager
    module 5 lab 1a logs
  8. Postmanまたは他のAPIテストツールを使用してAPIをテストし、最後に/products/searchを追加してプロキシURLにアクセスします。 (例: http://<ユーザ名>-proxy-omni-channel.us-e2.cloudhub.io/products/search)

    module 5 lab2 browser json response ratelimiting
  9. Send ボタンを 3回 クリックして、もう一度テストします。

  10. 3回目の呼び出しで、Quota has been exceeded を示すメッセージが表示されます。 これは、レート制限ポリシーが適用されたことを示しています。

    module 5 lab2 browser json response fail ratelimiting
  11. Remove ボタンをクリックして、Rate Limiting を削除してください。

    module 5 lab2 ap apimanager appliedPolicy ratelimiting remove

    Rate Limiting削除 しましたか?

ステップ 2: SLA層の作成

API Managerでは、API所有者が設定した SLA層 に基づいてアクセスすることができます。ただし、これはオプションです。 前のステップで説明したように、SLA 層なしでアクセスを提供することも可能です。 API 所有者は、事前に定義された SLA 層を設定して、消費者が API へのアクセスを要求する際に表示したり選択したりできるようにすることができます。 API に SLA 層が定義されていない場合、アプリケーション所有者は SLA 層なしでアクセスを要求することができます。

API バージョンに新しい SLA 層を定義してみましょう。

  1. Add SLA Tier をクリックします。

    3つの[SLA tier]を設定します:

    Tier Approval Throughput Period

    Trial

    Automatic

    1

    Minute

    Gold

    Manual

    10

    Second

    Platinum

    Manual

    100

    Second

    module 5 lab2 ap apimanager slatier add
  2. 階層を構成するためのフィールドに入力します。

    • 階層に 名前 (Name) をつけます。

    • この階層での申請アクセス 承認 (Approval) を自動的に承認するか、手動で承認するかを指示します。

    • 時間帯ごとに許可されるリクエスト数を指定して 制限値 (Limites) を定義します。

    • 追加 (Add) をクリックすると、階層が保存されます。

    • 上記をすべての階層を繰り返します.

      module 5 lab2 ap apimanager slatier add config
  3. SLA 層は、先ほど定義したすべての情報とともに表示されます。さらに、その層に登録されているアプリケーションの数を示す列があります。また、行内のリンクを使用して層を編集または削除することができます。

    module5 lab2 ap apimanager slatiers created
    使用しているMuleのバージョンに応じて、正しいポリシーバージョンを選択してください。

ステップ 3:Rate Limiting SLA-based ポリシーの追加

SLA層 を強制するには、SLA ベースのレート制限ポリシーまたはスロットリングポリシーを適用する必要があります。これらのポリシーでは、APIを使用するすべてのアプリケーションが特定の階層に登録する必要があります。Anypoint Platformがコントラクトした階層を適切に適用できるように、APIコールごとにクライアントの資格情報が必要になります。

エンドポイントにrate-limitingポリシーを適用してみましょう。

  1. 左メニューの Policies リンクをクリックし、Add Policy ボタンをクリックすると、組織で利用可能なポリシーのリストが表示されます。

    module5 lab2 ap apimanager policies applyRateLimiting1
  2. Rate limiting - SLA based policyを選択し、Advanced Options の中の最新のポリシーバージョンを選択して、Apply ボタンをクリックします。

    module5 lab2 ap apimanager slatier ratelimiting slabased
  3. Client ID Expression の値を次のように変更します #[attributes.headers['client_id']]

  4. Client Secret Expression の値を次のように変更します #[attributes.headers['client_secret']]

    その他のユースケースについては、以下の点にご注意ください。選択したポリシーによっては、さらに設定を行う必要がある場合があります。
    適用するポリシーがグレーアウトされている場合は、エンドポイントに適用することはできません。次のいずれか:
    - 同じ要件を満たす別のポリシーがすでに適用されている(Fulfillsフィルターを参照)。
    - 適用したいポリシーには、他のポリシーを最初に適用する必要がある場合(必要条件欄を参照)
    ポリシーを削除するには、[Remove] をクリックします。ポリシーは直ちにエンドポイントから削除されます。ポリシーを再適用する場合は、再度設定する必要があることに注意してください。以前の設定は保存されません。 ユーザーは、適用されたポリシーを編集することもできます。

ステップ 4: APIへのアクセスを要求

API は検出可能でセルフサービスであることを思い出してください。 アクセスを要求するためには、Exchangeポータルへ移動します。

  1. Exchange にアクセスし、Omni Channel Experience API を選択します。

    module5 lab2 exchange navigate
  2. 右上にある Request Access ボタンをクリックします。

    module5 lab3 omni channel request access

    バージョンパネルでは、別のインスタンスが追加されていることがわかります。今回デプロイしたアプリケーションです。

  3. ポップアップウィンドウが表示されます。

    module 5 lab2 ap apimanager apiportal newApplication
  4. APIインスタンスで、APIを選択します。

  5. Applicationで、 Create a new Application を選択します。

    module5 lab2 create new application
  6. 下図のような新規アプリケーションダイアログを完成させます(<user name> iPhone Application のようなユニークなアプリケーション名を作成する必要があります)。完了したら、Create をクリックします。

    module 5 lab2 ap apimanager apiportal newApplicationDetails

    APIに関連付けられた階層があるので、階層も選択する必要があります。

  7. デプロイしたAPIインスタンスを選択します。

  8. Trial を選択します。

  9. Request Access ボタンをクリックします。

    module 5 lab2 ap apimanager apiportal selectTier
  10. デフォルトでは、すべてのAPIリクエストは Trial SLA層で承認されます。 +Client ID+と+Client secret+が表示されます。

    module 5 lab2 ap apimanager apiportal client

    これらの値は、次のステップで API を呼び出す際に使用するため、記録してください。

  11. Exchangeでは、My applications をクリックして、登録されているすべてのアプリケーションにアクセスできます。

    module5 lab2 my applications menu
  12. My Applications をクリックします。 すると、先ほど作成したAPIが表示されます。

    module5 lab2 client apps list
  13. 自分のメールを確認してください。

  14. 自動承認されたことを示す以下の登録メールが表示されるはずです。

    module 5 lab2 email applicationApproved

    手動で承認するように階層を設定している場合は、開発者がアプリケーションへのアクセスを要求したときにメール通知が送信されます。 アプリケーションタブでアプリケーションを確認し、リクエストを承認、拒否、または取り消すことができます。 開発者が階層の変更を要求した場合は、変更要求を確認して新しい階層のアプリケーションを承認したり、変更要求を拒否したりすることもできます。

ステップ 5:APIをテスト

次に、Omni Channel Experience APIをテストします。

  1. Postmanまたは他のAPIテストツールを使用してAPIを再度テストし、/products/searchを使用してCloudHub URLにアクセスします。例:
    http://<ユーザ名>-proxy-omni-channel.us-e2.cloudhub.io/products/search.

  2. レスポンスが表示されるはずです:

    Invalid client id or secret

    これは、Rate Limiting - SLA が適用されるためです。

    module 5 lab2 browser response failRateLimitPolicy

ステップ 6: 認証情報を使ってAPIをテスト

  1. リクエストヘッダーに client_idclient_secret を追加します。

    アプリケーションの認証情報を入力したので、製品情報にアクセスできるようになっているはずです。

    module 5 lab2 browser response json clientIdEnforcement
  2. テストを再度実行すると、Trial のレート制限を超えていることがわかります。

    module 5 lab2 browser exceededCalls

まとめ

このラボでは、以下の手順を完了しました:

  • Rate limiting ポリシーの適用

  • SLA層の作成

  • Rate Limiting SLA-based ポリシーの追加

  • APIへのアクセスを要求

  • 認証情報を使わずにAPIをテスト

  • 認証情報を使ってAPIをテスト

API を管理し、ポリシーを適用して API の セキュリティとガバナンスを強化 することで、より優れた 制御 が可能になりました。レート制限ポリシーを簡単に適用し、SLA 層を追加することで、管理と運用を容易にして 拡張性 を高めることができました。APIへの 簡単なアクセス を提供するための基本的なAPIポータルを作成し、SLAに基づいてプロビジョニングされたAPIにコンシューマーの資格情報を使用してアクセスする方法をテストしました。

さらに進む:

おめでとうございます!ラボ2が完了しました。

ラボ 3に進んでください。

Submit your feedback!
Share your thoughts to help us build the best workshop experience for you!
Take our latest survey!