Skip to content

Ops-Automation Least Privilege Report

Audit date: April 15, 2026 Scope: ops-automation pipeline — all Azure AD app registrations, API keys, GitHub tokens, Telegram bot Stories: LPRIV-010 through LPRIV-016

See Detailed Audit for per-story evidence.


Identities in Scope

IdentityTypeUsed By
kobe-security-auditAzure AD app registrationMaester, pim-audit, HIPAA audits, dashboards
Cortex XDR API keyAPI key paircortex-weekly-report.yml + cortex_agent.py
SES via github-deploy-mainAWS IAM roleAll email-reporting workflows
cirius-kobe-botGitHub user (member)Automated PRs and branch management
Telegram bot tokenBot API tokenSecOps platform notifications

Current State

kobe-security-audit — M365 Security Audit Identity

This app registration is shared across all M365 security audit workflows. It uses GitHub Actions OIDC federated credentials (no stored secrets in GitHub Secrets).

Consented permissions: 27 total — 24 Microsoft Graph (mostly read-only), 1 Exchange Online (Exchange.ManageAsApp), 2 Windows Defender ATP (read-only).

StatusPermissions
✅ Required24 read-only Graph permissions (Maester, PIM, Intune, Defender coverage)
✅ RequiredMachine.Read.All, Vulnerability.Read.All (Windows Defender ATP)
✅ JustifiedExchange.ManageAsApp (required for Maester Exchange connectivity; read-only usage)
✅ RemovedMail.ReadWrite — removed 2026-04-15 (LPRIV-018); email delivery uses SES
✅ RemovedMail.Send — removed 2026-04-15 (LPRIV-018); confirmed unused

Cortex XDR API Key

Used for read-only operations: endpoint inventory, incidents, vulnerabilities, alerts. Key is stored in Key Vault cirius-openai-kv-prod. Role assigned in Cortex XDR console is unverified — requires console access to confirm.

SES Sending Identity

Email delivery uses AWS SES via the github-deploy-main management account role (AdministratorAccess — tracked as LPRIV-009 finding). No separate SES-scoped role exists. cirius-acs-smtp (Azure AD) is used for ACS SMTP relay separately; it has zero Graph permissions.

cirius-kobe-bot GitHub Token

Org member (not owner). Write access to repos for branch and commit operations. Branch protection prevents self-merge. No admin access.

Telegram Bot Token

No granular API scope isolation exists in the Telegram Bot API. Architectural control: bot only sends notifications (sendMessage, editMessageText, sendReaction) — no admin, delete, or write operations. Access limited to channels where bot is explicitly added.


Delta — What Needs to Change

ChangePriorityStoryStatus
Remove Mail.ReadWrite from kobe-security-auditHIGHLPRIV-018✅ Done 2026-04-15
Remove Mail.Send from kobe-security-auditHIGHLPRIV-018✅ Done 2026-04-15
Verify Cortex XDR API key role = Viewer (read-only)MEDIUMLPRIV-013Pending Rory console access
No changes needed for remaining identities

SOC2 / HIPAA Mapping

ControlRequirementFinding
HIPAA §164.312(a)(1) — Access controlLeast privilege for all service identitiesMail.ReadWrite gap identified — remediation tracked
SOC2 CC6.3 — Least privilegeAccess limited to what is necessarykobe-security-audit: 24/27 permissions justified; 1 flagged
SOC2 CC6.1 — Logical accessAccess control policy enforcedGitHub token and Telegram bot are correctly scoped

Document History

DateChangeAuthor
April 2026Initial report — LPRIV-010 through LPRIV-016Kobe

Internal use only — Cirius Group