AzureDevOps project high builtIn

Description

Do not allow environments to inherit elavated permissions from project level user permissions. The groups (Contributors, Readers, Project Collection Valid Users, Project Valid Users) should not have elavated permissions (Admin/User). User permissions for certain groups must be restricted to read-only access. Learn more: https://learn.microsoft.com/en-us/azure/devops/organizations/security/security-best-practices#scoped-permissions https://learn.microsoft.com/en-us/azure/devops/organizations/security/permissions https://learn.microsoft.com/en-us/azure/devops/organizations/security/permissions-lookup-guide https://learn.microsoft.com/en-us/azure/devops/pipelines/security/resources?#user-permissions https://learn.microsoft.com/en-us/azure/devops/pipelines/policies/permissions#set-environment-permissions

Recommendation

1. Navigate to Project -> Pipelines -> Environments 
2. On 'Environments' page, click on the three dots button (top right). 
3. Click on Security. 
4. Under 'User permissions' section, review security roles and ensure common groups have only read-only access.

Policy Rule

{
  "target": "ADOSecurityRoleAssignment",
  "if": {
    "allOf": [
      {
        "resource": "ADOSecurityRoleAssignment",
        "property": "ScopeResource.ResourceType",
        "operator": "equals",
        "value": "Project"
      },
      {
        "resource": "ADOSecurityRoleAssignment",
        "property": "ScopeResource.ScopeId",
        "operator": "equals",
        "value": "distributedtask.globalenvironmentreferencerole"
      },
      {
        "resource": "ADOSecurityRoleAssignment",
        "property": "Identity.DisplayName",
        "operator": "contains",
        "value": "$(POLICY_VAR_PROJECT_SECURITY_ROLES_COMMON_GROUPS)"
      },
      {
        "anyOf": [
          {
            "resource": "ADOSecurityRoleAssignment",
            "property": "Role.Name",
            "operator": "equals",
            "value": "Reader"
          },
          {
            "resource": "ADOSecurityRoleAssignment",
            "property": "Role.Name",
            "operator": "equals",
            "value": "Creator"
          }
        ]
      }
    ]
  },
  "then": {
    "effect": "Audit"
  }
}