Skip to content

LPRIV Evidence Mapping — SOC2 CC6.3 and HIPAA 164.312(a)(1)

Purpose: Maps the least privilege audit evidence to SOC2 Type II and HIPAA requirements. Scope: LPRIV-001 through LPRIV-018 (April 2026 audit cycle)


SOC2 Criteria Mapping

CC6.3 — The entity implements logical access security measures to protect against threats from sources outside its system boundaries

LPRIV StoryEvidence DocumentControl Satisfied
LPRIV-001compliance/lpriv-secops-audit.md §LPRIV-001App registrations have documented, minimal Graph permissions
LPRIV-002compliance/lpriv-secops-audit.md §LPRIV-002Managed identity RBAC scoped to specific resources
LPRIV-003compliance/lpriv-secops-audit.md §LPRIV-003Database access restricted to application-level role (not admin)
LPRIV-004compliance/lpriv-secops-audit.md §LPRIV-004Key Vault access is read-only (getSecret, readMetadata only)
LPRIV-005compliance/lpriv-secops-audit.md §LPRIV-005Table Storage: data plane only, dedicated account, not admin
LPRIV-006security/lpriv-secops.mdSecOps platform least privilege report — all identities documented
LPRIV-008compliance/lpriv-cicd-audit.md §LPRIV-008CI/CD Azure RBAC: Contributor+UAA is minimum for Terraform; documented tradeoff
LPRIV-009compliance/lpriv-cicd-audit.md §LPRIV-009CI/CD AWS IAM: AdministratorAccess flagged; logging account scoped (target pattern)
LPRIV-010–012compliance/lpriv-ops-automation-audit.md §LPRIV-010-012Ops-automation app registration: 25 permissions; Mail.ReadWrite removed
LPRIV-015compliance/lpriv-ops-automation-audit.md §LPRIV-015GitHub bot token: member role only, branch protection prevents self-merge
LPRIV-018compliance/lpriv-ops-automation-audit.md §RemediatedMail.ReadWrite and Mail.Send removed from kobe-security-audit

CC6.1 — Logical and physical access to data is restricted to authorized and necessary individuals

LPRIV StoryEvidence DocumentControl Satisfied
LPRIV-001compliance/lpriv-secops-audit.md §LPRIV-001SecOps app registration Graph permissions: User.Read, GroupMember.Read.All, User.Read.All (no write)
LPRIV-002compliance/lpriv-secops-audit.md §LPRIV-002Managed identity: no Contributor or Owner, resource-scoped RBAC only
LPRIV-003compliance/lpriv-secops-audit.md §LPRIV-003PostgreSQL: secops_app role has DML-only access; secopsadmin connection replaced
LPRIV-007compliance/lpriv-cicd-audit.md + azure-infra PR #649KV Admin at sub scope being replaced with KV Crypto Officer + Secrets Officer at specific KVs

CC6.2 — Prior to issuing system credentials and granting system access, the entity registers and authorizes new internal and external users

StoryEvidenceControl
LPRIV-015compliance/lpriv-ops-automation-audit.md §LPRIV-015cirius-kobe-bot is a registered org member with documented access level
All LPRIVsecurity/lpriv-baseline.mdBaseline document establishes approved identities and their expected access levels

HIPAA Mapping

§164.312(a)(1) — Access Control

Implement technical policies and procedures for electronic information systems that maintain electronic protected health information to allow access only to those persons or software programs that have been granted access rights.

LPRIV StoryEvidenceCompliance Action
LPRIV-001compliance/lpriv-secops-audit.md §LPRIV-001SecOps app registration: only 3 Graph permissions (User.Read, GroupMember.Read.All, User.Read.All), all required, zero orphaned
LPRIV-002compliance/lpriv-secops-audit.md §LPRIV-002Managed identity for SecOps Container App: AcrPull + Key Vault Secrets User only, no subscription-level roles
LPRIV-003compliance/lpriv-secops-audit.md §LPRIV-003 + KV secops-db-url updated 2026-04-15Application connects as secops_app (DML-only) not secopsadmin (superuser). Evidence: KV secret updated timestamp
LPRIV-004compliance/lpriv-secops-audit.md §LPRIV-004Key Vault Secrets User: getSecret + readMetadata only. No key/cert/write access
LPRIV-007azure-infra PR #649 (pending merge)KV Administrator → Crypto Officer + Secrets Officer, scoped to specific Key Vaults
LPRIV-010–012compliance/lpriv-ops-automation-audit.md §LPRIV-010-012kobe-security-audit: 25 read-only permissions; Mail.ReadWrite removed
LPRIV-018compliance/lpriv-ops-automation-audit.md §RemediatedMail.ReadWrite removed from audit app registration — prevents unauthorized mailbox access

