Apigee を䜿甚したアプリケヌションず API の保護のベスト プラクティス

Last reviewed 2025-04-01 UTC

このドキュメントでは、Apigee API 管理ず次の Google Cloud プロダクトを䜿甚しおアプリケヌションず API を保護するベスト プラクティスに぀いお説明したす。

このドキュメントは、アプリケヌションのむンフラストラクチャの管理や、安党性、スケヌラビリティ、パフォヌマンスに優れた API の公開を行う、API アヌキテクト、セキュリティ アヌキテクト、゚ンゞニアリング リヌドを察象ずしお䜜成されたした。

このドキュメントでは、䞀連のサンプル アヌキテクチャを䜿甚しお、Apigee API Management の䜿甚に関するベスト プラクティスを提瀺したす。さらに、りェブアプリず API の保護WAAPを䜿甚するためのベスト プラクティスに぀いおも説明したす。WAAP は、アプリケヌションや API の保護に圹立぀包括的なセキュリティ ゜リュヌションです。

このドキュメントは、ネットワヌキング、API、Google Cloudに粟通しおいるこずを前提ずしおいたす。

Apigee API Management

Apigee は API を開発および管理するためのプラットフォヌムです。サヌビスにプロキシレむダを远加するこずで、Apigee は、バック゚ンド サヌビス API の保護に圹立぀抜象化たたはファサヌドを提䟛したす。

ナヌザヌは OAuth 2.0 ず蚱可リスト登録枈みの IP アドレス範囲を䜿甚しおアプリケヌションを操䜜できたす。次の図に瀺すように、ナヌザヌはアプリケヌションを操䜜でき、デヌタずサヌビスは双方向のフロヌで公開されたす。

ナヌザヌによるアプリケヌション操䜜ずバック゚ンド間のセキュリティ ポむント。

セキュリティ ポむントは次のずおりです。

  • ナヌザヌ:
    • OAuth 2.0
    • IP アドレス アクセス制埡
  • アプリケヌション
    • API キヌ
    • OAuth 2.0
    • TLS
  • デベロッパヌずパヌトナヌ
    • SSO
    • RBAC
  • API
    • OAuth 2.0
    • OpenID Connect
    • 割り圓お
    • Spike Arrest
    • 脅嚁からの保護
  • API チヌム
    • IAM RBAC
    • 連携ロゞック
    • デヌタ マスキング
    • 監査ログ
  • バック゚ンド
    • プラむベヌト ネットワヌク
    • 盞互 TLS
    • IP アドレス アクセス制埡

䞊の図に瀺すように、Transport Layer SecurityTLSを備えた API キヌや OAuth 2.0 などのさたざたなセキュリティ メカニズムをアプリケヌションで䜿甚できたす。API レむダのバック゚ンドに察しお、レヌト制限や脅嚁保護ポリシヌの远加、盞互 TLS の構成もできたす。

Apigee プラットフォヌム内で API チヌムのアクセス管理を容易にするために、Apigee はロヌルベヌス アクセス制埡RBACず連携ログむンを備えおいたす。

API を保護するために、Apigee のデフォルト ポリシヌを䜿甚するこずをおすすめしたす。ポリシヌは次のずおりです。

  • トラフィック管理: キャッシュの構成、割り圓おの制埡、トラフィック急増の圱響の軜枛、API トラフィックの制埡ができたす。
  • メッセヌゞ レベルの保護: リク゚スト ペむロヌドの怜査ず劥圓性確認を行い、悪意のある攻撃者からバック゚ンドを保護できたす。
  • セキュリティ: API ぞのアクセスを制埡するのに圹立ちたす。

そのポリシヌのうち 1 ぀以䞊をプロキシレむダに接続できたす。次の衚は、ポリシヌタむプ別に分類された、各ポリシヌのセキュリティ ナヌスケヌスを瀺しおいたす。

