Apigee

Apigee セキュリティポリシー実装例と自動デプロイ手順

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Apigee のポリシー概念と全体像

Apigee では ポリシー が API リクエスト/レスポンスのフローに差し込むモジュールとして機能します。ポリシーは実行順序やスコープ(プロキシ全体・フロー単位)を明示的に管理でき、認証・レート制限・メッセージ変換といったロジックをコード不要で実装できます。本節では、ポリシーの基本構造と公式ドキュメントで押さえておくべきポイントを整理します。

ポリシーの基本構築と実行順序

Apigee のフローは PreFlow → Request → Target → Response → PostFlow の 5 段階に分かれ、各段階に任意のポリシーを配置できます。同一フロー内では XML に記述した順番がそのまま実行順になるため、設計時は「早期リターン」や「共通エラーハンドリング」を意識して配置しましょう。

  • PreFlow: 認証系ポリシー(例:OAuthV2)を置くことで不正リクエストを即座に遮断
  • Request: 入力パラメータの正規化や変換処理
  • Target: 実際のバックエンド呼び出し前後で必要なヘッダー付与など
  • Response: レスポンスフォーマット統一やキャッシュ制御
  • PostFlow: ロギング・監査情報の送信

公式 Docs で確認すべき重要ポイント

Apigee のポリシーを安全に運用するために、ドキュメントで特に意識すべき点をまとめます。

  1. 名前空間(name 属性) は必ず設定し、プロキシ内で一意になるよう命名規則を決める
  2. FaultRule によるエラーハンドリングは必須。デフォルトの XML エラーはユーザー体験が損なわれやすいため、カスタムスクリプトへ委譲することが推奨されます
  3. 環境変数(environment variables) を活用すると dev / prod で設定を切り替えやすく、CI/CD パイプラインでも同一テンプレートを再利用可能

OAuthV2 ポリシーによるトークン検証

OAuth2 のアクセストークン有効性を確認する代表的なポリシーが OAuthV2 です。本節では、実装例と共にエラーハンドリングのベストプラクティスを解説します。なお、以下で参照している外部ブログは2025年6月掲載(Apigee の主要セキュリティポリシーと自動デプロイ方法)であり、執筆時点ではリンクが有効でした。

XML テンプレートと必須属性

OAuthV2 ポリシーは OperationAccessToken が必須項目です。以下のテンプレートは公式推奨例をベースにしています。

  • Operation: VerifyAccessToken が必須で、トークン検証を指示します
  • AccessToken: Authorization ヘッダーから自動的に Bearer プレフィックスを除去して取得
  • Scope: 必要なスコープをスペース区切りで列挙し、足りない場合は Fault が発生

カスタムエラーハンドリングのベストプラクティス

デフォルトの XML エラーは XML 形式で返却されるため、クライアント側で統一的に処理しづらくなります。ここでは JavaScript ポリシーを組み合わせて JSON 形式のエラーレスポンスに変換する例を示します。

この構成により、トークン検証失敗時でも RESTful な JSON が即座に返却され、フロントエンドのハンドリングが簡潔になります。


Verify API Key ポリシーとキー管理連携

API キー認証は軽量で導入コストが低い反面、キー漏洩時の影響を最小化するための設計が重要です。本節ではキャッシュ活用とローテーション時の処理について解説します。

API キー取得・キャッシュ構成

以下はヘッダー apikey からキーを取得し、KVM(Key‑Value Map)や外部 Vault への問い合わせ回数を削減するキャッシュ設定例です。

  • CacheLookup: 5 分間(TTL=300 秒)キャッシュし、同一キーの繰り返しリクエストで KVM/Vault へのアクセスを回避
  • ContinueOnError: false に設定するとキー検証失敗時に即座に Fault が発生します

ローテーションとキャッシュ失効の実装例

キーがローテーションされた際は、キャッシュを手動で無効化する必要があります。以下は Python ポリシーで統一エラーメッセージを生成しつつ、CacheInvalidate と組み合わせるパターンです。

キー情報が更新されると同時に InvalidateApiKeyCache を実行すれば、次回リクエストから新しいキー情報が即座に反映されます。


AccessControl ポリシーでの IP とヘッダー制御

IP アドレスや特定ヘッダーによるアクセス制限は、内部向け API と外部公開 API を分離する際に有効です。本節ではホワイトリスト/ブラックリストと環境変数を組み合わせた条件付与の実装例を示します。

IP ホワイトリスト・ブラックリスト設定

以下は許可 IP(ホワイトリスト)と拒否 IP(ブラックリスト)を同時に定義し、先行評価 が適用される構成です。

  • Allow が優先され、マッチしなければ次に Deny が評価されます
  • FaultRule と組み合わせることで、ブロック時に JSON エラーレスポンスを返せます

ヘッダー条件と環境別有効化

本番環境でのみ特定ヘッダーが必要なケースは、Flow VariableConditional Flow を活用すると管理が楽になります。

この構成により、dev 環境ではヘッダー制御が無効 となり、本番環境だけで厳格なアクセスチェックを適用できます。


Apigee Edge と Apigee X の比較

Apigee はクラウド版(Edge)と Google Cloud 上の次世代プラットフォーム(X)の2つが提供されています。選択時に迷わないよう、主要機能・運用モデルを表形式で整理しました。

項目 Apigee Edge Apigee X
デプロイ先 Apigee のマネージド SaaS(オンプレミスは非対応) Google Cloud 上の完全マネージドサービス、GKE との統合が可能
ランタイム Java ベースの旧世代ランタイム Envoy/Go 言語ベースの新世代ランタイムで低レイテンシ
ポリシー互換性 従来の XML ポリシーがそのまま使用可能 ほぼ同等だが、一部非推奨ポリシーは X ではサポート外
セキュリティ機能 IAM のみ、API キー・OAuth が中心 Cloud IAM + VPC Service Controls、Secret Manager 連携が標準装備
スケーラビリティ 手動でインスタンス増減(プラン依存) オートスケールがデフォルトで有効
ロギング・モニタリング Apigee Analytics(別料金) Cloud Logging / Monitoring とシームレスに統合

選択指針
- 既存投資が多く、オンプレミスやレガシー環境を維持したい場合は Edge が適しています。
- Google Cloud エコシステムと連携し、将来的な自動スケール・高度な IAM 制御が必要なら X を選択すべきです。


CI/CD パイプラインでのデプロイとセキュリティベストプラクティス

ポリシー変更は手作業よりも自動化した方がミスを減らせます。ここでは GitHub Actions を用いたデプロイフローと、シークレット管理以外に重要な 最小権限 API キー の扱いについて解説します。

GitHub Actions による自動デプロイ手順

以下は apiproxy/ ディレクトリの変更を検知したら Apigee X(または Edge)へデプロイする最小構成です。

  • シークレット管理は GitHub の Secrets に格納し、ワークフロー内で環境変数として参照します。
  • デプロイ前に apigeetool export で現在のバンドルを取得し、差分がある場合だけ deployproxy を実行するロジックを追加すると無駄なデプロイを防げます。

シークレット管理・最小権限 API キーの徹底

CI/CD パイプラインで扱う認証情報は 「最小権限」 の原則に基づき、必要最低限のスコープだけを付与した API キーを使用します。

  • Apigee Edge/X 用 API キー: デプロイ専用ユーザーに org_admin 権限は不要。environment_adminproxy_deployer のみ付与
  • Vault / Secret Manager: キー自体も暗号化された状態で保存し、ランタイム時にだけ取得
  • キーのローテーション: 毎月またはインシデント発生時に自動ローテーションスクリプトを走らせ、古いキーは即座に無効化
手順 推奨設定
API キー権限 proxy_deployer(環境へのデプロイのみ)
有効期限 30 日以内の短期キー
ローテーション方法 CI ジョブで apigeetool deletekey → 新規作成 → Secrets 更新
アクセス監査 Cloud Logging に API キー使用履歴を出力し、定期的にレビュー

変更検証とロールバック戦略

自動デプロイ後の不具合は速やかに復旧できるよう、ステージング環境でのテスト即時ロールバック を組み込んでおくことが重要です。

シナリオ アクション
テスト失敗 ステージングデプロイをロールバックし、Git のブランチで修正後再実行
本番障害検知 apigeetool deleteproxy で直前バージョンに戻すか、rollback API を呼び出す
緊急パッチ 別ブランチで最小変更を作成し、hotfix ラベル付与後即デプロイ

まとめ

Apigee のポリシーは 「認証 → 認可 → アクセス制御」 の流れで設計すれば、コード不要で堅牢なセキュリティ層を構築できます。OAuthV2・VerifyAPIKey・AccessControl といった主要ポリシーの実装例とキャッシュ・ローテーション戦略、さらに Apigee Edge と X の違いを踏まえた選択指針を示しました。

CI/CD では GitHub Actions + apigeetool をベースに、シークレットは GitHub Secrets に保管し、API キーは最小権限で発行・定期ローテーションすることがベストプラクティスです。ステージングテストと即時ロールバックを組み込めば、本番環境への影響を最小化できます。

これらの手順やコードはそのままコピーして利用可能ですので、ぜひ自社 API プロキシに組み込み、安全かつスピーディな API 運用基盤 を構築してください。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Apigee