Azure NetworkingのNSP更新まとめ:AVMのprofile/access-rule追加と対応ポイント

Azure Networkingの「Network Security Perimeter(NSP)」をBicepやAzure Verified Modules(AVM)で管理している場合、今回の更新でまず見るべきポイントは profile と access-rule の子モジュールが公開されたこと です。既存のAzureリソース設定が自動で変更される更新ではありませんが、NSPのプロファイルやアクセスルールをIaCで分離管理しやすくなったため、管理者はモジュール参照、テレメトリ設定、アクセスルールの設計、TransitionからEnforcedへの展開手順を確認しておくべきです。

2026年5月20日にマージされたPRでは、avm/res/network/network-security-perimeter/profile と avm/res/network/network-security-perimeter/profile/access-rule の追加、enableTelemetry パラメータの導入、READMEとCHANGELOGの更新、JSONファイル内のBicep生成バージョン更新が行われています。変更内容はAVMのNetwork Security Perimeterモジュール利用者に関係するもので、Azure Networking全体の脆弱性修正や緊急パッチではなく、NSPをIaCで扱うためのモジュール更新として捉えるのが正確です。(GitHub)

目次

今回のAzure Networking documentation updateで変わったこと

今回の更新は、Azure Network Security Perimeterそのものの概念を変えるものではなく、AVM BicepモジュールでNSPの子リソースを扱いやすくする更新です。特に、これまで親モジュール中心で管理していたプロファイルやアクセスルールを、より細かい単位でデプロイできるようになった点が実務上のポイントです。

変更点内容管理者・開発者が確認すべきこと
profile 子モジュールの公開avm/res/network/network-security-perimeter/profile が追加され、NSPプロファイルを個別モジュールとして参照可能になりました。(GitHub)親NSPは基盤チーム、プロファイルはアプリチームなど、管理単位を分けるか検討する
profile/access-rule 子モジュールの公開avm/res/network/network-security-perimeter/profile/access-rule が追加され、アクセスルールを単体で管理しやすくなりました。(GitHub)ルール追加・変更だけをCI/CDで反映する運用に使えるか確認する
enableTelemetry パラメータの導入モジュールの使用状況テレメトリを有効・無効にするパラメータが追加されています。単体の子モジュールでは既定値が True と記載されています。(GitHub)組織のデータ収集・プライバシーポリシーに合わせて false 指定を標準化するか決める
README・CHANGELOGの更新親モジュールは 0.1.4、profile と access-rule は 0.1.0 としてCHANGELOGが更新されています。Breaking Changesはいずれも「None」です。(GitHub)既存テンプレートに破壊的変更がない前提でも、バージョン固定と検証環境での展開を行う
Bicep生成バージョンの更新PRではJSONファイル内のBicepバージョンが 0.43.8 に更新されています。(GitHub)CI/CDでBicepビルドやARM JSON検証を行う場合、ローカル・パイプラインのBicep CLIバージョンを確認する

実務上は、「すぐ既存環境を直す必要があるか」よりも、「今後NSPをどうIaC管理するか」を見直す更新です。特に、Azure PaaSのネットワーク境界を中央集権的に管理したい組織では、親モジュールだけで一括管理するか、子モジュールで権限と責任を分けるかを決めるタイミングになります。

Azure Network Security Perimeterとprofile/access-ruleの関係

Azure Network Security Perimeterは、仮想ネットワーク外に配置されるAzure PaaSリソースの周囲に論理的なネットワーク境界を作り、パブリックネットワーク経由のアクセスを明示的なルールで制御する機能です。Microsoft Learnでは、NSPはAzure StorageやAzure Key VaultなどのPaaSリソースに対するパブリックアクセス制御を支援し、境界内リソース間の通信、外部パブリックアクセス管理、アクセスログ、PaaS横断の統一的な管理を主な特徴として説明しています。(Microsoft Learn)

NSPを理解するには、次の4つを分けて考えると整理しやすくなります。

構成要素役割実務での見方
Network Security PerimeterPaaSリソースを保護する論理境界の最上位リソース「どのシステム境界を作るか」を表す
Profile関連付けられたリソースに適用するアクセスルールの集合「同じルールを共有するリソース群」を表す
Access rule境界外との通信を許可するInbound/Outboundルール「例外的に許可する外部通信」を表す
Resource associationPaaSリソースをNSPのプロファイルに関連付ける設定「どのリソースをどのプロファイルに入れるか」を表す