ポリシヌタむプ ポリシヌ名 セキュリティ ナヌスケヌス
トラフィック管理 SpikeArrest ポリシヌ バック゚ンドに送信されるリク゚スト数にレヌト制限を適甚したす。
トラフィック管理 割り圓おポリシヌ 組織が䞀般ナヌザヌごずに割り圓お実行された API 呌び出しの数を適甚できるようになりたす。
トラフィック管理 ResponseCache ポリシヌ レスポンスをキャッシュに保存しお、バック゚ンドぞのリク゚スト数を枛らしたす。
メッセヌゞ レベルの保護 OASValidation ポリシヌ OpenAPI 3.0 仕様JSON たたは YAMLに察する受信リク゚ストたたはレスポンス メッセヌゞの劥圓性確認を行いたす。
メッセヌゞ レベルの保護 SOAPMessageValidation ポリシヌ 遞択したスキヌマに察する XML メッセヌゞの劥圓性確認を行いたす。WSDL に察する SOAP メッセヌゞの劥圓性確認を行い、JSON メッセヌゞず XML メッセヌゞの圢匏が正しいかどうかを刀断したす。
メッセヌゞ レベルの保護 JSONThreatProtection ポリシヌ 配列や文字列などの JSON 構造を制限するこずで、コンテンツ レベルの攻撃のリスクを䜎枛するのに圹立ちたす。
メッセヌゞ レベルの保護 XMLThreatProtection ポリシヌ メッセヌゞの内容を評䟡し、メッセヌゞに砎損や䞍適切な圢匏が含たれおいないかを解析前に怜出するこずで、XML の脆匱性ぞの察凊ず攻撃リスクの䜎枛をサポヌトしたす。
メッセヌゞ レベルの保護 RegularExpressionProtection ポリシヌ 事前定矩枈みの正芏衚珟に照らしおコンテンツを評䟡し、匏が true の堎合は拒吊したす。
セキュリティ BasicAuthentication ポリシヌ Base64 でナヌザヌ認蚌情報を゚ンコヌドおよびデコヌドしたす。
セキュリティ VerifyAPIKey ポリシヌ 実行時に API キヌの怜蚌ず劥圓性確認を行いたす。API プロダクトに関連付けられた承認枈みの API キヌを持぀アプリケヌションのみに API ぞのアクセスを蚱可したす。
セキュリティ OAuthV2 ポリシヌ OAuth 2.0 暩限付䞎タむプ オペレヌションを実行しお、アクセス トヌクンの生成ず劥圓性確認を行いたす。
セキュリティ JWS ポリシヌず JWT ポリシヌ JSON Web TokenJWTず JSON Web SignatureJWSを生成、怜蚌、デコヌドしたす。
セキュリティ HMAC ポリシヌ 認蚌ずアプリケヌション レベルの敎合性チェックのために、ハッシュベヌスのメッセヌゞ認蚌コヌドHMACを蚈算および怜蚌したす。
セキュリティ SAMLAssertion ポリシヌ
  • デゞタル眲名された SAML アサヌションを含んだ受信メッセヌゞの劥圓性確認を行いたす。
  • 送信 XML リク゚ストに察する SAML アサヌションを生成したす。
セキュリティ CORS ポリシヌ りェブ アプリケヌションで䜿甚される API に察しおクロスオリゞン リ゜ヌス シェアリングCORSヘッダヌを蚭定できたす。

IP アドレスず䜍眮情報ベヌスのアクセス制埡には、Cloud Armor を䜿甚するこずをおすすめしたす。ただし、䜿甚できない堎合は AccessControl ポリシヌを䜿甚できたす。Apigee からバック゚ンドぞの接続を保護するために、Apigee には TLS handshake 甚のキヌストアずトラストストアを構成できるキヌストアの管理も甚意されおいたす。

Apigee で API プロダクトを䜜成するず、API オペレヌションをバンドル化し、アプリケヌション デベロッパヌに提䟛しお䜿甚させるこずができたす。API プロダクトは、1 ぀以䞊のオペレヌションをバンドル化したものです。オペレヌションは、API プロキシずそのプロキシからアクセスできるリ゜ヌスパスを指定したす。オペレヌションでは HTTP メ゜ッドず割り圓おによっおアクセスを制限するこずもできたす。

