Private Endpointは標準設計へ:Microsoft EntraとAzureで攻撃面を減らす実装ポイント

Microsoft Entra、Azure private endpoints、Zero Trust network accessを検討しているチームがまず押さえるべき結論は明確です。公開エンドポイントを残して後から守る設計ではなく、最初から到達できる場所を減らし、管理アクセスは仲介し、サービス間通信はトークンベースにすることが、2026年時点では標準設計になりつつあります。

背景にあるのは、攻撃者が高度な侵入経路だけでなく、公開された管理ポート、漏えいしたシークレット、例外だらけのネットワーク設定を狙う「機会型攻撃」です。Microsoftは2026年4月20日のSecurity Blogで、資格情報の削減、公開到達可能なエンドポイントの削減、Managed IdentityやPrivate Link、Bastionのような設計を組み合わせる重要性を示しています。(Microsoft)

この記事では、Cloud security architects、network security teams、platform engineersに向けて、private endpoints、brokered admin access、token-based service callsをどのように標準設計へ組み込むべきかを、判断基準と実装時の注意点まで具体的に整理します。

目次

なぜ「追加のハードニング」ではなく「標準設計要件」になっているのか

従来のクラウド設計では、サービスを公開エンドポイントで作成し、あとからFirewall、IP制限、MFA、監査ログ、シークレットローテーションを追加する流れがよくありました。小規模な環境では一見うまく見えますが、サービス数、リージョン数、開発チーム数が増えると、例外設定が増え、どこに公開口が残っているか把握しづらくなります。

Microsoftのブログでは、攻撃者は必ずしも「ネットワークを破る」のではなく、盗まれた資格情報でログインすることが多いと説明されています。また、ワークロードがシークレットなしで認証できるならそうすべきであり、AzureではManaged IdentityやフェデレーションされたIDパターンによって、保存・ローテーション・期限切れ対応が必要なパスワード、クライアントシークレット、APIキーを減らせるとしています。(Microsoft)

重要なのは、これらを個別のセキュリティ施策として扱わないことです。private endpointだけを導入しても、RDP/SSHが公開されていれば管理面の攻撃対象は残ります。Managed Identityを導入しても、ネットワークが誰からでも到達可能なら探索や誤設定のリスクは下がりません。

2026年時点の実務的な設計方針は、次の3点をセットで考えることです。

設計要件従来ありがちな設計これからの標準設計主な狙い
Private endpoints / private connectivityPaaSを公開エンドポイントで作成し、IP制限で守るAzure Private Link / private endpointでVNet内のプライベートIP経由にするインターネットから探索される面を減らす
Brokered admin accessVMにPublic IPを付け、RDP/SSHを制限付きで開けるAzure Bastion、JIT、Serial Console、Microsoft Entra Private Accessなどで仲介する管理ポートの直接公開を避ける
Token-based service calls接続文字列、APIキー、クライアントシークレットをアプリに保存するManaged Identity、Workload Identity、OAuthトークンで認可する漏えい・再利用・期限切れによる事故を減らす

Azure private endpointsは「公開しない」ための基本部品

Azure private endpointは、Azure Private Linkを利用するサービスへ、仮想ネットワーク内のプライベートIPアドレスで接続するためのネットワークインターフェイスです。Azure Private Linkでは、Azure PaaSやPrivate Link対応サービスへの通信がMicrosoft backbone networkを通り、パブリックインターネットへの露出を減らせます。(Microsoft Learn)

つまりprivate endpointは、単なる「通信経路の暗号化」ではありません。設計上の価値は、攻撃者がインターネット側から見つけられる入口を減らすことにあります。

private endpointを優先すべきリソース

すべてのリソースを一気にprivate endpoint化する必要はありません。まずは、侵害時の影響が大きいデータプレーンから優先します。

優先度対象例判断基準
高データベース、Storage、Key Vault、メッセージング基盤機密データ、鍵、接続文字列、業務データを扱う
高CI/CDや自動化基盤が接続するサービスビルドエージェントや運用スクリプトから定常的にアクセスする
中内部API、業務アプリ、管理用ポータル社内・特定拠点・特定ワークロードだけが利用する
中ログ、監視、診断データの送信先障害時に止められないため、DNSと経路設計を慎重に行う
低一般公開が前提のWebフロントWAF、DDoS対策、認証、Bot対策など別の保護を優先する

判断の目安は「そのサービスは、世界中のインターネットから名前解決・接続試行される必要があるか」です。必要がないなら、private endpoint化を標準候補に入れるべきです。

DNS設計を後回しにしない

private endpoint導入で最も失敗しやすいのはDNSです。Microsoft Learnでは、private endpointのIPアドレスを接続先FQDNに解決するため、DNS設定を正しく構成することが重要だと説明しています。また、既存のAzureサービスには公開エンドポイント向けDNS構成があるため、private endpoint利用時には解決を上書きする必要があります。(Microsoft Learn)

よくある失敗は次の通りです。

失敗パターン起きる問題対策
private endpointだけ作成し、DNSを未整備アプリが引き続き公開エンドポイントへ接続するPrivate DNS ZoneをVNetにリンクし、名前解決結果を確認する
1つのPrivate DNS Zoneに複数サービスを雑に混在Aレコードの競合や名前解決不良が起きるサービスごとの推奨ゾーン名に従う
オンプレミスDNSとの連携を考えないVPN/ExpressRoute越しのクライアントだけ接続できない条件付きフォワーダーやAzure DNS Private Resolverを設計に入れる
パブリックアクセスを残したまま満足する攻撃面削減の効果が限定的になるサービス側のPublic network accessやFirewall設定も確認する

private endpointは「作成したら終わり」ではありません。名前解決、経路、サービス側の公開設定、監視ログまでセットで確認して初めて、安全なプライベート接続になります。

Brokered admin accessでRDP/SSHを直接公開しない

管理アクセスは、攻撃者にとって非常に分かりやすい入口です。RDPの3389番、SSHの22番をインターネットへ公開し、送信元IP制限だけで守る設計は、現在では例外扱いにすべきです。

Azure Bastionは、Azure portalまたはローカルのSSH/RDPクライアントから、TLS経由でVMへ接続するフルマネージドPaaSです。Azure BastionはVNetに直接デプロイされ、private IPを使ってVMへ接続できるため、VM側にPublic IP、エージェント、特別なクライアントソフトウェアを必要としません。(Microsoft Learn)

Bastionを使うべき場面

Azure Bastionは、次のようなケースで特に有効です。

場面推奨アプローチ
Azure VMへ一時的にRDP/SSHしたいAzure Bastion経由にし、VMのPublic IPを削除する
運用者ごとにアクセス制御したいMicrosoft Entra ID、RBAC、PIM、条件付きアクセスと組み合わせる
管理操作の証跡が必要Bastion Premiumのセッション記録などを検討する
より閉じた管理経路にしたいPrivate-only Bastionを検討する

Private-only Bastionでは、Bastionホスト自体へのPublic IP経由接続を許可せず、private IPアクセスのみを可能にする構成が用意されています。要件やSKUの制約はありますが、管理面の公開範囲をさらに小さくしたい環境では有力な選択肢です。(Microsoft Learn)

Microsoft Entra Private Accessとの使い分け

Azure Bastionが主にAzure VMへの管理接続を仲介するのに対し、Microsoft Entra Private Accessは、社内アプリやオンプレミスリソースなどのプライベートリソースへのアクセスを、ID中心のZero Trust Network Accessとして制御する位置づけです。

Microsoft Entra Private Accessでは、FQDNやIPアドレスでプライベートリソースを指定し、Global Secure Access Clientを通じてアクセスできます。Remote workersは、条件を満たせば従来型VPNなしで内部リソースへアクセスでき、Conditional Accessによる制御も組み込めます。(Microsoft Learn)

ざっくり整理すると、次のようになります。

用途向いているサービス
Azure VMへのRDP/SSH管理Azure Bastion
オンプレミスや社内アプリへのユーザーアクセスMicrosoft Entra Private Access
一時的な高権限運用PIM、JIT、Bastion、条件付きアクセスの組み合わせ
緊急時の低レベル管理Serial Consoleなど、通常経路とは別の手段を設計

ポイントは、管理アクセスを「ネットワーク的に開ける」のではなく、誰が、どの条件で、どのリソースに、どの時間だけ接続できるかとして設計することです。

Token-based service callsでシークレットを持たないサービス間通信へ移行する

サービス間通信では、接続文字列、APIキー、クライアントシークレットをアプリケーション設定やCI/CD変数に保存する設計が長く使われてきました。しかし、これらは漏えい、期限切れ、ローテーション漏れ、リポジトリへの誤コミットの原因になります。

Managed Identityを使うと、Azureリソース上で動くアプリケーションは、資格情報をコードや設定に持たずにMicrosoft Entraトークンを取得し、対応するリソースへアクセスできます。Microsoft Learnでも、Managed Identityは開発者が資格情報を管理する必要をなくし、アプリケーションが資格情報なしでMicrosoft Entraトークンを取得できると説明されています。(Microsoft Learn)

実装時の基本パターン

典型的な構成は次の通りです。

ステップ実施内容
IDを割り当てるApp Service、VM、AKS、Functionsなどにsystem-assignedまたはuser-assigned managed identityを割り当てる
権限を付与するStorage、Key Vault、SQLなどの対象リソースに対し、必要最小限のRBACやデータプレーン権限を付与する
SDKを使うAzure IdentityライブラリやMSALを使い、シークレットではなくトークンで認証する
ネットワークを閉じるprivate endpointやFirewallで、認可されたネットワーク・ワークロードからのみ到達可能にする
監査するMicrosoft Entraサインインログ、Azure Activity logs、リソースログで利用状況を確認する

system-assignedとuser-assignedの選び方

Managed Identityにはsystem-assignedとuser-assignedがあります。どちらか一方が常に正解ではありません。

種類向いているケース注意点
system-assigned managed identity単一リソースに固有の権限を持たせたい。リソース削除時にIDも消したいリソース再作成時にIDも変わるため、権限再付与が必要になる場合がある
user-assigned managed identity複数リソースで同じ権限を使いたい。事前に権限付与したIDを使いたい使い回しすぎると権限範囲が広がる。不要になったIDを手動で削除する必要がある

Microsoft Learnでは、複数リソースが同じリソースへアクセスする場合はuser-assigned identityで管理負荷を下げられる一方、各リソースに固有の権限が必要な場合や、リソース削除時にIDも削除したい場合はsystem-assigned identityが適すると説明されています。(Microsoft Learn)

トークンベースでも「権限を広げすぎない」

トークンベースにすれば安全、というわけではありません。アクセストークンは認可のためのセキュリティトークンであり、扱いを誤るとリスクになります。Microsoft identity platformのドキュメントでも、アクセストークンはセンシティブな資格情報として扱うべきだと説明されています。(Microsoft Learn)

特に注意したいのは、Managed Identityに強すぎる権限を与えることです。たとえば、アプリの実行権限を持つユーザーがそのアプリ上でコードを実行できる場合、そのアプリに割り当てられたManaged Identityの権限も間接的に使える可能性があります。Microsoft Learnでも、コードを実行できるリソースに管理アクセスを与える場合、そのManaged Identityの権限を考慮する必要があると説明されています。(Microsoft Learn)

実務では、次のように設計します。

  • 「Reader」「Contributor」などの広いロールを安易に付与しない
  • データプレーン権限と管理プレーン権限を分ける
  • 本番、検証、開発でManaged Identityを分ける
  • 同じuser-assigned identityを多数の無関係なアプリで共有しない
  • 権限変更の反映遅延を考慮し、緊急遮断手順を用意する

Managed Identityのグループやロールメンバーシップ変更は、トークン更新まで反映に時間がかかることがあります。Microsoft Learnでは、Managed Identityトークンは基盤側でキャッシュされ、変更が反映されるまで数時間かかる場合があると説明されています。(Microsoft Learn)

Zero Trust network accessでは「ネットワーク信頼」から「IDと条件」へ移す