Microsoftの概念ドキュメントでも、Profileは関連付けられたリソースに適用されるアクセスルールの集合、Access ruleは境界外アクセスを許可するInbound/Outboundルール、Resource associationはPaaSリソースの境界メンバーシップと説明されています。(Microsoft Learn)

この構造をBicepで管理する場合、今回追加された子モジュールによって、次のような分担がしやすくなります。

管理対象利用するモジュール向いている運用
NSP本体、診断設定、ロック、RBAC、プロファイル、リソース関連付けをまとめて管理avm/res/network/network-security-perimeter基盤チームがNSP全体を一括管理する
既存NSP配下にプロファイルを追加・更新avm/res/network/network-security-perimeter/profile共通NSPの中でアプリ単位のプロファイルを作る
既存プロファイルにアクセスルールを追加・更新avm/res/network/network-security-perimeter/profile/access-ruleルール変更だけを申請・承認・展開する

既存環境への影響範囲

今回のAzure Networking documentation updateは、既存のAzureリソースに即時の動作変更を加えるものではありません。影響が出るのは主に、AVMのBicepモジュールを使ってNSPをデプロイ・更新するタイミングです。

影響を受けやすいケース

次のいずれかに該当するチームは、今回の更新を確認する価値があります。

対象確認理由
AVMのNSPモジュールを使っている親モジュールのCHANGELOGが 0.1.4 に更新され、子モジュール公開が明記されています。(GitHub)
Bicep Registryの br/public:avm/... をCI/CDで参照しているバージョン固定、検証環境でのwhat-if、Bicep CLIバージョン確認が必要です
NSPのプロファイル・アクセスルールを手書きBicepで管理している子モジュールへ置き換えることで、標準化とレビュー容易性を高められます
PaaSファイアウォール設定を各サービス個別に管理しているNSPに移行する場合、Transition/Enforcedの移行設計が必要です
組織でテレメトリ送信を制限しているenableTelemetry の既定値と明示設定を確認する必要があります

影響が限定的なケース

Azure PortalだけでNSPを操作している、またはNSPをまだ導入していない場合、今回のモジュール更新だけで既存通信が変わることは基本的にありません。ただし、今後BicepやCI/CDでNSPを管理する予定があるなら、最初から子モジュールを使う設計にしておくと、運用分担がしやすくなります。

また、これは「セキュリティに関わるモジュール更新」ではありますが、脆弱性修正として急いで適用するタイプの更新ではありません。親モジュールのCHANGELOGではBreaking ChangesはNoneと記載されています。(GitHub)

管理者が確認すべき設定ポイント

enableTelemetry は組織ポリシーに合わせて明示する

今回の更新で重要なのが enableTelemetry です。profile と access-rule のREADMEでは、enableTelemetry はモジュールの利用テレメトリを有効・無効にするパラメータで、単体利用時の既定値は True と記載されています。(GitHub)

AVMのテレメトリ説明では、テレメトリは任意であり、Bicepでは enableTelemetry を false にすることでオプトアウトできると説明されています。(Azure)

セキュリティやコンプライアンスが厳しい環境では、テンプレートごとに判断するのではなく、社内のBicep標準として次のように決めておくと運用がぶれません。

方針設定例向いている環境
テレメトリを許可するenableTelemetry: trueMicrosoftのAVM改善に利用状況を提供しても問題ない環境
テレメトリを無効化するenableTelemetry: false金融、公共、社内規定で外部送信を制限する環境
親モジュールだけで管理する親モジュール側で明示子モジュールを直接呼ばず、基盤チームが一括管理する環境

ここで注意したいのは、AVMの利用テレメトリとNSPのアクセスログは別物だという点です。enableTelemetry を無効にしても、NSPの診断ログ設計が不要になるわけではありません。通信の許可・拒否を監査するには、NSP側の診断設定を別途設計する必要があります。

Inbound/Outboundアクセスルールで使える属性を確認する

NSPのアクセスルールは、InboundとOutboundで使う属性が異なります。Microsoft LearnのNSP概念ドキュメントでは、サポートされるアクセスルール種別として、InboundはサブスクリプションベースとIPベース、OutboundはFQDNベースが示されています。(Microsoft Learn)

