Azure API Management|Developer Portalで製品を「非公開」にしたときの影響と安全な廃止手順(サブスクリプションキーの扱いまで解説)

Azure API Management(APIM)で古い API 製品を見せたくない――そんなとき最初に思い浮かぶのが「Developer Portal で製品を非公開にする」設定です。本記事では、非公開化の正しい意味と実行時の影響、既存のサブスクリプションキーの扱い、運用で起こりがちな落とし穴、そして安全に段階的廃止(サンセット)へ進めるための実践手順までを、現場でそのまま使える粒度で整理します。

目次

APIM における「製品」「開発者ポータル」「ゲートウェイ」の関係

まず用語と責務の切り分けを正しく理解しておくと、非公開化の影響を読み違えません。APIM には大きく 管理プレーン(管理・公開・可視性) と データプレーン(実行・ゲートウェイ) があり、Developer Portal は前者に属する「見せ方」の層、API Gateway は後者に属する「動かす」層です。製品(Product)は API の束ね単位で、購読(Subscription)とポリシー適用の単位でもあります。

コンポーネント主な役割非公開化の影響
Developer Portal製品・API のカタログ表示、ドキュメント、購読申請非公開にするとカタログから完全に非表示。新規申請不可。
API Gateway(データプレーン)リクエスト受付、ポリシー適用、サブスクリプション検証非公開の有無に関係なく挙動は不変。キーが有効なら呼び出し可能。
製品(Product)API の束ね、購読とポリシーの適用境界非公開にしても定義やポリシーは残る。既存購読は継続。
サブスクリプション(購読)開発者に付与されるアクセス資格(キー)非公開化では無効化されない。失効・削除・再生成は別操作。

「非公開」にした場合の影響まとめ(結論ファースト)

項目内容
ポータル表示非公開にすると Developer Portal から完全に消える。新規ユーザーは検索も購読申請も不可。
実行時挙動API Gateway の動作は変わらない。API 本体やポリシーが削除・変更されるわけではない。
既存キーの扱いすでにキーを持つ開発者は そのまま呼び出し可能。レート制限やその他ポリシーも従来通り。
完全停止したい利用を止めるには 購読の失効・ブロック・キー再生成・製品削除・API 無効化 といった別操作が必要。

すなわち、非公開は「カタログから消す」ためのスイッチであり、「実行を止める」スイッチではありません。ここを取り違えると、止めたつもりの旧製品がバックエンドで呼ばれ続ける、という運用事故につながります。

非公開と「限定公開(グループ制御)」の違い

APIM の可視性には二つのアプローチがあります。ひとつは本記事の主題である「非公開(Not Published)」、もうひとつは製品を公開状態のまま 可視グループ を限定する「限定公開」です。目的に応じて使い分けましょう。

方式Developer Portal での見え方新規購読既存キー主な用途
非公開(Not Published)誰からも見えない不可そのまま利用可旧版の掲載停止、実験的製品の非公開保管
限定公開(グループ制御)指定グループのみ見える指定グループのみ可そのまま利用可社内限定、特定パートナー向けローリング公開

「外部には隠したいが、社内テスターには見せたい」なら限定公開を。「誰にも見せず、既存だけは動かす」なら非公開を選びます。

既存サブスクリプションキーはなぜ使い続けられるのか

API Gateway は受け取った Ocp-Apim-Subscription-Key(またはベアラトークンとサブスクリプション検証の組み合わせなど)をもとに、該当購読が 有効 かどうかを判定します。製品が非公開かどうかは 購読の有効性とは独立 です。したがって、購読ステータスが有効のままであれば、非公開後も実行は成功します。

逆に言えば、アクセスを止めたいなら 購読側の状態を操作する 必要があります。代表的な選択肢は次章の表をご覧ください。

「止めたいとき」に選ぶ操作と副作用

操作何が起こるか影響範囲ロールバック容易性向いている場面
購読をブロック(停止)該当キーでの呼び出しが失敗する特定利用者のみ容易(解除で復旧)期限切れユーザーや違反時の一時停止
キー再生成(ローテーション)旧キーが無効になり新キーが発行される該当購読のみ中(新キー配布が必要)漏洩疑い、段階的切替
購読削除該当利用者のアクセス資格を破棄特定利用者のみ困難(再申請が必要)契約終了・強制停止
製品削除製品配下の購読が無効化その製品の全利用者困難(再構築が必要)完全廃止が確定している
ポリシーで明示ブロック対象製品や API の入口で 410/403 を返す設定範囲の全利用者容易(ポリシー切替で復旧)サンセット期限後の段階的遮断

「まずは見せない(非公開)」「次に新規の入口を閉じる(申請停止)」「最後に既存を止める(ブロックや削除)」という順番で、影響を可視化しながら進めるのが安全です。

段階的サンセット(安全な廃止)テンプレート

全体像

  1. 計画:現行利用状況の可視化(呼び出し数、上位コーラー、IP、失敗率、SLA 影響)。
  2. 非公開化:Developer Portal から旧製品を非公開にし、新規申請を止める。
  3. 周知:移行先、代替の使い方、期限、連絡先をコミュニケーション。
  4. 移行支援:SDK・サンプル・ガイド、サンドボックス提供、並走期間の確保。
  5. 強制力:期限後はポリシーや購読状態で段階的にブロック。
  6. 撤去:アクセスが無くなったら製品・API を削除(もしくはアーカイブ)。

3 段階のブロック戦略例

フェーズ目標実装例観測指標
警告移行を促すレスポンスに Deprecation/ Sunset ヘッダーを付与警告受領後の移行率、サポート問合せ件数
制限控えめに抑制時間帯やコーラー単位でレート制限を強化旧製品のピーク呼び出し数の逓減
遮断廃止を徹底ポリシーで 410 Gone を返す/購読をブロック旧製品の成功呼び出しゼロ継続日数

APIM ポリシー例(期限後に 410 を返す)

<choose>
  <when condition="@DateTime.UtcNow >= new DateTime(2025, 12, 31)">
    <return-response>
      <set-status code="410" reason="Gone" />
      <set-header name="Deprecation" exists-action="override">
        <value>true</value>
      </set-header>
      <set-header name="Sunset" exists-action="override">
        <value>2025-12-31T00:00:00Z</value>
      </set-header>
      <set-body>This API version is retired. Please migrate to the new product.</set-body>
    </return-response>
  </when>
</choose>

この方式なら製品や購読を即時削除せずに、戻せる安全弁を維持したまま移行を進められます。

Developer Portal の非公開化手順(運用のベストプラクティス)

ポータル UI での基本操作

  1. Azure ポータルで対象の API Management インスタンスを開く。
  2. 左ペインの 製品(Products) から対象製品を選ぶ。
  3. 公開(Published) のチェックを外す、または状態を非公開に切り替える。
  4. 保存して反映。数分の伝播遅延が起きる場合があるため監視グラフで確認。

影響確認のポイント

  • Developer Portal のカタログから該当製品が消えているか。
  • ポータルの直接 URL を踏んでも製品ページが表示されないか。
  • 既存キーでの実行が従来どおり成功するか(意図どおり)。
  • 新規購読申請ができないことを実際にテストユーザーで確認。

周知とコミュニケーションの実務

非公開は内部的なスイッチにすぎません。利用者にとって重要なのは「いつまで」「どこへ」「どう移るか」です。以下のひな型をベースに案内文面を準備しましょう。

通知テンプレート(社外開発者向け)

件名: 【重要】API v1 非公開と移行のご案内
平素より当社 API をご利用いただきありがとうございます。
旧製品 "Sample API v1" は開発者ポータル上で非公開となりました。既存のサブスクリプションキーは引き続きご利用いただけますが、
2025/12/31 をもって本製品の提供を終了いたします。以降は v2 への移行が必要です。
移行ガイド、SDK、サンプルコードは別途お送りします。ご不明点は本メール宛にご連絡ください。

よくある質問(FAQ)に入れるべき項目

  • 非公開後も既存キーは使えるのか(使える/いつまでか)。
  • 移行先の製品名・エンドポイント・変更点(認証、スキーマ、レート)。
  • サポート窓口と SLA(移行期間中の優先度設定)。
  • エラーになった場合の代表的な原因(ブロック、期限切れ、ポリシー)。

バージョニングと並走運用のコツ

非公開は「もうカタログに載せない」だけなので、v1 と v2 の並走期間に向いています。以下の工夫で移行摩擦を下げられます。

  • 命名規約:Sample API v1 / Sample API v2 のように製品名に系譜を持たせる。
  • 共通スキーマ:モデルは極力後方互換にし、Breaking Change は別リソース名やバージョンで分離。
  • 非機能の差異を明示:レートや SLA、セキュリティ方式の差を表にして一目で比較できるように。
  • SDK 配布:言語別に v2 を先行提供し、利用者の実装コストを最小化。
項目v1(旧)v2(新)差分
認証サブスクリプションキーOAuth2 + サブスクリプションアクセストークン取得が追加
レート制限1,000 calls / 日10,000 calls / 日拡張
エンドポイント/api/v1//api/v2/パスが変更
サポート2025/12/31 まで通常サポートv1 はサンセット

観測とアラート:非公開後にやるべき 5 つのモニタリング

  1. 旧製品の成功呼び出し数:減少トレンドを可視化し、横ばいなら周知不足を疑う。
  2. v2 の採用曲線:移行率(ユニークキー数)を追い、ボトルネックを特定。
  3. 410/403 の失敗比率:ポリシー遮断の効き具合とやり過ぎを検出。
  4. 上位コーラー:依存度の高いクライアントに個別フォロー。
  5. バックエンド負荷:旧 v1 が裏でリソースを食っていないか確認。

これらをダッシュボード化して「非公開化の効果」を可視化できると、関係者への説明がスムーズになります。

よくある誤解と落とし穴

  • 非公開=呼び出し不能:誤り。既存キーは有効のままです。
  • 非公開にすれば課金も止まる:誤り。実行が続けばメーターは回ります。
  • ポータルに無いから安全:誤り。URL とキーを持つクライアントは呼び出せます。
  • 製品を消せば全て片付く:乱暴。段階的な周知と移行期間が無いと業務影響大。
  • キー再生成だけで十分:配布と切替の手間、ダウンタイム、失敗時の復旧を見積もるべき。

チェックリスト(そのまま使える)

非公開化の前

  • 旧製品の利用実態を把握(呼び出し数、トップ 20 コーラー、ピーク時刻)。
  • 移行先の準備(製品・ポリシー・ドキュメント・SDK)。
  • 社内外の連絡リスト整備(メール、Slack/Teams、運用窓口)。

非公開化の直後

  • ポータルからの消失を確認(ゲスト・開発者両方の視点で検証)。
  • テストシナリオで既存キーの実行が継続することを確認。
  • ダッシュボードに「旧製品の利用トレンド」カードを追加。

サンセット期限の前後

  • 期限 30/14/7/1 日前のリマインダー送信。
  • 期限当日にポリシー切替(410 返却)と購読ブロックを段階導入。
  • ゼロアクセスが続いたら製品・API を撤去しタグ/コストも整理。

トラブルシューティング

症状原因候補対策
非公開にしたのにポータルに残って見えるキャッシュ・CDN の伝播遅延、別テナント/ロールで閲覧数分待って再確認、シークレットウィンドウで検証、権限を切り替えて確認
新規ユーザーが申請できてしまう限定公開設定でゲスト/開発者グループが残っているグループの可視化を見直すか、非公開(Not Published)に切り替える
既存アプリが突然 403/401 になる購読ブロック、キー再生成、ポリシー追加、IP 制限最近の運用変更を棚卸し、購読状態とポリシーの差分を確認
旧製品がバックエンドに負荷を与え続ける非公開止まりで実行は継続期限を定めて 410 返却+購読ブロック、利用者と移行計画を再確認

ケーススタディ:v1 を非公開→ v2 に移すリアルな流れ

  1. 現状把握:v1 のユニーク購読 120、日次 80k 呼び出し。上位 10 クライアントで 70% を占有。
  2. 非公開化:v1 を非公開に。v2 を公開し「開発者」グループへ可視化。新規は v2 のみ申請可能に。
  3. 周知:上位 10 社に個別ブリーフィング。残りには一斉通知+ FAQ。
  4. 移行支援:ライブラリ、コードモッド、Postman コレクションを配布。
  5. 強制力:60 日後に昼間のみ v1 のレート制限を強化、90 日後に 410 返却へ切替。
  6. 撤去:アクセスゼロ 14 日継続後に製品削除、API 排除、コストタグを更新。

この運用で、業務停止や大規模なサポート事故を起こさず、静かに移行を完了できます。

セキュリティ・ガバナンスの観点

  • 職責分離:製品公開権限とポリシー編集権限を分離し、レビューを必須化。
  • 監査証跡:非公開化や購読ブロックの操作ログを保全。
  • 自動化:IaC(テンプレート)で製品状態とグループ可視性をコード化。人手のミスを防止。
  • キー管理:ローテーション手順を標準化。一次/二次キーの切替順序とタイムラインを定義。

要点のふり返り

  • 非公開は 「ポータルから消すだけ」。ゲートウェイの実行は止まらない。
  • 既存の購読キーは そのまま有効。止めたいときは購読やポリシーを操作する。
  • 安全な廃止は 非公開 → 周知 → 制限 → 遮断 → 撤去 の段階戦略が有効。
  • モニタリングと個別フォローで 移行の摩擦を最小化 できる。

以上を押さえておけば、「古い製品を見えなくする」と「古い製品を止める」を混同せず、計画的に API のライフサイクルを前へ進められます。

付録:運用ヒントのクイックリファレンス

  • はじめに非公開:新規流入を止める。
  • 移行先の露出を最大化:v2 のドキュメントを先に整える。
  • メトリクス監視:非公開後もしばらくはアクセスが続くのが普通。焦らずプランどおり進める。
  • 期限を宣言:ゴールが無い移行は永遠に終わらない。日付を決め、守る。
  • 最後は自動で止める:期限後はポリシーと購読ブロックで確実に遮断。

まとめ

APIM の「非公開」は、Developer Portal の可視性だけを操作する軽量なスイッチです。運用上の副作用は小さく、既存ユーザーの体験を崩さずに掲載停止できるため、段階的サンセットの出発点として最適です。ただし、完全停止は別工程。購読やポリシーを組み合わせ、メトリクスで効果を追い、関係者に丁寧に知らせる――この 3 点を守れば、API のバージョン更改やプラットフォーム移行も静かに成功へ導けます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次