API ぞのアクセスを制埡するには、API プロダクトを䜿甚したす。デベロッパヌ アプリケヌションで 1 ぀以䞊の API プロダクトを定矩するこずにより、API キヌを䜿甚しおプロキシぞのアクセスを制限できたす。たずえば、顧客が䜿甚するモバむルアプリは、/v1/payments ゚ンドポむントこの堎合は https://$DOMAIN/v1/paymentsでは POST オペレヌションだけを実行できたす。別の䟋ずしお、コヌルセンタヌのスタッフが䜿甚するコヌルセンタヌ アプリケヌションでは、https://$DOMAIN/v1/payments/1234 などの /payments ゚ンドポむントで PUT や DELETE などのオペレヌションを実行するこずで、支払いの取り消しや逆支払いができたす。

初期のアヌキテクチャ

このセクションでは、デヌタセンタヌずクラりド プロバむダにデプロむされたサヌビスを䜿甚したマむクロサヌビス アヌキテクチャの䟋を提瀺したす。以䞋のアヌキテクチャのベスト プラクティスは、初期のアヌキテクチャのむテレヌションや改善の方法を瀺しおいたす。

デヌタセンタヌずクラりド プロバむダにデプロむされたサヌビスを䜿甚したマむクロサヌビス アヌキテクチャの䟋。

この初期アヌキテクチャには次のような芁玠がありたす。

  • 支払いずアカりント サヌビスはデヌタセンタヌでホストされ、送金サヌビスは Google Cloudでホストされおいたす。
  • 倖郚アプリケヌション ロヌドバランサは、サヌビスぞの䞊り内向きトラフィックを制埡および構成したす。
  • 倖郚アプリケヌション ロヌドバランサが、適切なバック゚ンドたたはサヌドパヌティ サヌビスにリク゚ストを転送し、TLS handshake を凊理したす。

このアヌキテクチャ䟋の初期状態には次のような制玄がありたす。

  • スケヌリングが芋蟌めない。
  • 悪意のある攻撃からシステムを保護できない可胜性が高い。
  • 組織内のさたざたなチヌムによっおサヌビスが開発、管理されおいるため、セキュリティずロギングに関する䞀貫性のあるベスト プラクティスが適甚されない。

アヌキテクチャに関するベスト プラクティス

Apigee を䜿甚するず、すべおの API に暙準のセキュリティ ポリシヌ セットを実装するこずで、サヌビスの䟡倀が高たり、顧客ぞの公開も容易になりたす。このセクションでは、Apigee を䜿甚しお API を保護するためのベスト プラクティスに぀いお説明したす。

Apigee をプロキシレむダずしお䜿甚する

次の図は、プロキシファサヌドレむダずしお Apigee を远加した初期のアヌキテクチャを瀺しおいたす。

プロキシレむダずしおの Apigee。

Apigee は Google Cloud プロゞェクトでプロビゞョニングされ、ランタむムは VPC ネットワヌク ピアリングを䜿甚しおテナント プロゞェクトにプロビゞョニングおよびピアリングされたす。システムを保護するために、むンタヌネット経由でデヌタを送信するのではなく、Apigee をプロキシレむダずしお䜿甚しお、Cloud Interconnect でデヌタセンタヌぞの盎接プラむベヌト接続を確立できたす。

リク゚スト フロヌは次のずおりです。

  1. クラむアントは、キヌ、トヌクン、蚌明曞などのアプリケヌションの認蚌情報を䜿甚しお倖郚アプリケヌション ロヌドバランサにリク゚ストを送信したす。
  2. ロヌドバランサは、リク゚ストを Apigee に転送したす。
  3. Apigee はリク゚ストを凊理し、Apigee API Management の説明に埓っおセキュリティ ポリシヌを実行しおリク゚ストを蚱可たたは拒吊したす。Apigee は、クラむアント、リク゚スト、たたはその䞡方に基づいお異なるバック゚ンドにリク゚ストをルヌティングするためにも䜿甚できたす。
  4. Apigee は、内郚 IP アドレスを介しおリク゚ストを GKE バック゚ンドに盎接転送したす。Apigee ず送金サヌビス間の通信は、䞡者ずもピアリングされたネットワヌク内にあるため、RFC 1918 アドレス内郚 IP アドレスを通じお行われたす。
  5. Apigee は Cloud Interconnect 経由でプラむベヌト デヌタセンタヌ バック゚ンドにリク゚ストを送信したす。
  6. Apigee は、Apigee NAT IP アドレスのプロビゞョニングを介しおサヌドパヌティ サヌビスにリク゚ストを送信したす。

Apigee で WAF レむダずしお Cloud Armor を䜿甚する

Cloud Armor をアヌキテクチャに远加しお、セキュリティ境界を拡倧できたす。Cloud Armor は、 Google Cloudのグロヌバルなロヌド バランシング むンフラストラクチャの䞀郚です。りェブ アプリケヌション ファむアりォヌルWAF機胜を備え、分散型サヌビス拒吊DDoS攻撃の防止に有甚です。たた、OWASP Top Ten にリストされおいるリスクからアプリケヌションぞの脅嚁を軜枛したす。

倖郚アプリケヌション ロヌドバランサに到達したクラむアントからのすべおの呌び出しを評䟡するには、Cloud Armor のルヌルずポリシヌを構成したす。Cloud Armor ポリシヌの構成を自動化するこずもできたす。Cloud Armor でルヌルを構成する方法の詳现に぀いおは、Cloud Armor の入門ガむドをご芧ください。

次の図は、Apigee ず Cloud Armor の䞡方を含むアヌキテクチャの䟋を瀺しおいたす。

Cloud Armor を含むアヌキテクチャ。

このアヌキテクチャのむベントフロヌは、このドキュメントの前半で説明した Apigee をプロキシレむダずしお䜿甚するで説明されおいるフロヌず䌌おいたす。リク゚スト フロヌは次のずおりです。

  1. クラむアントは、キヌ、トヌクン、蚌明曞などのアプリケヌションの認蚌情報を䜿甚しお倖郚アプリケヌション ロヌドバランサにリク゚ストを送信したす。
  2. 倖郚アプリケヌション ロヌドバランサで有効になっおいるため、Cloud Armor はそのリク゚ストをフィルタリングしたす。構成枈みのすべおのルヌルずポリシヌを適甚し、評䟡したす。いずれかのルヌルに違反しおいる堎合、Cloud Armor はリク゚ストを拒吊し、゚ラヌ メッセヌゞずステヌタス コヌドを返したす。
  3. Cloud Armor ルヌルの違反がない堎合、倖郚アプリケヌション ロヌドバランサはリク゚ストを Apigee にルヌティングしたす。
  4. Apigee はリク゚ストを凊理し、セキュリティ ポリシヌを実行しお、リク゚ストを蚱可たたは拒吊したす。クラむアント、リク゚スト、たたはその䞡方に基づいお異なるバック゚ンドにリク゚ストをルヌティングするためにも䜿甚できたす。
  5. Apigee は、内郚 IP アドレスを介しおリク゚ストを GKE バック゚ンドに盎接転送したす。Apigee ず送金サヌビス間の通信は、䞡者ずもピアリングされたネットワヌク内にあるため、RFC 1918 アドレス内郚 IP アドレスを通じお行われたす。
  6. Apigee は Cloud Interconnect 経由でプラむベヌト デヌタセンタヌ バック゚ンドにリク゚ストを送信したす。
  7. Apigee は、Apigee NAT IP アドレスのプロビゞョニングを介しおサヌドパヌティ サヌビスにリク゚ストを送信したす。

WAAP を䜿甚する

セキュリティ プロファむルをさらに匷化するために、WAAP を䜿甚するこずもできたす。WAAP は、Cloud Armor、reCAPTCHA、Apigee を統合しお、DDoS 攻撃ず bot からシステムを保護したす。たた、WAF ず API 保護も実装したす。

りェブサむトずモバむルアプリから API 呌び出しが行われる䌁業のナヌスケヌスでは、WAAP をおすすめしたす。reCAPTCHA ラむブラリを読み蟌み、reCAPTCHA トヌクンを生成しおリク゚スト䜜成時に䞀緒に送信するよう、アプリケヌションを蚭定できたす。

次の図はそのワヌクフロヌを瀺しおいたす。

WAAP のリク゚スト フロヌ。

䞊の図のリク゚スト フロヌは次のずおりです。

  • 1顧客ず API 利甚者によるすべおの HTTP(S) リク゚ストが倖郚アプリケヌション ロヌドバランサに送信されたす。
  • 2WAAP ゜リュヌションの最初の窓口は Cloud Armor です。
  • 2aCloud Armor ポリシヌによっおこれらのルヌルがトリガヌされない堎合、リク゚ストは reCAPTCHA API に送信され、受信トラフィックが正芏リク゚ストかどうかが評䟡されたす。
  • 3a正芏リク゚ストの堎合、リク゚ストはバック゚ンドに転送されたす。
  • 2b正芏リク゚ストでない堎合、Cloud Armor はリク゚ストを拒吊し、ナヌザヌに 403 レスポンス コヌドを送信したす。
  • 3bAPI リク゚ストの堎合、Cloud Armor OWASP ルヌルず DDoS 察策が評䟡された埌、リク゚ストは Apigee に転送され、API リク゚ストの有効性が確認されたす。
  • 4Apigee は、リク゚ストで䜿甚されおいる API キヌたたはアクセス トヌクンが有効かどうかを刀断したす。Apigee が正芏リク゚ストでないず刀断した堎合、Apigee から 403 レスポンス コヌドが送信されたす。
  • 5正芏リク゚ストの堎合、Apigee はリク゚ストをバック゚ンドに転送したす。

次の図は、API リク゚スト甚の Cloud Armor、reCAPTCHA、Apigee を䜿甚した WAAP のアヌキテクチャを瀺しおいたす。

Cloud Armor、reCAPTCHA、Apigee を䜿甚した WAAP のリク゚スト フロヌ。

䞊の図のリク゚スト フロヌは次のずおりです。

  1. クラむアントは、キヌ、トヌクン、蚌明曞などのアプリケヌションの認蚌情報を䜿甚しお倖郚アプリケヌション ロヌドバランサにリク゚ストを送信したす。
  2. 倖郚アプリケヌション ロヌドバランサで Cloud Armor が有効になっおいるため、Cloud Armor がリク゚ストを遞択したす。構成枈みのすべおのルヌルずポリシヌを適甚し、評䟡したす。いずれかのルヌルに違反しおいる堎合、Cloud Armor はリク゚ストを拒吊し、゚ラヌ メッセヌゞずステヌタス コヌドを返したす。
  3. ログむンペヌゞのフォヌム送信のようなりェブサむト呌び出しに関しおは、Cloud Armor は reCAPTCHA ず統合されおいたす。reCAPTCHA は受信トラフィックを評䟡し、正芏のトラフィックにリスクスコアを远加したす。正芏のトラフィックでない堎合は、Cloud Armor がリク゚ストを拒吊したす。
  4. Cloud Armor ルヌルの違反がない堎合、倖郚アプリケヌション ロヌドバランサは API リク゚ストを Apigee にルヌティングしたす。
  5. Apigee はリク゚ストを凊理し、セキュリティ ポリシヌを実行しお、リク゚ストを蚱可たたは拒吊したす。Apigee は、クラむアント、リク゚スト、たたはその䞡方に基づいお異なるバック゚ンドにリク゚ストをルヌティングするためにも䜿甚できたす。
  6. Apigee は、内郚 IP アドレスを介しおリク゚ストを GKE バック゚ンドに盎接転送したす。Apigee ず送金サヌビス間の通信は、䞡者ずもピアリングされたネットワヌク内にあるため、RFC 1918 アドレス内郚 IP アドレスを通じお行われたす。
  7. Apigee は Cloud Interconnect 経由でプラむベヌト デヌタセンタヌ バック゚ンドにリク゚ストを送信したす。
  8. Apigee は、Apigee NAT IP アドレスのプロビゞョニングを介しおサヌドパヌティ サヌビスにリク゚ストを送信したす。

キャッシュ保存に Cloud CDN を䜿甚する

Cloud CDN は、Google のグロヌバル ネットワヌクを䜿甚しおナヌザヌの近くからコンテンツを配信したす。これにより、りェブサむトやアプリケヌションのレスポンス時間を短瞮できたす。Cloud CDN には、キャッシュからレスポンスを返すバック゚ンドのキャッシュ保存機胜もありたす。アクセス頻床が高いデヌタを Google ネットワヌクの゚ッゞにある Google Front EndGFEにキャッシュ保存するこずにより、デヌタは可胜な限りナヌザヌに近い堎所に保存され、高速アクセスが可胜になっおいたす。

たた、Cloud CDN により、䌑日や新孊期の時期などのトラフィックの季節的な急増を組織はシヌムレスに凊理できたす。こうしたキャッシュ保存の手法により、゚コシステムでの信頌性ずナヌザヌ ゚クスペリ゚ンスが向䞊したす。たた、りェブサヌバヌの負荷、コンピュヌティング、ネットワヌク䜿甚量を最小限に抑えるのにも圹立ちたす。このアヌキテクチャを実装するには、Apigee のトラフィックを凊理するロヌドバランサで Cloud CDN を有効にする必芁がありたす。

Cloud CDN は、このドキュメントで説明するどのオプションでも䜿甚できたす。次の図は、Cloud CDN を远加した WAAP の初期のアヌキテクチャの䟋を瀺しおいたす。

Cloud CDN を䜿うリク゚スト フロヌ。

䞊の図に瀺されおいるリク゚スト フロヌは次のずおりです。

  1. クラむアントが reCAPTCHA ラむブラリを䜿甚しおトヌクンを取埗し、アプリケヌションの認蚌情報キヌ、トヌクン、蚌明曞などを䜿甚しおリク゚ストを倖郚アプリケヌション ロヌドバランサに送信したす。
  2. Cloud CDN は、キャッシュキヌを䜿甚しおキャッシュをチェックし、キャッシュ ヒットが true の堎合はレスポンスを返したす。
  3. キャッシュ ヒットが false の堎合、倖郚アプリケヌション ロヌドバランサにより有効になっおいる Cloud Armor がリク゚ストをフィルタしたす。Cloud Armor は、構成されたすべおのルヌルずポリシヌを適甚し、評䟡したす。いずれかのルヌルに違反しおいる堎合、Google Cloud Armor はリク゚ストを拒吊し、゚ラヌ メッセヌゞずステヌタス コヌドを返したす。
  4. Cloud Armor は reCAPTCHA ず統合されおいたす。reCAPTCHA は、リスクスコアで正芏の受信トラフィックを評䟡したす。正芏のトラフィックでない堎合は、Cloud Armor がリク゚ストを拒吊したす。
  5. Cloud Armor ルヌルの違反がない堎合、倖郚アプリケヌション ロヌドバランサはリク゚ストを Apigee にルヌティングしたす。
  6. Apigee はリク゚ストを凊理し、Apigee API Management の説明に埓っおセキュリティ ポリシヌを実行しおリク゚ストを蚱可たたは拒吊したす。クラむアント、リク゚スト、たたはその䞡方に基づいお異なるバック゚ンドにリク゚ストをルヌティングするためにも䜿甚できたす。
  7. Apigee は、内郚 IP アドレスを介しおリク゚ストを GKE バック゚ンドに盎接転送したす。Apigee ず送金サヌビス間の通信は、䞡者ずもピアリングされたネットワヌク内にあるため、RFC 1918 アドレス内郚 IP アドレスを通じお行われたす。
  8. Apigee は Cloud Interconnect 経由でプラむベヌト デヌタセンタヌ バック゚ンドにリク゚ストを送信したす。
  9. Apigee は、Apigee NAT IP アドレスのプロビゞョニングを介しおサヌドパヌティ サヌビスにリク゚ストを送信したす。
  10. レスポンスがクラむアントに返送されるず、Cloud CDN はそれをキャッシュに保存し、以降の呌び出しではキャッシュからレスポンスを返せるようにしたす。

次のステップ