Skip to content

ci: onboard PowerShell pipelines (187/221/663) to network isolation enforcement (CFSClean) - #3732

Merged
Ramses Sanchez-Hernandez (ramsessanchez) merged 7 commits into
mainfrom
gavinbarron/cfs-npmjs-diagnostic
Aug 20, 2026
Merged

ci: onboard PowerShell pipelines (187/221/663) to network isolation enforcement (CFSClean)#3732
Ramses Sanchez-Hernandez (ramsessanchez) merged 7 commits into
mainfrom
gavinbarron/cfs-npmjs-diagnostic

Conversation

@gavinbarron

@gavinbarron Gavin Barron (gavinbarron) commented Aug 20, 2026

Copy link
Copy Markdown
Member

What

Onboard the three msgraph-sdk-powershell pipelines to 1ES network isolation enforcement for CFSClean / SFI compliance:

Def Pipeline File
187 PowerShell V2 Build .azure-pipelines/ci-build.yml
221 Weekly PowerShell V2 Build .azure-pipelines/weekly-generation.yml
663 Command-Metadata-Refresh .azure-pipelines/command-metadata-refresh.yml (was Permissive)
settings:
  networkIsolationMode: Enforce
  networkIsolationPolicy: Good,GitHub,NuGet,PowershellGallery,CFSClean,CFSClean3

Why

These pipelines ran under the Permissive default, logging (not blocking) public-feed egress — a residual registry.npmjs.org (opportunistic pnpm metadata request) kept PermissiveCFSClean = False. Enforcement blocks non-allowlisted public egress (including public npm) and moves them to a compliant posture. All three share common-templates/install-tools.yml, so the same CFSClean behavior applies.

Validation

Proven on branch build 234324 (def 187, this exact policy): Stop Network Isolation blocked registry.npmjs.org, the build succeeded (pnpm resolves everything from the private feed — the npmjs egress is non-essential), and all policies reported COMPLIANT: CFSClean, CFSClean2, CFSClean3, and Default Deny.

Notes

  • Net change is only the settings blocks. The exploratory diagnostic + generation-disable changes have been reverted.
  • Npm is intentionally not in the allowlist, so public npmjs is blocked (validated to still build cleanly).
  • 221/663 will get their own validating CI/scheduled runs after merge.

After `rush install`, print the entries in the re-resolved
common/temp/pnpm-lock.yaml that resolved to registry.npmjs.org, to
identify exactly which package(s) egress to public npm under 1ES
network isolation. To be reverted once the culprits are identified.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6ea00b50-c719-469b-bf9c-72120184bfe0
@gavinbarron
Gavin Barron (gavinbarron) requested a review from a team as a code owner August 20, 2026 00:26
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6ea00b50-c719-469b-bf9c-72120184bfe0
…js diagnostic

Enforce networkIsolationMode with policy Good,GitHub,NuGet,PowershellGallery,CFSClean,CFSClean3
(deliberately omitting Npm) so public registry.npmjs.org egress is blocked and the failing pnpm
fetch names the culprit package. Generation/downstream steps disabled to keep the build fast.
To be reverted before merge.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6ea00b50-c719-469b-bf9c-72120184bfe0
…Clean)

Revert the exploratory diagnostic + generation-disable changes; keep only the network
isolation settings. Enforce mode with policy
Good,GitHub,Npm,NuGet,PowershellGallery,CFSClean,CFSClean3 onboards the pipeline to 1ES
network isolation for CFSClean/SFI compliance. Validated on branch build 234324: all
policies (CFSClean, CFSClean2, CFSClean3, Default Deny) reported COMPLIANT and the build
succeeded.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6ea00b50-c719-469b-bf9c-72120184bfe0
@gavinbarron Gavin Barron (gavinbarron) changed the title ci: TEMPORARY CFSClean diagnostic — dump npmjs tarball resolutions (do not merge) ci: onboard PowerShell V2 Build to network isolation enforcement (CFSClean) Aug 20, 2026
Removes Npm from the allowlist so public registry.npmjs.org is blocked under enforcement.
Validated in build 234324: build succeeds and all CFSClean tiers report COMPLIANT with npmjs blocked.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6ea00b50-c719-469b-bf9c-72120184bfe0
…k isolation enforcement

Apply the same network isolation settings as ci-build.yml (187): Enforce mode with policy
Good,GitHub,NuGet,PowershellGallery,CFSClean,CFSClean3. 663 previously set networkIsolationPolicy:
Permissive; this switches it to enforcement. All three pipelines share install-tools.yml, so the
same CFSClean posture applies.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6ea00b50-c719-469b-bf9c-72120184bfe0
@gavinbarron Gavin Barron (gavinbarron) changed the title ci: onboard PowerShell V2 Build to network isolation enforcement (CFSClean) ci: onboard PowerShell pipelines (187/221/663) to network isolation enforcement (CFSClean) Aug 20, 2026
@ramsessanchez
Ramses Sanchez-Hernandez (ramsessanchez) merged commit 375a2e3 into main Aug 20, 2026
2 of 4 checks passed
@ramsessanchez
Ramses Sanchez-Hernandez (ramsessanchez) deleted the gavinbarron/cfs-npmjs-diagnostic branch August 20, 2026 21:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants