Azure DevOps Public Project Posture Audit
Reports the public projects in an Azure DevOps organization that fail its security policy, with each failing check.
What this agent does
This read-only agent audits every public project in an Azure DevOps organization against the organization's security policy. It checks each project for an approved public listing, project-scoped pipeline authorization, and guest user access. It checks each repository in the project for a reviewer policy on its default branch, a README, and a license. It then reports each project that fails, with the checks it fails.
The challenge
A public project exposes its repositories, work items, pipelines, and build logs to everyone on the internet. Projects are made public by mistake, and protections change after a project is created. A default branch loses its reviewer policy, a guest user keeps Contribute, or a pipeline keeps the organization-wide job authorization scope. Nobody checks every public project against the policy. Teams learn about these gaps only when someone finds one by chance.
The solution
The agent checks every public project against the same short policy on each run. It reports a check it cannot complete as inconclusive, never as a violation. It refuses to report when the project list is incomplete, so it never presents a partial scan as the whole organization. Provides a unified list of noncompliant public projects and the checks to fix.
Workflow
- 01
List projects
Read the organization's public projects policy, list every public project and its repositories, and stop when the list is incomplete.
- 02
Check each project
Check the approved public listing, the pipeline job authorization scope settings, and guest user access.
- 03
Check each repository
Check the default branch for a reviewer policy, and the root for a README and a license.
- 04
Report
Report each noncompliant project with its failing checks, and track the noncompliant and total counts.
Agent template
# Azure DevOps Public Project Posture Audit
## Measurable outcomes
Every public project in the organization that fails the security policy is in the report, with each check it fails. Track the noncompliant count on every run. The count falls as owners fix their projects.
## Procedure
For a given organization, read whether the organization policy allows public projects. Report the policy as a finding when it is on and the allowlist is empty. List every public project and every repository in it. Stop and report the failure when the list is shorter than expected. Never present a partial list as the whole organization. Check each project against three rules. The project is on an allowlist of projects approved to be public. The effective pipeline settings limit the job authorization scope to the current project for both release and non-release pipelines, and protect access to repositories in YAML pipelines. No account with the Entra user type Guest is in the project's Contributors group or holds Contribute on any of its repositories. Check each repository in the project against three rules. The default branch has a minimum reviewer policy that requires at least one reviewer and does not let requestors approve their own changes. A README exists at the root. A license exists at the root. Read the effective branch policies, including the ones set across every repository in the project. A project that fails any project rule or any repository rule is noncompliant. When a setting cannot be read, report the check as inconclusive and a token scope problem, not a violation. In an organization not connected to Entra ID, report the guest check as inconclusive. I maintain the allowlist, and I add a project only after I review its public exposure.
## Requirements
It needs Azure DevOps read access to the organization's policies, projects, repositories, branch policies, pipeline settings, and project members, through a personal access token with the Project and Team (Read), Code (Read), Build (Read), and Graph (Read) scopes, and nothing more. It never changes a project, a repository, a policy, or a member. Related templates
-
Aikido Posture Report
Delivers a weekly report on Aikido coverage, what changed, and anything in the workspace that needs attention, from failing scans to plan limits.
Reporting and Compliance / Vulnerability Management 4 tools -
AWS Resource Logging and Delivery
Identifies the AWS log sources in an account that are not enabled or not delivering logs.
Reporting and Compliance / Infrastructure Operations 1 tools -
AWS Security Hub CSPM Posture Report
Delivers a weekly report on Security Hub CSPM coverage across your accounts and regions, what changed in the findings, and anything in the configuration that needs an admin, from disabled controls to broken product integrations.
Reporting and Compliance / Vulnerability Management 2 tools -
Azure DevOps Advanced Security Posture Report
Delivers a weekly report on Advanced Security coverage across an Azure DevOps organization, what changed, and anything that needs attention.
Reporting and Compliance / Vulnerability Management 1 tools