方向主に使うパラメータ用途例注意点
InboundaddressPrefixes社内固定IPレンジからKey Vaultへアクセスを許可CIDR形式で管理し、個人宅IPなど一時的な値を恒久ルールにしない
Inboundsubscriptions特定サブスクリプションのマネージドIDからのアクセスを許可認証方式やマネージドIDの利用条件を確認する
OutboundfullyQualifiedDomainNamesPaaSリソースから外部APIのFQDNへの通信を許可宛先FQDNを棚卸しし、過剰に広い許可を避ける

Access Ruleのテンプレートリファレンスには emailAddresses、phoneNumbers、serviceTags もプロパティとして表示されますが、同じページでこれらのルール種別は現在利用不可と説明されています。実装時は「プロパティがあるから使える」と判断せず、利用可能なルール種別を公式ドキュメントで確認してください。(Microsoft Learn)

Resource associationのaccessModeは移行段階で使い分ける

NSPを既存PaaSに導入する場合、最も事故が起きやすいのは accessMode の切り替えです。Microsoft Learnでは、Transitionは既定モードで、NSP構成に一致しない場合にリソース側のファイアウォール設定へフォールバックできる移行用モード、EnforcedはNSPアクセスルールだけに従うモードと説明されています。(Microsoft Learn)

モード使う場面注意点
Transition既存通信を観察し、必要なアクセスルールを洗い出す段階この段階では完全な保護状態ではない
Enforced必要なInbound/Outboundルールを確認し終えた本番適用段階許可ルールが不足すると通信断につながる

古い説明やAPIバージョンではLearningという表記が残る場合があります。NSP概念ドキュメントでもTransition modeは「formerly Learning mode」と説明されています。Bicep、REST API、Azure Portal、SDKで受け付ける値がずれるとデプロイ失敗につながるため、CI/CDでは利用するAPIバージョンと実際の検証結果をセットで確認してください。(Microsoft Learn)

Private Link、Managed Identity、診断ログを混同しない

NSPはパブリックネットワークアクセスの制御に強く関係しますが、Private Link経由のアクセスはNSPの影響を受けないとMicrosoft Learnで説明されています。Enforcedにする前に、どの通信がPrivate Linkで、どの通信がパブリック経由なのかを分けて棚卸しすることが重要です。(Microsoft Learn)

また、NSP内のリソース間通信ではManaged Identityの利用が重要です。クイックスタートでは、境界内またはリンクされた境界間の安全なアクセスを確保するため、Managed Identityの有効化が強く推奨されています。(Microsoft Learn)

診断ログも必須の確認項目です。Transitionモードでログを有効にすると、NSP構成で許可された通信なのか、既存リソース側のファイアウォール設定で許可された通信なのかを分析できます。Enforcedへ移行する前にログを確認しないと、必要なルール不足に気づけません。(Microsoft Learn)

開発者向け:Bicepでの利用イメージ

親モジュールでNSP本体とプロファイル、アクセスルールをまとめて管理する場合は、次のような構成になります。実際のIPアドレス、FQDN、リソース名は自社環境に合わせて置き換えてください。

targetScope = 'resourceGroup'

param location string = resourceGroup().location

module nsp 'br/public:avm/res/network/network-security-perimeter:0.1.4' = {
  name: 'deploy-nsp-prod'
  params: {
    name: 'nsp-prod-001'
    location: location
    enableTelemetry: false
    profiles: [
      {
        name: 'profile-app'
        accessRules: [
          {
            name: 'allow-corp-in'
            direction: 'Inbound'
            addressPrefixes: [
              '203.0.113.0/24'
            ]
          }
          {
            name: 'allow-api-out'
            direction: 'Outbound'
            fullyQualifiedDomainNames: [
              'api.contoso.com'
            ]
          }
        ]
      }
    ]
  }
}

親モジュールのREADMEでは、profiles 配下に accessRules を指定する例が示され、OutboundではFQDN、InboundではIPアドレスプレフィックスを指定する例が掲載されています。(GitHub)

一方、既存NSPに対してプロファイルだけを追加したい場合は、今回公開された profile 子モジュールを使えます。

module nspProfile 'br/public:avm/res/network/network-security-perimeter/profile:0.1.0' = {
  name: 'deploy-nsp-profile-app'
  params: {
    networkPerimeterName: 'nsp-prod-001'
    name: 'profile-app'
    enableTelemetry: false
  }
}

