-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathlula-validation-au12.yaml
More file actions
212 lines (194 loc) · 9.76 KB
/
Copy pathlula-validation-au12.yaml
File metadata and controls
212 lines (194 loc) · 9.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# lula-validation-au12.yaml
# NIST SP 800-53 Rev 5 — AU-12: Audit Record Generation
#
# Validates two auditing modes supported by CAGE:
#
# 1. DECISION-TIME AUDIT (fire-and-forget, default):
# Asserts that Langfuse web deployment is running and ready. All governance
# decision spans are shipped asynchronously to Langfuse via its native OTLP
# endpoint (langfuse-web:3000/api/public/otel/v1/traces). OTel spans tagged
# with iso42001.control, iso42001.verdict, user, and timestamp fields provide
# the evidence for AU-12 compliance.
#
# 2. EVIDENCE-OF-EXECUTION AUDIT (blocking, EVIDENCE_CHAIN_BLOCKING=true):
# Asserts that the gateway deployment is configured with the EVIDENCE_CHAIN_BLOCKING
# environment variable capability. When enabled, the provenance chain ensures
# evidence commit before routing seal issuance, providing stronger non-repudiation.
# The evidence chain includes hash-linked records for time-correlated audit trails
# per AU-12(1) enhancement requirements.
#
# Both modes are compliant AU-12 implementations with different consistency/availability
# trade-offs:
# - Decision-time: Higher availability, async evidence persistence
# - Evidence-of-execution: Stronger non-repudiation, seal tied to evidence
#
# Domain: kubernetes → Langfuse Web Deployment + Gateway Deployment
# Provider: opa (inline Rego)
#
# References:
# - deployment/k8s/langfuse-web.yaml — Langfuse deployment manifest
# - deployment/k8s/generated/gateway-deployment.yaml — OTLP endpoint + EVIDENCE_CHAIN_BLOCKING config
# - src/gateway/server/governance_middleware.py — span emission source
# - src/gateway/governance/provenance_chain.py — evidence chain blocking implementation
# - src/gateway/governance/routing_seal.py — seal generation tied to evidence
component-definition:
uuid: cf25a83a-cdbb-5eb4-a4dd-8a3812a4a76e
metadata:
title: CAGE Validation — AU12 (Dual Auditing Modes)
last-modified: '2026-08-15T16:50:00Z'
version: 2.0.0
oscal-version: 1.1.2
remarks: |
Auto-converted from standalone lula validation format.
Region: US_FED. Posture: nist-sp800-53.
Notes: NIST SP 800-53 Rev 5 AU-12: Audit Record Generation with AU-12(1)
System-Wide/Time-Correlated Audit Trail enhancement support.
CAGE provides two compliant auditing modes:
1. DECISION-TIME AUDIT (default): Records governance decisions asynchronously
via OTel spans to Langfuse. Prioritizes availability — routing seal issued
immediately after governance decision without waiting for audit persistence.
Decision-time != evidence-of-execution.
2. EVIDENCE-OF-EXECUTION AUDIT (EVIDENCE_CHAIN_BLOCKING=true): Ensures evidence
commit before seal issuance. The provenance chain (provenance_chain.py) must
successfully persist the evidence record before the routing seal is computed.
Provides stronger non-repudiation: seal cryptographically tied to evidence.
Supports dual-schema verification (v1.0/v1.1) for forward compatibility.
Hash-linked evidence chain satisfies AU-12(1) time-correlation requirements.
Key distinction: Decision-time records WHAT was decided; evidence-of-execution
proves THAT the decision was recorded BEFORE action (seal issuance).
Validation checks:
- Langfuse deployment ready (decision-time audit sink operational)
- Gateway deployment has EVIDENCE_CHAIN_BLOCKING env var capability
Evidence: OTel spans from governance_middleware.py, provenance_chain.py evidence
records, and hash-linked audit trail. See: compliance/continuous-monitoring/ISCM_STRATEGY.md
components:
- uuid: ce18ebc3-50f2-550a-9fbc-503d5114c06f
type: software
title: CAGE Cybernetic Governance Engine
description: |
The Cybernetic AI Governance Engine (CAGE) — AI governance gateway with dual
auditing modes for AU-12 compliance. Supports both decision-time (async) and
evidence-of-execution (blocking) audit record generation.
control-implementations:
- uuid: 257ab77e-1020-5595-a07b-a8ae59511c0d
source: https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final
description: |
Control implementation for AU-12 with AU-12(1) enhancement.
Region: US_FED. Posture: nist-sp800-53.
Two auditing modes documented:
- Decision-time audit: async OTel spans to Langfuse (availability-optimized)
- Evidence-of-execution audit: blocking provenance chain commit (non-repudiation-optimized)
implemented-requirements:
- uuid: 4405db85-a4ec-513f-bc34-161e9935bf04
control-id: au-12
description: |
Automated lula validation for AU-12. Verifies:
1. Langfuse audit sink is operational (decision-time mode)
2. Gateway has EVIDENCE_CHAIN_BLOCKING capability (evidence-of-execution mode)
links:
- href: '#610ee241-76a3-5f1f-b41d-613019559b15'
rel: lula
text: Langfuse audit sink validation
- href: '#7a2b3c4d-5e6f-4a8b-9c0d-1e2f3a4b5c6d'
rel: lula
text: Evidence chain blocking capability validation
- uuid: 8b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e
control-id: au-12.1
description: |
AU-12(1) System-Wide/Time-Correlated Audit Trail enhancement.
The evidence chain in provenance_chain.py provides hash-linked audit records
that enable time-correlated analysis across system components. Each evidence
record includes: timestamp_utc, request_id, previous_hash (chain link),
and schema_version for dual-schema verification (v1.0/v1.1).
links:
- href: '#7a2b3c4d-5e6f-4a8b-9c0d-1e2f3a4b5c6d'
rel: lula
text: Hash-linked evidence chain validation
back-matter:
resources:
- uuid: 610ee241-76a3-5f1f-b41d-613019559b15
title: Lula Validation — AU-12 Decision-Time Audit (Langfuse Sink)
rlinks:
- href: lula.dev
description: |
domain:
type: kubernetes
kubernetes-spec:
resources:
- name: langfuse-web-deployment
resource: deployments
namespace: governance-stack
provider:
type: opa
opa-spec:
rego: |
package lula
import future.keywords.if
# AU-12: Audit Record Generation — Decision-Time Mode
# Verifies the Langfuse web deployment is present and has at least 1
# ready replica, confirming the async audit record sink is operational.
# Required audit fields emitted per span: iso42001.control, iso42001.verdict,
# user, timestamp — enforced by governance_middleware.py and LangGraph nodes.
#
# Decision-time audit provides availability-optimized audit record generation.
# Routing seals are issued immediately; audit persistence is async.
validate if {
input["langfuse-web-deployment"].status.readyReplicas >= 1
}
- uuid: 7a2b3c4d-5e6f-4a8b-9c0d-1e2f3a4b5c6d
title: Lula Validation — AU-12 Evidence-of-Execution Audit (Blocking Mode)
rlinks:
- href: lula.dev
description: |
domain:
type: kubernetes
kubernetes-spec:
resources:
- name: cage-gateway-deployment
resource: deployments
namespace: governance-stack
provider:
type: opa
opa-spec:
rego: |
package lula
import future.keywords.if
import future.keywords.in
# AU-12: Audit Record Generation — Evidence-of-Execution Mode
# Verifies the gateway deployment supports EVIDENCE_CHAIN_BLOCKING capability.
# When EVIDENCE_CHAIN_BLOCKING=true, the provenance chain ensures evidence
# commit before routing seal issuance, providing stronger non-repudiation.
#
# This validation confirms the capability EXISTS in the deployment spec.
# Actual enforcement depends on runtime EVIDENCE_CHAIN_BLOCKING value.
#
# Key guarantee: No routing seal can be issued without a committed evidence record.
# The evidence chain provides hash-linked correlation for AU-12(1) time-correlation.
#
# Two auditing modes are BOTH compliant AU-12 implementations:
# - Decision-time (EVIDENCE_CHAIN_BLOCKING=false): availability over consistency
# - Evidence-of-execution (EVIDENCE_CHAIN_BLOCKING=true): consistency over availability
# Check that EVIDENCE_CHAIN_BLOCKING env var is defined in container spec
evidence_chain_blocking_defined if {
some container in input["cage-gateway-deployment"].spec.template.spec.containers
some env in container.env
env.name == "EVIDENCE_CHAIN_BLOCKING"
}
# Validate: gateway deployment is ready AND has evidence chain blocking capability
validate if {
input["cage-gateway-deployment"].status.readyReplicas >= 1
evidence_chain_blocking_defined
}