Credentials without rotation
warningcredentials-without-rotation
The design stores data but says nothing about rotating the credentials that reach it, and it has no key-management node that would rotate them. A leaked credential stays valid forever.
- Severity
- warning
- Selects
- every design
- Components in scope
- 2,366
It looks at every design, and fires when:
- — all of these hold:
- — the design contains a node in category data
- — the design requirement `security.credentialRotationDays` has no value
- — this does not hold:
- — the design contains a node of kind key-management
Design '{{design.id}}' holds data but declares no credential rotation period and has no key-management node.This rule is about the whole design, not one node.
This rule names no kind: it reads the design as a whole.
Reference designs whose broken twin names this rule in its header. The gate reads the same header, and fails when a rule no design trips.
# yaml-language-server: $schema=../schema/rule.schema.json # The design stores data but says nothing about rotating the credentials that reach it, # and there is no key-management node that would rotate them. Leaked credentials then # stay valid forever. # Tripped by: designs/payment-system.broken.yaml schemaVersion: "1" type: "rule" id: "credentials-without-rotation" severity: "warning" select: design: true when: all: - hasNode: category: "data" - requirement: "security.credentialRotationDays" exists: false - not: hasNode: kind: "key-management" message: "Design '{{design.id}}' holds data but declares no credential rotation period and has no key-management node."