§164.312(a)(2)(i) — Unique User Identification

StoryEvidenceCompliance Action
LPRIV-001–018All LPRIV audit documentsEach service identity has a unique, documented App ID or principal ID. No shared credentials between services
LPRIV-003secops.tf ignore_changes = [value] + KV secops-db-urlsecops_app is a dedicated role — not shared with any other application

§164.312(b) — Audit Controls

StoryEvidenceCompliance Action
LPRIV-019ops-automation PR #277Automated weekly check: pim-audit.yml LPRIV baseline job fires HIGH finding to SecOps on any permission deviation
All LPRIVcompliance/annual-review-checklist.mdQuarterly manual LPRIV review documented and scheduled

Audit Evidence Artifacts

ArtifactLocationDescription
SecOps app registration Graph permissionscompliance/lpriv-secops-audit.mdLPRIV-001: 3 permissions, all documented
Managed identity RBAC assignmentscompliance/lpriv-secops-audit.mdLPRIV-002: 2 roles, resource-scoped
PostgreSQL role grantscompliance/lpriv-secops-audit.mdLPRIV-003: secops_app DML-only; KV updated 2026-04-15T15:31:18Z
Key Vault access scopecompliance/lpriv-secops-audit.mdLPRIV-004: Key Vault Secrets User data actions only
Table Storage accesscompliance/lpriv-secops-audit.mdLPRIV-005: Storage Table Data Contributor on dedicated account
SecOps least privilege reportsecurity/lpriv-secops.mdLPRIV-006: Full platform report with SOC2/HIPAA mapping
KV Administrator scope narrowingcompliance/lpriv-cicd-audit.md + azure-infra PR #649LPRIV-007: Post-PR: per-KV Officer roles replace sub-level KV Admin
CI/CD Azure RBAC auditcompliance/lpriv-cicd-audit.mdLPRIV-008: 19 assignments documented; Contributor+UAA tradeoff justified
CI/CD AWS IAM auditcompliance/lpriv-cicd-audit.mdLPRIV-009: AdministratorAccess flagged; logging account scoped pattern documented
kobe-security-audit permissionscompliance/lpriv-ops-automation-audit.mdLPRIV-010-012: 25 permissions (post-remediation); Mail.ReadWrite removed
Mail.ReadWrite removal proofGraph API DELETE 2026-04-15; ops-automation PR #277LPRIV-018: Removed from SP a373da7a, count verified 27→25
Automated LPRIV checkops-automation PR #277 (pim-audit.yml)LPRIV-019: Weekly automated baseline check in CI
Least privilege baselinesecurity/lpriv-baseline.mdLPRIV-020: Expected state for all identities
Quarterly review checklistcompliance/annual-review-checklist.mdLPRIV-021: Quarterly LPRIV review scheduled

Gaps and Open Items

GapRiskStoryStatus
KV Administrator at sub scope (post-LPRIV-007 pending merge)MEDIUM — functional Owner in 3 subs until PR #649 merged and old roles removedLPRIV-007IN_PROGRESS
Cortex XDR API key role unverifiedLOW — operations are read-only but role not confirmedLPRIV-013Pending Rory console access
AWS github-deploy-main AdministratorAccessHIGH — known tradeoff, adoption of logging account pattern is long-term goalLPRIV-009BACKLOG
id-agents-prod Reader/Security Reader at logging sub scopeLOW — read-only, investigation pending whether RG scope is feasibleLPRIV-007Deferred

Document History

DateChangeAuthor
April 2026Initial mapping — LPRIV-001 through LPRIV-018Kobe

Internal use only — Cirius Group