既存プロファイルにアクセスルールだけを追加・更新したい場合は、profile/access-rule 子モジュールを使います。

module outboundRule 'br/public:avm/res/network/network-security-perimeter/profile/access-rule:0.1.0' = {
  name: 'deploy-nsp-rule-api'
  params: {
    networkPerimeterName: 'nsp-prod-001'
    networkPerimeterProfileName: 'profile-app'
    name: 'allow-api-out'
    direction: 'Outbound'
    fullyQualifiedDomainNames: [
      'api.contoso.com'
    ]
    enableTelemetry: false
  }
}

profile モジュールでは、スタンドアロン利用時に親NSP名を示す networkPerimeterName が必要です。access-rule モジュールでは、親NSP名に加えて networkPerimeterProfileName が必要です。どちらのREADMEにも、単体モジュールとして br/public:avm/res/network/network-security-perimeter/profile、br/public:avm/res/network/network-security-perimeter/profile/access-rule を参照する形式が示されています。(GitHub)

安全に移行・展開する手順

NSPは通信制御に直結するため、モジュール更新を見つけたからといって本番へ即時反映するのは避けるべきです。特にEnforcedへ移行する場合は、段階的な検証が必要です。

手順実施内容判断基準
既存IaCを棚卸しするavm/res/network/network-security-perimeter、手書きの Microsoft.Network/networkSecurityPerimeters を検索する親モジュール管理か子モジュール管理かを分類できる
バージョン固定を確認する0.1.4 や 0.1.0 など、利用するモジュールバージョンを明示するCI/CDで意図しないバージョン変更が起きない
テレメトリ方針を決めるenableTelemetry を明示し、社内標準に反映する本番テンプレートで設定漏れがない
検証環境でwhat-ifを実行する既存プロファイル・アクセスルール・関連付けの差分を見る予期しない削除や上書きがない
Transitionでログを集める既存通信を観察し、不足しているInbound/Outboundルールを洗い出す必要通信と不要通信を区別できる
Enforcedへ切り替えるルールが揃ったプロファイルから段階的に適用する通信断時の切り戻し手順がある
運用監視を定着させる診断ログ、変更履歴、ルールレビューを定期運用に入れる例外ルールが増え続けない

Transitionモードは、既存PaaSリソースをNSPへ安全に移行するための段階として説明されています。Microsoft Learnでは、TransitionではNSP構成に一致しない場合に既存のリソースファイアウォール設定へフォールバックでき、診断ログにより不足ルールや不要な接続を分析できるとされています。(Microsoft Learn)

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

子モジュールを使っても、設計責任は分離しすぎない

profile や access-rule を子モジュール化できると、アプリチームが個別ルールを管理しやすくなります。ただし、各チームが自由にOutbound FQDNを追加し始めると、NSP本来の「境界管理」が形だけになります。

ルール追加は、次の情報をセットでレビューすると実務で破綻しにくくなります。

レビュー項目確認内容
通信方向InboundかOutboundか
宛先・送信元IPレンジ、サブスクリプション、FQDNが過剰に広くないか
認証方式Managed IdentityやRBACで認可されているか
期限一時的な例外なのか、恒久ルールなのか
監査診断ログで確認できるか

Enforcedへの切り替えを急ぎすぎる

Enforcedでは、関連付けられたPaaSリソースのパブリックInbound/OutboundアクセスがNSPアクセスルールに従います。必要なルールが不足していると、アプリケーションの外部API連携、監視連携、運用端末からのアクセスが止まる可能性があります。Microsoft Learnでも、既存リソースではTransitionモードを使い、ログを分析してからEnforcedへ移行する流れが説明されています。(Microsoft Learn)

使えないルール種別を使おうとする

テンプレートリファレンスにプロパティが表示されていても、現在利用不可とされているルール種別があります。特に emailAddresses、phoneNumbers、serviceTags は、Access Ruleのプロパティとして表示される一方で「currently unavailable for use」と説明されています。(Microsoft Learn)

本番テンプレートでは、現時点で利用可能なInboundのIP・サブスクリプション、OutboundのFQDNを中心に設計するのが安全です。

ルール名や設定値に機微情報を入れる

NSPの概念ドキュメントでは、組織および情報保護の観点から、NSPルールや構成に個人情報・機微情報を含めないよう注意されています。(Microsoft Learn)

たとえば、ルール名に顧客名、案件名、個人名、内部システムの詳細すぎる名称を入れるのは避けましょう。allow-crm-out のような機能単位の名前にし、詳細は社内の変更管理チケットに持たせるほうが安全です。

名前長とスケール制限を後回しにする

NSPにはスケール上の制限があります。Microsoft Learnでは、推奨制限としてサブスクリプションあたりNSP最大100、NSPあたりプロファイル最大200、プロファイルあたりInbound/Outboundそれぞれルール要素最大200、同一NSPに関連付けるPaaSリソース最大1000などが示されています。(Microsoft Learn)

また、Azure Portalで作成されるResource Association名の制約により、関連付け対象リソース名は44文字以内に制限される場合があると説明されています。長い命名規則を採用している組織では、NSP導入前にリソース名の設計を見直してください。(Microsoft Learn)

今回の更新を採用すべき判断基準

今回の子モジュール公開は、すべてのチームがすぐ採用すべき更新ではありません。以下のように、運用モデルに合わせて判断するのが現実的です。

状況推奨判断
NSP本体からアクセスルールまで基盤チームが一括管理している親モジュール中心で継続し、必要に応じて子モジュールを検証する
アプリチームごとにプロファイルやルールを分けたいprofile と access-rule 子モジュールの採用を検討する
既存の手書きBicepでアクセスルールだけを管理している子モジュールへの移行候補にする
本番でまだNSPを使っていない先に対象PaaS、対応状況、Transition運用、ログ設計を確認する
Cosmos DB、SQL DB、Azure OpenAI Serviceなどを対象にしたいサービスごとの提供状態や制約を確認してから採用する

NSPの概念ドキュメントでは、Azure Monitor、AI Search、Event Hubs、Key Vault、Storage、Foundry、Service Busなど複数のサービスが一般提供として記載される一方、Cosmos DB、SQL DB、Azure OpenAI ServiceはNetwork Security Perimeterに関してパブリックプレビューとして示されています。プレビューはSLAなしで提供され、本番ワークロードには推奨されない場合があるため、対象サービスごとの状態確認が必要です。(Microsoft Learn)

管理者が今すぐ確認するチェックリスト

今回のAzure Networking documentation updateを受けて、まずは次の順で確認すると効率的です。

チェック項目確認方法
AVMのNSPモジュールを使っているかBicep内で avm/res/network/network-security-perimeter を検索する
バージョンが固定されているかbr/public:...:<version> の指定を確認する
子モジュールを使う余地があるかprofileやaccess-ruleを別チーム・別パイプラインで管理したいか確認する
enableTelemetry 方針が明確か本番テンプレートで true / false を明示する
Inbound/Outboundルールが最小限かIP、サブスクリプション、FQDNの許可範囲を見直す
Transitionのログを見ているかEnforced移行前に診断ログを確認する
Private LinkとPublicアクセスを分けて設計しているか通信経路ごとに影響を整理する
Resource Association削除時の影響を把握しているかpublicNetworkAccess が SecuredByPerimeter の場合のロックダウンに注意する

クイックスタートでは、Resource Associationを削除するとアクセス制御が既存リソースのファイアウォール構成に戻る可能性があり、PublicNetworkAccess が SecuredByPerimeter の状態で関連付けを削除するとロックダウン状態になると説明されています。切り戻し手順を作る際は、この点を必ず確認してください。(Microsoft Learn)

まとめ:今回の更新はNSP運用を細かく標準化するための機会

2026年5月20日のAzure Networking documentation updateは、Network Security PerimeterのAVM Bicepモジュールに profile と access-rule の子モジュールを追加する更新です。既存環境を自動で変えるものではありませんが、NSPをIaCで管理する組織にとっては、プロファイルとアクセスルールの運用をより細かく分離・標準化できる意味があります。

管理者は、まず既存Bicepテンプレートのモジュール参照を棚卸しし、バージョン固定、enableTelemetry、アクセスルール種別、TransitionからEnforcedへの移行手順を確認してください。開発者は、親モジュールで一括管理するのか、子モジュールでプロファイル・アクセスルールを分離管理するのかを決め、検証環境でwhat-ifと診断ログ確認を行ってから本番展開するのが安全です。

この記事を書いた人

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

コメント

コメントする

目次