Policies & Regelwerk

Genehmigungsregeln, Segregation of Duties und Lifecycle-Policies

PROD Vier-Augen-Prinzip

approvalhard_block

Alle PROD-Anträge benötigen zwei unabhängige Genehmigungen: Manager + Ressourcen-Owner.

request.env == "PROD" -> require(approvals >= 2 AND distinct_roles)
Scope: global / environment=PRODGeändert: 10.2.2026 (Sarah Mueller)Verletzungen 30T: 0

Externe Laufzeit maximal 12 Monate

ttlhard_block

Externe Identitäten dürfen nicht länger als 365 Tage aktive Zugriffe haben. Danach Rezertifizierung erforderlich.

principal.type == "external" AND validUntil - validFrom > 365d
Scope: global / principal.type=externalGeändert: 5.1.2026 (Markus Weber)Verletzungen 30T: 2

SoD: Deploy + Approve

sodhard_block

Kein Benutzer darf gleichzeitig Deploy- und Approval-Rechte in derselben PROD-Umgebung besitzen.

NOT (principal.hasRole("*_DEPLOY") AND principal.hasRole("*_APPROVER") AND sameEnv)
Scope: system / systemType=azureGeändert: 20.2.2026 (Sarah Mueller)Verletzungen 30T: 1

SoD: Admin + Audit

sodhard_block

Plattform-Admins dürfen keine Audit-Leserolle gleichzeitig besitzen.

NOT (principal.hasRole("HERMOS_PLATFORM_ADMIN") AND principal.hasRole("HERMOS_SECURITY_AUDITOR"))
Scope: global / *Geändert: 15.12.2025 (Markus Weber)Verletzungen 30T: 0

Externe in PROD nur mit Sponsor+Security

externalshard_block

Externe Benutzer in PROD-Umgebungen benötigen Sponsor-Freigabe und Security-Mitfreigabe.

principal.type == "external" AND target.env == "PROD" -> require("Sponsor") AND require("Security")
Scope: riskClass / riskClass=critical,highGeändert: 20.1.2026 (Sarah Mueller)Verletzungen 30T: 0

Kritische Rechte TTL 14 Tage

ttlsoft_block

Kritische Rechte sollen nicht länger als 14 Tage am Stück vergeben werden. Verlängerung erfordert neuen Antrag.

grant.riskClass == "critical" AND duration > 14d
Scope: riskClass / riskClass=criticalGeändert: 1.2.2026 (Markus Weber)Verletzungen 30T: 3

JML Leaver Deprovision

lifecyclehard_block

Bei Mitarbeiteraustritt (HR Status offboarded) werden alle aktiven Grants innerhalb von 4 Stunden entzogen.

user.lifecycleState == "offboarded" -> revokeAllGrants(within=4h)
Scope: global / hr.status=offboardedGeändert: 10.11.2025 (Markus Weber)Verletzungen 30T: 0

Jira Manager + Sponsor

approvalhard_block

Jira-Projektzugriffe benötigen Projekt-Lead und bei Externen zusätzlich Sponsor-Freigabe.

request.system == "jira" -> require("ProjectLead")
Scope: system / systemType=jiraGeändert: 1.3.2026 (Sarah Mueller)Verletzungen 30T: 0