IBM API Connect で学ぶ API 管理の勘所 株式会社オージス総研 サービス事業本部クラウドインテグレーションサービス部 齋藤伸也 (Saito_Shinya@ogis-ri.co.jp) Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
目次 API 公開の課題 なぜAPI 管理が必要なのか API 管理のベストプラクティス IBM API Connect を使ったAPI 管理 オージス総研のAPI 運用サービスの紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 2
API 公開の課題 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
課題 1: 増加する API の管理 公開されている API が増えると実際に処理を う内部 API も増加する 初めに参照系のみ場合は 5API 程度からスタートする場合が多い 更新系が増え 連のビジネス機 能を実 するために必要な API を提供すると 30 40 程度になる 複数のビジネス機能を提供すると 数はさらに増える 1 組織で 100 や 200 の API を提供していることも珍しくない 同じ機能を提供する API でも クライアントによってエンドポイント (URI) を変えるケースがある この場合も API が増加する API-2 同じデータを提供するが セキュリティモデルが異なる API パートナー 内部 API API-1 モバイルアプリ Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 4
課題 2: 増える API クライアント / 利 者の管理 API は誰 ( どの API クライアント ) から利用されているのか どの API がどれだけ利用されているのか 影響調査が困難になり API のバージョンアップが難しくなるある利用者からの急激なトラフィックに対応できない パートナー A 社 パートナー A 社 パートナー B 社 パートナー C 社 モバイルアプリ IoT デバイス API が発展し 利用が拡 API-1 API-1 API-2 API-3 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 5
課題 3: 様々なセキュリティモデルへの対応 提供している API は クライアントに対してアクセス制御したいのか リソースオーナー ( エンドユーザー ) に対してアクセス制御したいのかによってセキュリティモデルが異なる クライアントに対するアクセス制御 ユーザに依存しない特定クライアント向けのデータや機能例えば カタログ情報参照 API 認証 認可のセキュリティモデル Basic 認証 API Key リクエスト署名 エンドユーザーに対するアクセス制御 ユーザーが承認したデータや機能例えば サードパーティアプリに提供する 口座情報参照 API 認証 認可のセキュリティモデル OAuth2.0 API API クライアント リソースオーナー ( エンドユーザー ) クライアント Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 6
課題 4: 迅速な API 開発 API は新しいビジネスや新しいパートナーに向けて公開されるため 常に変化が求められる API は提供サービス データの更新や接続先の増加に合わせて 変更や追加が発 する - 平均すると 2 ヶ に 1 回ぐらいの頻度で API の変更や追加が発 ( 当社実施した案件の実績値より ) - 短い場合は 1 週間で API の改修 本番デプロイを実施 いかに早くサイクルを回していくか が 事になる 運用 計画 開発 設計 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 7
課題 5: 安定した API の提供 他のシステムと同様に API もダウンして利用できなくなったり ターンアラウンドタイムが増加し タイムアウトが発 するような状況は避けなければならない 公開された API は様々なクライアントから利用され ビジネスに直結する機能をもつものも少なくない API の死活監視や 負荷の測定によってパフォーマンスの低下を監視し API のダウンを未然に防がなければならない Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 8
課題 6: 実装とドキュメントの乖離 API を利用する開発者向けに API の仕様をドキュメントとして提供しなければならない Word や HTML などの静的なドキュメントでは 変化の多い API 開発に追従させなければならないが API の実装と仕様の乖離が発 してしまうことがある API 実装 API ドキュメント ギャップ Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 9
関係者ごとの課題 API 公開の関係者 - API 利用者 ( アプリ開発者 ): 公開されているAPIを利用してアプリをつくる - API 開発者 : 公開するAPIを開発する - API 管理者 : APIの管理をおこなう 課題 5 安定した API の提供課題 6 実装とドキュメントの乖離 API-3 開発する 課題 3 様々なセキュリティモデルへの対応課題 4 迅速な API 開発課題 6 実装とドキュメントの乖離 API-2 API 開発者 API 利用者 利用する API-1 管理する 課題 1 増加する API の管理課題 2 増加する利用者 / クライアントの管理課題 5 安定した API の提供 API 管理者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 10
なぜ API 管理が必要なのか Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
API 管理をちゃんとしないと コストはかかるが使われない API が量産されてしまう API 公開のビジネス目的が達成できない 公開先のニーズに応じてその開発 セキュリティやインフラもその都度設計 変更の頻度が多く ドキュメントの変更が追いつかない 共通仕様がなく API ごとに使い方が違う API の使い方がよくわからない API のレスポンスが遅いことがある API-3 開発する 開発スピード API 利用者 利用する API-2 API-1 管理する API 開発者 API の利用状況がよくわからない 同じような API があるような気がするがよくわからない 利用者 クライアント セキュリティトークン API など管理項目が多すぎて把握できない 障害対応多く 場当たり的な対応 利用数 API 管理者 管理コスト Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 12
API 管理の目的 課題 3 様々なセキュリティモデルへの対応課題 4 迅速な API 開発課題 6 実装とドキュメントの乖離 課題 5 安定した API の提供課題 6 実装とドキュメントの乖離 API-3 開発する 利用する API-2 API-1 管理する API 開発者 課題 1 増加する API の管理課題 2 増加する利用者 / クライアントの管理課題 5 安定した API の提供 API 利用者 API 管理者 課題を解決し API 公開のビジネス目的の達成を目指す Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 13
アプリ開発者 (API 利 者 ) のメリット APIの使い方がよくわかる 標準化されているため呼び出すのも簡単 安定している 変更や障害の情報発信が われており 安 して使える API-3 API-2 利用する API-1 API 利用者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 14
API 開発者のメリット 標準されたセキュリティモデルを適用できる API 公開に共通的に必要な部分を共有できる APIの追加 変更を迅速に うことができるようになる 実装とドキュメントの乖離がなくバージョン管理が実施できるようになる API-3 API-2 開発する API-1 API 開発者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 15
API 管理者のメリット APIの開発 -リリースのプロセスが明確になる 誰がどのAPIを利用しているのか明確になる 利用状況から 安定運用のための施策をうてるようになる API-3 API-2 管理する API-1 API 管理者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 16
API 管理ベストプラクティス Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
製品やサービスだけでは十分ではない API 管理の製品やサービスは様々な機能が提供されているが それらを全て使わなければならないわけではない 製品やサービスは あくまでツール : 管理の体制やプロセスを効率的に実践する道具 て 製品やサービスの導入だけでは解決できない問題 - 適切なセキュリティモデルは何を選択するべきなのか - API の設計 - 開発 - テスト - リリースはどのように進めるべきなのか - API の管理はどのようにおこなうべきか - 利用者 クライアントの管理はどのようにおこなうべきか 最適なプロセス 体制 製品機能の組合せを考慮する必要がある Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 18
運 管理の体制 プロセスが重要 運用 管理の体制 - API 開発者 : API の開発を担当する - API 管理者 : API 公開の設定や API 体 利用者の管理を う 代表的な 3 つのプロセス - API 開発プロセス - API 利用プロセス - 障害 アラートの対応プロセス Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 19
API の開発プロセス API の要求から本番リリースまでをカバーするプロセス CI/CD のツールを活用し 出来る限り 動化を う API 設計 API 開発 単体テスト API ドキュメント作成 API 開発者 環境構築 ( 事前 ) API 開発環境デプロイ & API 結合テスト API 本番デプロイ & API 公開設定 API 管理者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 20
API 利 プロセス アプリ開発者 (API 利用者 ) が利用申請からアプリの本番リリースまでをカバーするプロセス アプリ開発者 (API 利用者 ) API 管理者 API 利 申請 ポリシー定義 ( 事前 ) 利 者登録 &API キー発 アプリ開発 API 開発環境利 & API 結合テスト API 本番環境利 & API 公開設定 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 21
障害 アラート対応プロセス 事前に起こりうる障害パターンを洗出し それを検知可能な監視および対応方法を明確にする - レイヤー構造 : インフラ ミドルウェア API 実装 - 分散構造 :API Gateway マイクロサービス : リクエスト / レスポンスのトレーサビリティ API 開発者 監視設定障害対応パターンの洗出し ( 事前 ) 監視 アラート受付 一次対応 API の内部処理レベルの対応 API 管理者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 22
開発チームと運 チーム 例 : ユースケースと開発 運用切り分け 開発チーム (API 開発者 ) と運用チーム (API 管理者 ) の役割を明確にし 必要に応じてオペレーションマニュアルを作成する できるだけシームレスに連携できるように体制 プロセスを構築する No ユースケース 開発 運 切り分け 開発 運用 オペレーションマニュアル作成対象 1 公開 API の開発環境を作成する 2 公開 API の本番環境を作成する 3 内部 API をリリースする ( バックエンド API のプロキシー ) 4 公開 API を新規作成する ( パラメータ変換処理等を含む ) 5 公開 API を更新する ( パラメータ変換処理等を含む ) 6 公開 API をリリースする 7 公開 API を利用会社に通知する 8 公開 API の利用状況を確認する 9 公開エンドポイントを死活監視する 10 公開 API のパフォーマンスを監視する 11 ユーザ (API キーも含む ) ロールを追加 変更する 13 障害対応を う ( ログ取得 サポート問合せ ) Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 23
IBM API Connect を使った API 管理 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
API のライフサイクルを完全にカバーする API 管理プラットフォーム 作成 API を楽々開発 API を安定 高速稼動 実 既存のデータストアやサービスから容易に API 開発を えるツール ビルド テスト デプロイ StrongLoop の Node.js を提供 API の実 環境の管理 監視 スケーリング 膨 な API が稼動可能 万全のセキュリティ 緻密な利用管理 保護 実績多数の堅牢なゲートウエイ API 利用者の認証とアクセス制御 アクセス数のレート制限 公開 API の容易なポリシー定義 利用状況の分析 課 開発者ポータルへの 動連携 管理 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 25
API Connect の API の管理モデル API のグルーピング - API のバージョン - 環境 ( 本番 開発 ) - 利用プラン ( 無料 エンタープライズ ) API ランタイムの管理項目 - 死活監視 - トラフィック量 - ターンアラウンドタイム API 利用者の管理項目 API プランの管理 - API 開発者 - 開発者の組織 - API クライアント - API キー API Analytics Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 26
セキュリティモデル クライアントに対してアクセス制御するケースでは セキュリティレベルや実装コストのバランスを検討し 選択する必要がある エンドユーザーに対してアクセス制御するケースでは OAuth2 がデファクトスタンダードである 種類 標準仕様 トークン / クレデンシャル有 効期限 API Key ( ユニーク 字列 ) なし 実装によるがないケースが多い リクエストの改ざん防止 ない (SSL/HTTPS と組み合わせて実現 ) スコープによるアクセス制御 なし Basic 認証 RFC7235 ない ない (SSL/HTTPSと組み 合わせて実現 ) OAuth2 RFC6749 有り ない (SSL/HTTPSと組み 合わせて実現 ) なし 有り Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 27
API の開発 テスト デプロイを支援するツール API の開発 - HTTP リクエストレスポンスのハンドリング - データリソースへのアクセス - バリデーション - 認証 認可 - ログ - キャッシュ API のテスト - HTTP リクエストを送信し 実際に API を叩くテスト API のデプロイ API Tool Kit - API Designer API をグラフィカルに開発 - API CLT CI/CD に組み込みやすいツール 開発 CI/CD - API を実 環境に配置する デプロイ テスト Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 28
シームレスな API 定義とドキュメント API 定義言語 Open API Spec(Swagger) を利用することで インタフェース実装とドキュメントがリンクする API のドキュメントを管理者ポータルで提供することで API コールも試すことができる 開発者ポータルへ連携 API の設計ツール (Swagger) 開発者ポータル Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 29
API 利 監視 分析 API の利 状況を可視化する分析ダッシュボード - APIのイベントデータを元に様々な軸による解析機能を提供 - APIやクライアント単位でのアクセス頻度からAPIの利用状況やトレンドを把握 - APIの応答時間や応答コードからAPIの健全性を確認 - 時間やメッセージ コンテンツ 各種メタ情報によるフィルタリングも可能 多様なレポーティング ニーズを効果的にサポート - ダッシュボード上の分析グラフやデータはカスタマイズ可能 - デフォルトで提供されるテンプレートによって基本的な分析をすぐに開始 - 作成したダッシュボード定義を保管し 他の管理者と共有 - イベントデータのエクスポートや 外部分析システムへの転送も可能 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 30
API の開発プロセスにおける API Connect 設計 開発を支援するツール シームレスな API 定義 ドキュメント セキュリティポリシーデプロイを支援する API マネージャ API 設計 API 開発 単体テスト API ドキュメント作成 API 開発者 環境構築 ( 事前 ) API 開発環境デプロイ & API 結合テスト API 本番デプロイ & API 公開設定 API 管理者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 31
API 利 プロセス API 利用者に情報を提供する開発者ポータル 利用者やセキュリティポリシーを管理する API マネージャ アプリ開発者 (API 利用者 ) API 管理者 API 利 申請 ポリシー定義 ( 事前 ) 利 者登録 &API キー発 アプリ開発 API 開発環境利 & API 結合テスト API 本番環境利 & API 公開設定 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 32
障害 アラート対応プロセス API の稼働状況を監視する API マネージャ API 開発者 監視設定障害対応パターンの洗出し ( 事前 ) 監視 アラート受付 一次対応 API の内部処理レベルの対応 API 管理者 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 33
オージス総研の API 運 サービスのご紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved.
サービスメニュー API 構築サービス API プラットフォーム構築 API 開発 クラウド ハイブリッド オンプレミスに対応要件にマッチした製品 / サービスを利用してご提供 API 開発のベストプラクティスを詰め込んだ API 開発スタックを使い 効率的に API を開発 API 運用サービス APIアップデート APIプラットフォームメンテナンス APIプラットフォーム監視 API 障害分析 対応 API 利用状況レポート APIユーザーサポート APIのデータ項目の追加などAPIのアップデート リリースの実施定期的なAPIプラットフォームのセキュリティアップデート APIプラットフォームの障害 異常検知および通知障害発 時の原因調査 切り分けおよび復旧対応 APIの利用状況のレポーティング API 利用者への問い合わせ対応 APIクライアント開発支援 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 35
API の安定的に運 API に早くから取り組み ノウハウを蓄積してきたオージス総研だからできること : API を安心 安全 に運用 - API アップデート データ項目の追加など軽微な API 更新作業 リリース作業の実施 - API プラッフォームメンテナンス セキュリティパッチの適用 設定のバックアップ - API プラットフォーム監視 API プラットフォームの障害 異常検知および通知 - API の障害分析 対応 障害発 時の原因調査 切り分けおよび復旧対応 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 36
運 にプラスα API 利用状況レポート - API の利用状況のレポーティング API ユーザーサポート - API 利用者への問い合わせ対応 API クライアント開発支援 API の使い方がよくわからない Java アプリなんだけどクライアントライブラリ欲しいなぁ API-2 利用する API-1 API 利用者 ご支援 API オージス総研 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 37