Skip to content

[AppConfig] az appconfig create\update\network-security-perimeter-configuration: Add NSP support#33301

Open
ChristineWanjau wants to merge 10 commits intoAzure:devfrom
ChristineWanjau:cwanjau/nspSupport
Open

[AppConfig] az appconfig create\update\network-security-perimeter-configuration: Add NSP support#33301
ChristineWanjau wants to merge 10 commits intoAzure:devfrom
ChristineWanjau:cwanjau/nspSupport

Conversation

@ChristineWanjau
Copy link
Copy Markdown
Contributor

@ChristineWanjau ChristineWanjau commented Apr 30, 2026

Related command

az appconfig create\update
az appconfig network-security-perimeter-configuration

Description

This PR introduces Network Security Perimeter (NSP) support for Azure App Configuration stores in the Azure CLI, along with a new --public-network-access argument that supersedes --enable-public-network to enable the new SecuredByPerimeter access mode.

New command group: az appconfig network-security-perimeter-configuration

  • list — List all NSP configurations associated with an App Configuration store.
  • show — Show a specific NSP configuration by name.
  • reconcile — Force a refresh of a specific NSP configuration.

az appconfig create / az appconfig update
Added --public-network-access with allowed values Enabled, Disabled, SecuredByPerimeter.
Deprecated --enable-public-network / -e (redirects to --public-network-access). The flag remains functional for backward compatibility

Deprecation message:
image

Testing Guide

History Notes

[AppConfig] az appconfig create\update: Add NSP support
[AppConfig] az appconfig network-security-perimeter-configuration: Add NSP support

This checklist is used to make sure that common guidelines for a pull request are followed.

@azure-client-tools-bot-prd
Copy link
Copy Markdown

azure-client-tools-bot-prd Bot commented Apr 30, 2026

️✔️AzureCLI-FullTest
️✔️acr
️✔️latest
️✔️3.12
️✔️3.13
️✔️acs
️✔️latest
️✔️3.12
️✔️3.13
️✔️advisor
️✔️latest
️✔️3.12
️✔️3.13
️✔️ams
️✔️latest
️✔️3.12
️✔️3.13
️✔️apim
️✔️latest
️✔️3.12
️✔️3.13
️✔️appconfig
️✔️latest
️✔️3.12
️✔️3.13
️✔️appservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️aro
️✔️latest
️✔️3.12
️✔️3.13
️✔️backup
️✔️latest
️✔️3.12
️✔️3.13
️✔️batch
️✔️latest
️✔️3.12
️✔️3.13
️✔️batchai
️✔️latest
️✔️3.12
️✔️3.13
️✔️billing
️✔️latest
️✔️3.12
️✔️3.13
️✔️botservice
️✔️latest
️✔️3.12
️✔️3.13
️✔️cdn
️✔️latest
️✔️3.12
️✔️3.13
️✔️cloud
️✔️latest
️✔️3.12
️✔️3.13
️✔️cognitiveservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.13
️✔️computefleet
️✔️latest
️✔️3.12
️✔️3.13
️✔️config
️✔️latest
️✔️3.12
️✔️3.13
️✔️configure
️✔️latest
️✔️3.12
️✔️3.13
️✔️consumption
️✔️latest
️✔️3.12
️✔️3.13
️✔️container
️✔️latest
️✔️3.12
️✔️3.13
️✔️containerapp
️✔️latest
️✔️3.12
️✔️3.13
️✔️core
️✔️latest
️✔️3.12
️✔️3.13
️✔️cosmosdb
️✔️latest
️✔️3.12
️✔️3.13
️✔️databoxedge
️✔️latest
️✔️3.12
️✔️3.13
️✔️dls
️✔️latest
️✔️3.12
️✔️3.13
️✔️dms
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventgrid
️✔️latest
️✔️3.12
️✔️3.13
️✔️eventhubs
️✔️latest
️✔️3.12
️✔️3.13
️✔️feedback
️✔️latest
️✔️3.12
️✔️3.13
️✔️find
️✔️latest
️✔️3.12
️✔️3.13
️✔️hdinsight
️✔️latest
️✔️3.12
️✔️3.13
️✔️identity
️✔️latest
️✔️3.12
️✔️3.13
️✔️iot
️✔️latest
️✔️3.12
️✔️3.13
️✔️keyvault
️✔️latest
️✔️3.12
️✔️3.13
️✔️lab
️✔️latest
️✔️3.12
️✔️3.13
️✔️managedservices
️✔️latest
️✔️3.12
️✔️3.13
️✔️maps
️✔️latest
️✔️3.12
️✔️3.13
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.13
️✔️monitor
️✔️latest
️✔️3.12
️✔️3.13
️✔️mysql
️✔️latest
️✔️3.12
️✔️3.13
️✔️netappfiles
️✔️latest
️✔️3.12
️✔️3.13
️✔️network
️✔️latest
️✔️3.12
️✔️3.13
️✔️policyinsights
️✔️latest
️✔️3.12
️✔️3.13
️✔️postgresql
️✔️latest
️✔️3.12
️✔️3.13
️✔️privatedns
️✔️latest
️✔️3.12
️✔️3.13
️✔️profile
️✔️latest
️✔️3.12
️✔️3.13
️✔️rdbms
️✔️latest
️✔️3.12
️✔️3.13
️✔️redis
️✔️latest
️✔️3.12
️✔️3.13
️✔️relay
️✔️latest
️✔️3.12
️✔️3.13
️✔️resource
️✔️latest
️✔️3.12
️✔️3.13
️✔️role
️✔️latest
️✔️3.12
️✔️3.13
️✔️search
️✔️latest
️✔️3.12
️✔️3.13
️✔️security
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicebus
️✔️latest
️✔️3.12
️✔️3.13
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.13
️✔️servicefabric
️✔️latest
️✔️3.12
️✔️3.13
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.13
️✔️sql
️✔️latest
️✔️3.12
️✔️3.13
️✔️sqlvm
️✔️latest
️✔️3.12
️✔️3.13
️✔️storage
️✔️latest
️✔️3.12
️✔️3.13
️✔️synapse
️✔️latest
️✔️3.12
️✔️3.13
️✔️telemetry
️✔️latest
️✔️3.12
️✔️3.13
️✔️util
️✔️latest
️✔️3.12
️✔️3.13
️✔️vm
️✔️latest
️✔️3.12
️✔️3.13