Zero Trust network accessの本質は、社内ネットワークにいるから安全、VPNに入ったから信頼できる、という前提を捨てることです。Microsoft Entraは、ID、アクセス条件、権限、接続チャネル、侵害の監視を組み合わせてZero Trust戦略を実装するための製品群として位置づけられています。(Microsoft Learn)

この考え方をAzure設計へ落とすと、次のようになります。

レイヤー設計の考え方
ネットワーク公開エンドポイントを減らし、private endpointやPrivate Linkで閉じる
IDユーザー、ワークロード、AIエージェントを個別のIDとして扱う
アクセス制御条件付きアクセス、PIM、RBAC、最小権限で制御する
管理アクセスRDP/SSHを直接開けず、BastionやPrivate Accessで仲介する
サービス間通信シークレットではなく、Managed IdentityやWorkload Identityでトークン認可する
監査サインインログ、Activity logs、リソースログ、セッション記録を集約する

Microsoft Entra Private Accessのラボドキュメントでも、ZTNAとしてオンプレミスリソースへ細かいアクセスを提供し、Conditional Access、Continuous Access Evaluation、Privileged Identity Managementなどでアクセスセキュリティを強化できると説明されています。(Microsoft Learn)

実装ロードマップ:どこから着手すべきか

private endpoints、Bastion、Managed Identityをいきなり全社導入しようとすると、DNS、権限、運用手順、コスト、例外処理が同時に発生して失敗しがちです。最初は「攻撃面をどこから減らすと効果が大きいか」で順序を決めます。

フェーズやること成果物
現状把握Public IP、公開PaaS、RDP/SSH、保存済みシークレットを棚卸しする攻撃面インベントリ
優先順位付けデータ、鍵、管理アクセス、CI/CD経路を高優先にする移行対象リスト
private connectivity化Private Link、private endpoint、Private DNS Zoneを設計するプライベート接続テンプレート
管理アクセスの仲介Bastion、JIT、Entra Private Access、PIMを導入する管理アクセス標準
シークレット削減Managed Identity、Workload Identity、OAuthへ移行するシークレット廃止計画
標準化IaC、Azure Policy、テンプレート、CI/CDチェックに組み込むplatform guardrails
監査と改善ログ、例外、未対応リソースを継続監視するセキュリティ運用ダッシュボード

特に効果が大きい最初の一手は、本番環境の管理ポートとデータストアの公開経路をなくすことです。公開されたVMのRDP/SSH、StorageやSQLの広い公開設定、長期間使われているクライアントシークレットは、攻撃者にとって分かりやすい入口になります。

アーキテクチャ例:Azure上の業務アプリを閉じる

たとえば、グローバル企業がAzure上で業務アプリを運用している場合、次のような設計が現実的です。

コンポーネント推奨設計
フロントエンド公開が必要な場合のみWAFや認証を前段に配置する
アプリケーションApp Service、AKS、FunctionsなどにManaged Identityを割り当てる
データベースAzure SQLやCosmos DBはprivate endpoint経由にする
シークレット管理Key Vaultはprivate endpoint化し、アプリはManaged Identityでアクセスする
管理アクセスVMや踏み台を直接公開せず、Azure BastionまたはEntra Private Accessを使う
名前解決Private DNS ZoneをハブVNetまたは共通DNS設計に組み込む
権限RBACとデータプレーン権限を分け、最小権限で付与する
監査Entraサインインログ、Activity logs、診断ログをSIEMへ送る

この構成では、アプリケーションはインターネットへ公開されたデータベース名や接続文字列に依存しません。管理者もVMへ直接RDP/SSHしません。サービス間通信はManaged Identityで発行されたトークンを使い、ネットワーク経路はprivate endpointで閉じます。

結果として、攻撃者が外部からスキャンして見つけられる入口、盗んで再利用できるシークレット、横展開に使える共有資格情報を同時に減らせます。

失敗しやすいポイントと回避策

private endpointを作っただけで安心する

private endpointを作成しても、サービス側のPublic network accessが残っていたり、DNSが公開エンドポイントを向いたままだったりすると、期待した攻撃面削減になりません。作成後は、クライアントからの名前解決結果、接続元IP、リソース側ログを必ず確認します。

Bastionを入れてもVMのPublic IPを残す

Azure Bastionを導入したのに、既存VMのPublic IPやNSGのRDP/SSH許可が残っているケースがあります。この状態では「別経路を追加しただけ」です。Bastion経由で運用できることを確認したら、不要なPublic IPとインバウンド許可を削除します。

user-assigned managed identityを共有しすぎる

user-assigned managed identityは便利ですが、複数アプリで使い回すと、1つのアプリ侵害で広い権限が使われる可能性があります。同じ業務機能、同じ権限範囲、同じライフサイクルのリソースに限定して共有するのが安全です。

条件付きアクセスだけに頼る

条件付きアクセスは重要ですが、公開エンドポイントや管理ポートが多い状態をすべて補えるわけではありません。Zero Trustでは「アクセスを評価する」だけでなく、「そもそも到達できる対象を減らす」ことも同じくらい重要です。

例外を恒久化する

「このシステムだけ一時的にPublic IPを許可」「このチームだけシークレット認証を継続」といった例外は、期限と所有者を決めないと恒久化します。例外はチケット化し、期限、理由、代替案、レビュー日を必ず設定します。

組織標準に落とし込むためのチェックリスト

実装を個別チーム任せにすると、private endpointやManaged Identityの導入状況にばらつきが出ます。platform engineeringの観点では、セキュアな選択肢を「使いやすい標準」として提供することが重要です。Microsoftのブログでも、標準化されたpaved pathsにより、セキュリティを後付けではなく設計に組み込む考え方が示されています。(Microsoft)

導入時は、次のチェックリストを使うと抜け漏れを減らせます。

チェック項目確認内容
公開エンドポイント本当にインターネット公開が必要か。不要ならprivate endpoint化できるか
管理ポートRDP/SSH/WinRMなどがインターネットに開いていないか
DNSPrivate DNS Zone、オンプレミスDNS、フォワーダー設計が整っているか
シークレットAPIキー、クライアントシークレット、接続文字列をManaged Identityへ置き換えられるか
権限IDごとに最小権限になっているか。環境ごとに分離されているか
IaCTerraform、Bicep、ARMテンプレートで標準構成を再利用できるか
PolicyPublic IP作成、公開PaaS、広すぎるNSGを検出・禁止できるか
監査誰が、いつ、どのIDで、どのリソースへアクセスしたか追跡できるか
例外管理例外に期限、責任者、レビュー日があるか
運用手順障害時、権限剥奪時、DNS不具合時の手順があるか

まず次に取るべき行動

Microsoft Entra、Azure private endpoints、Zero Trust network accessをこれから設計するなら、最初にやるべきことは新機能の比較ではありません。自社環境の「到達できる入口」と「盗まれる可能性のある資格情報」を棚卸しすることです。

優先順位は次の順で考えると実行しやすくなります。

  1. 本番VMのPublic IP、RDP、SSHを洗い出す
  2. 機密データを扱うPaaSの公開エンドポイントを洗い出す
  3. 長期間使っているクライアントシークレット、APIキー、接続文字列を洗い出す
  4. 高リスクなものからBastion、private endpoint、Managed Identityへ移行する
  5. Azure Policy、IaC、CI/CDチェックで「安全な構成」を標準化する

private endpoints、brokered admin access、token-based service callsは、もはや「余裕があれば追加する強化策」ではありません。公開面を減らし、管理アクセスを仲介し、サービス間通信からシークレットをなくすことが、AzureとMicrosoft Entraを使うクラウド基盤のデフォルト設計になりつつあります。

まずは1つの重要システムを選び、公開エンドポイント、管理ポート、保存済みシークレットを可視化してください。そこからprivate connectivity、BastionまたはEntra Private Access、Managed Identityへ順に置き換えることで、機会型攻撃に強いクラウド設計へ現実的に移行できます。

この記事を書いた人

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

コメント

コメントする

目次