- Entra Admin Center → App registrations → New registration
- Name:
e8cr-squad-bot - Supported account types: Single tenant
- Create
- Application (client) ID copied
- Directory (tenant) ID copied
- Certificates & secrets → New client secret
- Expiry set (6 or 12 months)
- Secret value copied to password manager
- Microsoft Graph → Application permissions:
- Directory.Read.All
- AuditLog.Read.All
- DeviceManagementManagedDevices.Read.All
- DeviceManagementConfiguration.Read.All
- DeviceManagementConfiguration.ReadWrite.All (optional write mode)
- Policy.Read.All
- RoleManagement.Read.Directory
- UserAuthenticationMethod.Read.All
- User.Read.All
- SecurityAlert.Read.All
- SecurityIncident.Read.All (if using incidents endpoint)
- API permissions → Grant admin consent
- Verify status = Granted for all required permissions
- Recovery Services Vault → Access Control (IAM)
- Assign role: Backup Reader (minimum)
- Assign role: Backup Contributor (if action APIs needed)
- Assign role to service principal
e8cr-squad-bot
-
AZURE_TENANT_IDset -
AZURE_CLIENT_IDset -
AZURE_CLIENT_SECRETset - Optional backup vars set (VEEAM_* / AZURE_SUBSCRIPTION_ID etc)
-
python3 skills/e8cr-vmpm/scripts/graph_auth.pyreturns token success - One script per bot executes without auth/permission errors