@azure-client-tools-bot-prd
Copy link
Copy Markdown

azure-client-tools-bot-prd Bot commented Apr 30, 2026

⚠️AzureCLI-BreakingChangeTest
⚠️appconfig
rule cmd_name rule_message suggest_message
⚠️ 1006 - ParaAdd appconfig create cmd appconfig create added parameter public_network_access
⚠️ 1008 - ParaPropAdd appconfig create cmd appconfig create update parameter enable_public_network: added property deprecate_info_redirect=--public-network-access
⚠️ 1008 - ParaPropAdd appconfig create cmd appconfig create update parameter enable_public_network: added property deprecate_info_target=enable_public_network
⚠️ 1011 - SubgroupAdd appconfig network-security-perimeter-configuration sub group appconfig network-security-perimeter-configuration added
⚠️ 1006 - ParaAdd appconfig update cmd appconfig update added parameter public_network_access
⚠️ 1008 - ParaPropAdd appconfig update cmd appconfig update update parameter enable_public_network: added property deprecate_info_redirect=--public-network-access
⚠️ 1008 - ParaPropAdd appconfig update cmd appconfig update update parameter enable_public_network: added property deprecate_info_target=enable_public_network

@yonzhan
Copy link
Copy Markdown
Collaborator

yonzhan commented Apr 30, 2026

Thank you for your contribution! We will review the pull request and get back to you soon.

@github-actions
Copy link
Copy Markdown

The git hooks are available for azure-cli and azure-cli-extensions repos. They could help you run required checks before creating the PR.

Please sync the latest code with latest dev branch (for azure-cli) or main branch (for azure-cli-extensions).
After that please run the following commands to enable git hooks:

pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>

@yonzhan yonzhan assigned yanzhudd and unassigned zhoxing-ms Apr 30, 2026
@ChristineWanjau ChristineWanjau marked this pull request as ready for review May 4, 2026 13:18
Copilot AI review requested due to automatic review settings May 4, 2026 13:18
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

This PR adds Network Security Perimeter (NSP) support to az appconfig by introducing a new network-security-perimeter-configuration command group and adding a new --public-network-access argument (with SecuredByPerimeter) that supersedes the deprecated --enable-public-network flag.

Changes:

  • Added az appconfig network-security-perimeter-configuration {list,show,reconcile} commands and wiring (client factory, command registration, help).
  • Added --public-network-access and validation to prevent using it with deprecated --enable-public-network; updated create/update logic accordingly.
  • Updated the management SDK dependency and added/updated scenario tests + recordings.

Reviewed changes

Copilot reviewed 17 out of 45 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/azure-cli/setup.py Bumps azure-mgmt-appconfiguration to a newer beta needed for NSP support.
src/azure-cli/requirements.py3.windows.txt Keeps Windows pinned requirements in sync with the updated App Configuration management SDK.
src/azure-cli/requirements.py3.Linux.txt Keeps Linux pinned requirements in sync with the updated App Configuration management SDK.
src/azure-cli/requirements.py3.Darwin.txt Keeps macOS pinned requirements in sync with the updated App Configuration management SDK.
src/azure-cli/azure/cli/command_modules/appconfig/network_security_perimeter.py Implements list/show/reconcile handlers for NSP configurations.
src/azure-cli/azure/cli/command_modules/appconfig/_client_factory.py Adds a client factory for NSP configuration operations.
src/azure-cli/azure/cli/command_modules/appconfig/commands.py Registers the new NSP configuration command group.
src/azure-cli/azure/cli/command_modules/appconfig/_params.py Adds --public-network-access, deprecates --enable-public-network, and defines args for new NSP commands.
src/azure-cli/azure/cli/command_modules/appconfig/_validators.py Adds mutual-exclusion validation for public network args.
src/azure-cli/azure/cli/command_modules/appconfig/custom.py Updates create/update to use the new public_network_access input (while keeping backwards compat).
src/azure-cli/azure/cli/command_modules/appconfig/_help.py Adds help entries for the new NSP configuration command group.
src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/test_appconfig_nsp_commands.py Adds live scenario coverage for NSP configuration list/show/reconcile flows.
src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/test_appconfig_mgmt_commands.py Adds scenario coverage for --public-network-access and mutual-exclusion behavior.
src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/test_appconfig_kv_import_export_commands.py Adjusts AKS test inputs (name length / node RG) for reliability.
src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_public_network_access_new_param.yaml Adds recordings for the new public network access parameter scenario test.
src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_appinsights.yaml Updates existing recordings due to API version/CLI changes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/azure-cli/azure/cli/command_modules/appconfig/_help.py Outdated
@ChristineWanjau ChristineWanjau changed the title [AppConfig]az appconfig create\network-security-perimeter-configuration : Add NSP support [AppConfig]az appconfig create\network-security-perimeter-configuration : Add NSP support May 5, 2026
@ChristineWanjau ChristineWanjau changed the title [AppConfig]az appconfig create\network-security-perimeter-configuration : Add NSP support [AppConfig]az appconfig create\network-security-perimeter-configuration: Added NSP support May 5, 2026
ChristineWanjau and others added 2 commits May 5, 2026 10:11
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@ChristineWanjau ChristineWanjau changed the title [AppConfig]az appconfig create\network-security-perimeter-configuration: Added NSP support [AppConfig] az appconfig create\network-security-perimeter-configuration : Add NSP support May 5, 2026
@ChristineWanjau ChristineWanjau changed the title [AppConfig] az appconfig create\network-security-perimeter-configuration : Add NSP support [AppConfig] az appconfig create\network-security-perimeter-configuration: Add NSP support May 5, 2026
@ChristineWanjau ChristineWanjau changed the title [AppConfig] az appconfig create\network-security-perimeter-configuration: Add NSP support [AppConfig] az appconfig create\update\network-security-perimeter-configuration: Add NSP support May 5, 2026
)
except ResourceNotFoundError:
raise ResourceNotFoundError(
"The network security perimeter configuration '{}' for App Configuration '{}' not found.".format(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"The network security perimeter configuration '{}' for App Configuration '{}' not found.".format(
"The network security perimeter configuration '{}' for App Configuration '{}' was not found.".format(

Copilot suggested this, seems to have been missed.

@jimmyca15
Copy link
Copy Markdown
Member

jimmyca15 commented May 8, 2026

In your screenshot the deprecation warning for --enable-public-network is shown even though the invocation doesn't include that parameter. Is that the intended behavior?

Edit: Oh wait, -e is shorthand for this property. Got it.

config_store_name=store_name,
network_security_perimeter_configuration_name=name
)
except ResourceNotFoundError:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I notice that when we do a show for a configuration store, we let this error go unhandled (link).

So is error handling missing there, or is this unnecessary?

@@ -56,6 +56,11 @@ def load_command_table(self, _):
table_transformer=configstore_snapshot_output_format
)

configstore_nsp_util = CliCommandType(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Every other command seems to have table_transformer specified. How come nsp doesn't need it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants