Microsoft Azure Filtering

This document covers the various ways fine-grained just-in-time access for Microsoft Azure can be configured by using P0's Routing Rules.

Filtering on subscription

Requests can be filtered at the level of an entire subscription by adding a filter based on the subscription's id

Rule structure:

resource:
  type: integration
  service: azure
  filters:
    subscription: {
      effect: keep|remove|removeAll
      key: <tag key>
      pattern: <regex pattern>
    }

Deny all requests to the subscription with id <subscription id>

resource:
  type: integration
  service: azure
  accessType: any
  filters:
    subscription: {effect: keep, key: id, pattern: <subscription id>}
approval:
  - type: deny

Filtering on resource

Requests can be filtered by details pertaining to the resource being requested. There are two available keys for resource filters, name and id .

Rule structure:

resource:
  type: integration
  service: azure
  filters:
    resource: {
      effect: keep|remove|removeAll
      key: name
      pattern: <regex pattern>
    }

Examples:

Auto-approve any requests for the resource with an id of /subscriptions/<subscription number>/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_eastus

resource:
  type: integration
  service: azure
  filters:
    resource: {
      effect: keep, 
      key: id, 
      pattern: /subscriptions/<subscription number>/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatchers/NetworkWatcher_eastus
    }    
  approval:
    - type: persistent
    

Auto-approve on-call requests for any resource except for the one named "sensitive-virtual-network"

resource:
  type: integration
  service: azure
  accessType: any
  filters:
    resource: {effect: remove, key: name, pattern: sensitive-virtual-network}
approval:
  - type: auto
    integration: pagerduty
    options: {}

Filtering on roles

Requests can be filtered by details pertaining to the role being requested. There are two available keys for resource filters, name and id .

Rule structure:

resource:
  type: integration
  service: azure
  filters:
    role: {
      effect: keep|remove|removeAll
      key: role
      pattern: <regex pattern>
    }

Examples:

Allow approvals of requests to the role named "P0 Developer Role" to be approved by users with the DevOpsManager profile property in Okta

resource:
  type: integration
  service: azure
  accessType: any
  filters:
    role: {effect: keep, key: name, pattern: P0 Developer Role}
approval:
  - type: requestor-profile
    directory: okta
    options: {}
    profileProperty: DevOpsManager

Allow requests to the role with id of /subscriptions/<subscription id>/providers/Microsoft.Authorization/roleDefinitions/5bc02df6-6cd5-43fe-ad3d-4c93cf56cc16 to be approved by users defined in P0

resource:
  type: integration
  service: azure
  accessType: any
  filters:
    role: {
      effect: keep, 
      key: id, 
      pattern: /subscriptions/<subscription id>/providers/Microsoft.Authorization/roleDefinitions/5bc02df6-6cd5-43fe-ad3d-4c93cf56cc16
    }
approval:
  - type: p0
    options: {}

Last updated