Upgrade to Pro — share decks privately, control downloads, hide ads and more …

API Management overview v0.1.22.0401

API Management overview v0.1.22.0401

Azure API Management の概要説明資料です。

公開日に対して作成日が若干古いため一部の内容が古くなっている場合があります。併せて
公式ドキュメントもご参照ください。
https://learn.microsoft.com/ja-jp/azure/api-management/

トレーニング用のコンテンツは下記からご参照いただけます。
https://learn.microsoft.com/ja-jp/training/browse/?expanded=azure&products=azure-api-management

Ayumu Inaba

August 03, 2023
Tweet

More Decks by Ayumu Inaba

Other Decks in Technology

Transcript

  1. Microsoft Cognitive Service 4 視覚 音声 言語 知識 検索 Face

    Emotion Computer Vision Video Speech Speaker Recognition Custom Recognition Spell Check Linguistic Analysis Language Understanding Text Analytics Academic Knowledge Knowledge Exploration Entity Linking Recommendations Web Search Image Search Video Search News Search
  2. セブン銀行 PaaS のみでオープン API 基盤をスピード開発 オンラインバンキングシステムのフロントに、Azure の基盤を構築 外部に公開する API を管理する機能、および海外送金やリアルタイム振込といった外部サービスと連

    携するためのアプリケーションをホストする仕組みを PaaS のコンポーネントの組み合わせで実装。 Azure のパブリッククラウドと、プライベートクラウドが VPN 接続されたハイブリッドクラウド構成 6 http://ascii.jp/elem/000/001/607/1607230/
  3. 日本ユニシス オープンAPI公開基盤「Resonatex™(レゾナテックス)」サービス 金融機関をはじめ各事業体が持つ Web API を オープン API としてインターネット公開するための クラウド型プラットフォームサービス

    2017年1月から他の IT ベンダーに先駆け、 自社のオープン勘定系システム「BankVision」の Web API 公開サービスの提供を開始 テクノロジー面においては、マイクロソフトのクラウド プラットフォームであるMicrosoft Azure および Azure API Management を採用 利用状況に応じた柔軟な費用体系と、OAuth2.0、 OpenID Connect などの活用による高い セキュリティを実現 7
  4. Frictionless consumption Self-service user onboarding Front door Single point of

    ingress Essence of API management Facade Hide backends from frontends Move backends without impacting frontends Re-architect backends without impact on frontends Expose a subset of backend capabilities Aggregate or slice backends into APIs Modernize legacy backends Decouple frontend developers with mocks Route Authenticate Authorize Throttle Transform Trace Meter Discover APIs Learn how to use APIs Try APIs without writing any code Request and receive access to APIs Download API specs, samples, and SDKs Interact with the API provider Get usage reports
  5. Facade, front door, and frictionless consumption 12 User plane Data

    plane Management plane API Apps on devices App developers Discover Learn Try Onboard Get help Abstract and decouple Secure and protect Revise and version Monitor and measure Publish and monetize API providers Gateway Developer portal (micro)services
  6. API ライフサイクル API 開発 ビジネス要求 インタフェース API 構築 API 発行

    API 利用 API 運用 アプリ開発 ドキュメント テスト API ホスト 保護/最適化 バージョン API 開発者 API 管理者 API 管理者 アプリ開発者 監視 使用量 正常性
  7. API 構築 様々なスコープのポリシー設定で API の動作をカスタマイズ CORS 設定、呼び出し回数によるスロットリング、呼び出し元のアクセス制御、バックエンド API の保護、URL R

    ewrite、キャッシュ、モック応答、etc… 16 global product api operation inbound outbound to backend from backend from caller to caller GET /foo/bar HTTP/1.1 Host: api.constoso.com Key: 0123456789 0123456789 /foo /bar CORS LOG RATE QUOTA JWT CACHE URL BODY
  8. API 利用 User plane Data plane Management plane API Apps

    on devices App developers Discover Learn Try Onboard Get help Gateway Developer portal ① サ ブ ス クリプ シ ョン と API キ ー の 発 行 ② アプリ開発とキーの組み込み ③ API キ ー を 使 用 した 呼 び 出 し (micro)services ④ バ ックエ ンド API が 呼 び 出 され る
  9. API 利用 開発者ポータルは必須ではない 20 Data plane Management plane API Apps

    on devices App developers Abstract and decouple Secure and protect Revise and version Monitor and measure Publish and monetize API providers Gateway ② アプリ開発とキーの組み込み ① サ ブ ス クリプ シ ョン と API キ ー の 発 行 ③ API キ ー を 使 用 した 呼 び 出 し ④ バ ックエ ンド API が 呼 び 出 され る
  10. 価格レベルに基づく機能比較 24 https://docs.microsoft.com/ja-jp/azure/api- management/api-management-features Feature Consumption Developer Basic Standard Premium

    Azure AD integration1 No Yes No Yes Yes Virtual Network (VNet) support No Yes No No Yes Multi-region deployment No No No No Yes Availability zones No No No No Yes Multiple custom domain names No Yes No No Yes Developer portal2 No Yes Yes Yes Yes Built-in cache No Yes Yes Yes Yes Built-in analytics No Yes Yes Yes Yes Self-hosted gateway3 No Yes No No Yes TLS settings Yes Yes Yes Yes Yes External cache Yes Yes Yes Yes Yes Client certificate authentication Yes Yes Yes Yes Yes Policies4 Yes Yes Yes Yes Yes Backup and restore No Yes Yes Yes Yes Management over Git No Yes Yes Yes Yes Direct management API No Yes Yes Yes Yes Azure Monitor logs and metrics No Yes Yes Yes Yes Static IP No Yes Yes Yes Yes WebSocket APIs No Yes Yes Yes Yes GraphQL APIs (preview) Yes Yes Yes Yes Yes
  11. 価格表 25 使用量 Developer Basic Standard Premium Isolated プレビュー 目的

    API Management サービス の軽量型でサーバーレスの バージョン、実行ごとに課金 非運用ユースケースと評価 エントリレベルの運用ユース ケース 中容量の運用ユースケース 大容量またはエンタープライ ズ運用のユース ケース 高レベルの分離を必要とする エンタープライズ運用のユー ス ケース 料金 (ユニットごと) サブスクリプションごとに 0-1 百万回の呼び出し - 無償1 00 万以上の呼び出し - 10,000 呼び出しあた り $0.0425 $0.07/時間 $0.21/時間 $0.95/時間 $3.83/時間 追加ユニット (1 個以上) の 単価は、最初に購入したユ ニットの 50% TBA7 キャッシュ (ユニットごと) 外部のみ 10 MB 50 MB 1 GB 5 GB 5 GB スケールアウト (ユニット) 該当なし (自動スケーリング) 1 2 4 リージョンごとに 12 (電話サポートなど) リージョンごとに 12 (電話サポートなど) SLA 99.95% いいえ 99.95% 99.95% 99.99%1 99.99% 分離 共有 Private Private Private Private Private 使用制限 制限の適用 いいえ いいえ いいえ いいえ いいえ キャッシュ、外部3 はい はい はい はい はい はい 開発者ポータル いいえ はい はい はい はい はい 複数のカスタム ドメイン名4 いいえ はい いいえ いいえ はい はい 開発者ポータルでの Azure Active Directory 統合 いいえ はい いいえ はい はい はい 可用性ゾーンのサポート いいえ いいえ いいえ いいえ はい いいえ 仮想ネットワーク サポート いいえ はい いいえ いいえ はい はい 複数リージョン デプロイ いいえ いいえ いいえ いいえ はい はい セルフホステッド ゲートウェイ いいえ はい5 いいえ いいえ はい7 はい 予測最大スループット2 (per unit) 該当なし (自動スケーリング) 500 要求/秒 1,000 要求/秒 2,500 要求/秒 4,000 要求/秒 4,000 要求/秒 コンピューティングの分離 いいえ いいえ いいえ いいえ いいえ はい https://azure.microsoft.com/ja- jp/pricing/details/api-management/
  12. データプレーンのセキュリティ 27 Developer portal Gateway Admin console Key OAuth 2

    & OpenID Connect Client certificate IP filter External authorizer (custom) Rate limits and quotas “Downstream” “Upstream” Key Mutual certificate OAuth 2 & OpenID Connect* HTTP Basic IP filter Network security (VNET)
  13. 仮想ネットワークとの統合 外部モード ゲートウェイのバックエンドから VNET 内やオンプレ ミスリソースへの閉域ネットワークアクセスが可能に 開発者ポータルやゲートウェイのフロントエンドは変 わらずパブリックインターネットからアクセスが可能 内部モード API

    Management のすべてのサービスエンドポイント が VNET 内からのみアクセス可能に(独自 DNS 構成 が必要) ゲートウェイのフロントエンド閉域化されてしまうため、 Azure Portal からの API テストが使用不能になる 28 どちらの場合もAzure Portal 等による管理操作は変わらずパブリックインターネットから実施
  14. セルフホステッドゲートウェイ API Gateway を任意の場所でホストすることで、トラフィック フローを最適化し、セキュリティとコンプライアンス要件に対応 Gateway へのイングレス/エグレス通信共に Azure を経由する必要がない ゲートウェイは

    Docker コンテナーイメージと して提供され、オンプレ Kubernetes 等の 各種環境で実行可能 マネージドゲートウェイと比較すると一部の 機能に制限がある 29 Developer portal Gateway Admin portal Self-hosted Gateway Client App Backend API 管理プレーンへの通信 : 443 (構成情報、ハートビート、ログ等) https://docs.microsoft.com/ja-jp/azure/api- management/self-hosted-gateway-overview
  15. IP アドレス制限 VNET 統合を行わない場合には IP アドレス制限を検討する イングレス制御 : inbound ポリシーセクションで

    ip-filter ポリシーを利用する エグレス制御 : バックエンド API の Firewall で API-M の IP のみ許可する 30 Client Backend API API Gateway Ingress Egress Client の送信 IP を登録 API Management の送信 IP を登録 ※ 従量課金プランではサービスインスタンス専用のパブリック IP がないため設定できない Inbound ポリシー
  16. フロントエンド側の保護 クライアント証明書 クライアント証明書を要求するように構成し、validate- client-certificate ポリシーで提示された証明書を 検証する JSON Web Token の検証

    validate-jwt ポリシーで提示されたトークンが必要な 条件を満たしているか検証する クライアントは事前に IDP から必要なトークンを取得し、 HTTP ヘッダーやクエリパラメータで送信する必要が ある 31 Client API Gateway Ingress https://docs.microsoft.com/ja-jp/azure/api-management/api- management-access-restriction-policies
  17. バックエンド API の保護 バックエンド API が対応する認証方式に応じて必要な認証 情報をセットすることができる 基本認証 クライアント証明書認証 Managed

    ID による Azure AD 認証 33 Egress Backend API API Gateway 証明書認証は API 定義で Backend 指定画面でも設定できる (ポリシーが自動的に追加される) Managed ID は別途有効化しておく
  18. 管理プレーンと開発者ポータルのセキュリティ 35 Developer portal Gateway Admin console Username/Password Internet identity

    providers: Microsoft account Google account Facebook account Twitter account Delegated (custom) Azure AD Azure AD B2C App developers (use APIs) API providers Azure AD Role Based Access Control
  19. 開発者ポータルのユーザー認証 開発者ポータルにアクセスできるユーザーを認証することで API の不正利用を防ぐ 既定では「ユーザー名とパスワード」によるユーザー管理が有効になっているが、Azure AD や Azure AD B2C

    といった外部の Idp による認証も可能 自身が管理する Web サイトに認証を「委任」することも可能(対応する各種エンドポイントを 用意する必要がある) 36 Developer portal App developers (use APIs) Idp サインイン トークン トークン
  20. 管理プレーンの保護 Azure Portal や ARM API を利用する管理操作のアクセス 制御には Azure RBAC

    を利用する API Management が所属するサブスクリプションの Azure AD ユーザーに対して、必要な ロールが割り当てられている場合に管理操作が可能 下記は API Management 専用に設計されたロールだが、これ以外にも所有者や共同作 成者ロールもアクセス権を持っている 38 Role 読み取りアクセス[1] 書き込みアクセス[2] サービスの作成、削除、 スケーリング、VPN、カ スタム ドメインの構成 以前のパブリッ シャー ポータルへ のアクセス 説明 API Management Service Contributor ✓ ✓ ✓ ✓ スーパー ユーザー。 API Management のサービスとエンティ ティ (API やポリシーなど) への完全な CRUD アクセス権があ る。 以前のパブリッシャー ポータルにアクセスできる。 API Management サービス リーダー ✓ API Management のサービスとエンティティへの読み取り専 用アクセスがある。 API Management サービス オペレーター ✓ ✓ API Management サービスは管理できるが、エンティティの管 理はできない。 [1] API Management サービスとエンティティ (API やポリシーなど) への読み取りアクセス [2] 次の操作以外の API Management サービスとエンティティへの書き込みアクセス: インスタンスの作成、削除、およびスケーリング、VPN 構成、カスタム ドメインのセットアップ https://docs.microsoft.com/ja-jp/azure/api-management/api-management-role-based-access-control
  21. コンピューティングプラットフォーム API Management はレベルや作成時期に応じて基盤となる アーキテクチャが異なる 各バージョンの API Management の可用性はそれぞれのアーキテクチャから提供される 接続性や回復性を元に実現されている

    https://docs.microsoft.com/ja-jp/azure/api-management/compute-infrastructure 40 従量課金レベルを 使用している mtv1 : Multi-tenant v1 App Service ベース 2021 年 4 月以降に Portal で あるいは 2021-01-01-preview 以降の API で作成した stv2 : Single-tenant v2 VM Scale Sets ベース Premium レベルで ゾーン冗長を有効化している stv1 : Single-tenant v1 クラウドサービス ベース (クラシック) Yes Yes Yes No No No
  22. Service Level Agreement SLA 対象 マイクロソフトは、単一リージョン内で展開される Consumption レベル、Basic レベル、Standard レ

    ベル、Premium レベルで実行される API Management サービスのインスタンスが、99.95% 以上 の時間において、操作の実行要求に応答することを保証します。 マイクロソフトは、2 つ以上のリージョンにわたって展開される、Premium レベルで実行される API Management サービスのインスタンスが、99.99% 以上の時間において、操作の実行要求に応答 することを保証します。 マイクロソフトは、リージョン内の 2 つ以上の可用性ゾーンにわたって展開される、Premium レベルで 実行される API Management サービスのインスタンスが、そのリージョン内で 99.99% 以上の時 間において、操作の実行要求に応答することを保証します。 SLA 対象外 API Management サービスの Developer レベル。 自己ホスト型の API Management コンポーネント。 41 https://azure.microsoft.com/ja-jp/support/legal/sla/api-management
  23. 柔軟なスケーラビリティ 使用する価格レベルに応じてユニット当たりの想定スループットが 設定されている 容量が不足する場合はスケールアップ(=上位レベルに変更する)か、スケールアウト(ユニット数を増 やす)ことができる スケールアウトは手動で指定することも可能だが、Standard / Premium はもしくはメトリックに応じ て自動スケールさせることも可能

    (従量課金の場合は常に自動スケール) 42 スケールアウト Basic 1000 rps Standard 2500 rps Premium 4000 rps Premium 4000 rps Premium 4000 rps Basic 1000 rps Standard 2500 rps Standard 2500 rps Standard 2500 rps Premium 4000 rps ・・・・・・・・・・・・・ スケールアップ ~ 2unit ~ 4unit ~ 12unit /region
  24. 高可用性 Premium 価格レベルではゾーン冗長および複数リージョン デプロイを適用することで 99.99% の SLA が提供される 43 Region

    Zone 2 Zone 3 Zone 1 Availability Availability Availability Datacenter Datacenter Region 1 Region 2 Premium 以外は選択したリージョン内 のいずれかの場所に自動的に配置され る(可用性セットベース) Premium でも既定はこの構成 ゾーン冗長を有効にすることで内包する各ユニットを複 数ゾーンに対して分散配置することができる ゲートウェイだけでなく管理 API や開発者ポータルなど も冗長化され、ゾーン障害に対する回復性が向上する 複数リージョン配置を有効にすることで広域災害およびグローバル 負荷分散に対応し、リージョンの制限を超えたスケールアウトが可能 API は単一のURLでホストされるが最も近いリージョンに自動的に ルーティングされる セカンダリリージョンに配置されるのはゲートウェイ部分のみ Region 3
  25. 運用中の監視ポイント 監視や障害対応に必要な情報は API Management 特有 の機能と、より汎用的な Azure Monitor を使用する API

    Management 固有の機能 API 分析 問題の診断と解決 Azure Monitor 系の機能 リソース正常性 メトリックエクスプローラー アクティビティログ リソースログ Application Insights Log Analytics (診断設定) API 分析 問題の診断と解決 https://docs.microsoft.com/ja-jp/azure/api- management/api-management-howto-use-azure-monitor
  26. API Management 固有の監視と分析機能 下記の 2 機能は特に設定することなく API Management の作成直後から利用可能 ※

    ただし従量課金レベルを除く 46 API Management の API 分析 様々な観点(時刻、地理的な場所、API、操作、製品、サブスクリプション、ユー ザー、要求)で使用状況やパフォーマンスを分析 問題の診断と解決 APIM で公開された API のトラブルシューティングを支援するインテリ ジェントな対話型エクスペリエンス
  27. Azure Monitor Application Insights API Management だけでなく、クライアントおよびバックエン ドを横断したテレメトリの収集と分析を行う アプリや API

    に対しては SDK を使用したインストルメンテーションが必要 49 Azure API Management と Azure Application Insights の 統合 - Azure API Management | Microsoft Docs
  28. API の更新と変更管理 中継点となる API の変更は影響が大きいため、新旧を並行 稼働させることでサービス停止や混乱を防ぐ 非互換が発生する重大な仕様変更を伴う場合にはバージョン管理を行う Azure API Management

    のバージョン 互換性が保たれるバクフィックスやバックエンドの更改などにはリビジョン管理を行う API Management のリビジョン 52 クライアント v1 Rev1 (モック応答) Rev2 (実 API 呼出) API Managemnt api-version=v1 現在の リビジョン 正式版のAPI v1 Rev1 (モック応答) Rev2 (実 API 呼出) api-version=v1 正式版のAPI Before After 自動切換え V1 向け実装 API 仕様 V2 api-version = v1 api-version = v2 V2 向け実装 Client V1 Client V2 Supportable Supportable Preview V1 V2
  29. API リビジョンの更新 いきなり API 定義を書き換えるのではなく、新規リビジョンの 作成 > 新しいリビジョンの定義を修正 > 新しいリビジョンを

    アクティブにする(make current)の流れで作業する 53 リビジョン2を追加しても まだ1が Current リビジョン2の定義を修正する (1を修正すると利用中のユーザーに影 響が出るため) API 実装にルーティング リビジョン2の定義が終わってテス トしたら 2 を Current にする
  30. リファレンス 公式ドキュメント API Management のドキュメント API Management の価格 API Management

    の SLA トレーニングコンテンツ(Microsoft Learn) Azure API Management の概要 API Management の詳細 Azure ラーニング パスでの API 統合の設計 非公式 Azure Api Management 俺的マニュアル 2020年3月版 (slideshare.net) aka.ms/apimlove | api-management-resources (azure.github.io) 56