Governance & Compliance

Governance is Cedar-inspired ABAC, deny-wins, with bitmap row filtering and cell masking. Break-glass is the audited emergency override; legal hold is row-scoped immutability; WORM is retention-floor storage; DSAR is the GDPR subject-access request. These are the product differentiators — policy is in the query path, not bolted on.

21 methods across this domain. Signatures, parameters (incl. keyword-only tunable defaults), and the three SDK spellings are ported from the live SDK source; flagship methods carry a hand-written When to use + example.

GovernanceClient

import_sigma(sigma_yaml, purpose=None)

When to use. Import a Sigma detection rule (YAML) into the governed rule engine.

  • Pythonclient.governanceclient.import_sigma(sigma_yaml, purpose=None)
  • TypeScriptimportSigma(sigmaYaml, opts)
  • GoImportSigma(sigmaYAML)

Parameters: sigma_yaml, purpose=None

Example

GovernanceClient.from_client(relata).import_sigma(sigma_yaml=open("rule.yml").read())

When to use. Freeze specific rows (row-scoped field/value) against modification/deletion.

  • Pythonclient.governanceclient.place_legal_hold(case_id, object_type, field=None, value=None)
  • TypeScriptplaceLegalHold(caseId, objectType, opts)
  • GoPlaceLegalHold(caseID, objectType)

Parameters: case_id, object_type, field=None, value=None

Example

GovernanceClient.from_client(relata).place_legal_hold("Person", field="_pk", value="p-42", reason="litigation-hold-7")

request_breakglass(source_id, purpose=None, justification=None)

When to use. Emergency override of a deny — audited, time-boxed, requires approval (ADR-261).

  • Pythonclient.governanceclient.request_breakglass(source_id, purpose=None, justification=None)
  • TypeScriptrequestBreakglass(sourceId, opts)
  • GoRequestBreakglass(sourceID)

Parameters: source_id, purpose=None, justification=None

Example

bg = GovernanceClient.from_client(relata).request_breakglass(
    source_id="incident-42", purpose="forensics", justification="SEV1: locked-out owner")

set_worm_policy(object_type, retention_secs)

When to use. Set a retention floor (WORM) on a type so rows cannot be deleted before retention_secs.

  • Pythonclient.governanceclient.set_worm_policy(object_type, retention_secs)
  • TypeScriptsetWormPolicy(objectType, retentionSecs)
  • GoSetWormPolicy(objectType, retentionSecs)

Parameters: object_type, retention_secs

Example

GovernanceClient.from_client(relata).set_worm_policy("AuditEvent", retention_secs=365*86400)

submit_dsar(subject_identity, reason, scope=None)

When to use. File a GDPR data-subject-access request; returns a governed export job.

  • Pythonclient.governanceclient.submit_dsar(subject_identity, reason, scope=None)
  • TypeScriptsubmitDsar(subjectIdentity, reason, opts)
  • GoSubmitDSAR(subjectIdentity, reason)

Parameters: subject_identity, reason, scope=None

Example

GovernanceClient.from_client(relata).submit_dsar(subject="alice@x.io", scope="all")

add_rule_exception(rule_id, exception)

add_rule_exception(rule_id, exception)`

  • Pythonclient.governanceclient.add_rule_exception(rule_id, exception)
  • TypeScriptaddRuleException(ruleId, exception)
  • GoAddRuleException(ruleID, exception)

Parameters: rule_id, exception

approve_breakglass(request_id, approver_note=None)

approve_breakglass(request_id, approver_note=None)`

  • Pythonclient.governanceclient.approve_breakglass(request_id, approver_note=None)
  • TypeScriptapproveBreakglass(requestId, opts)
  • GoApproveBreakglass(requestID)

Parameters: request_id, approver_note=None

breakglass_status(request_id)

breakglass_status(request_id)`

  • Pythonclient.governanceclient.breakglass_status(request_id)
  • TypeScriptbreakglassStatus(requestId)
  • GoBreakglassStatus(requestID)

Parameters: request_id

create_rule(rule, purpose=None)

create_rule(rule, purpose=None)`

  • Pythonclient.governanceclient.create_rule(rule, purpose=None)
  • TypeScriptcreateRule(rule, opts)
  • GoCreateRule(rule)

Parameters: rule, purpose=None

disable_rule(rule_id)

disable_rule(rule_id)`

  • Pythonclient.governanceclient.disable_rule(rule_id)
  • TypeScriptdisableRule(ruleId)
  • GoDisableRule(ruleID)

Parameters: rule_id

get_rule_tuning(rule_id)

get_rule_tuning(rule_id)`

  • Pythonclient.governanceclient.get_rule_tuning(rule_id)
  • TypeScriptgetRuleTuning(ruleId)
  • GoGetRuleTuning(ruleID)

Parameters: rule_id

lift_legal_hold(case_id)`

  • Pythonclient.governanceclient.lift_legal_hold(case_id)
  • TypeScriptliftLegalHold(caseId)
  • GoLiftLegalHold(caseID)

Parameters: case_id

list_alerts(severity=None, since_ns=None, limit=100)

list_alerts(severity=None, since_ns=None, limit=100)`

  • Pythonclient.governanceclient.list_alerts(severity=None, since_ns=None, limit=100)
  • TypeScriptlistAlerts(opts)
  • GoListAlerts()

Parameters: severity=None, since_ns=None, limit=100

list_legal_holds()`

  • Pythonclient.governanceclient.list_legal_holds()
  • TypeScriptlistLegalHolds()
  • GoListLegalHolds()

list_retention_policies()

list_retention_policies()`

  • Pythonclient.governanceclient.list_retention_policies()
  • TypeScriptlistRetentionPolicies()
  • GoListRetentionPolicies()

list_rules(object_type=None)

list_rules(object_type=None)`

  • Pythonclient.governanceclient.list_rules(object_type=None)
  • TypeScriptlistRules(opts)
  • GoListRules(objectType)

Parameters: object_type=None

list_worm_policies()

list_worm_policies()`

  • Pythonclient.governanceclient.list_worm_policies()
  • TypeScriptlistWormPolicies()
  • GoListWormPolicies()

snooze_rule(rule_id, duration_secs)

snooze_rule(rule_id, duration_secs)`

  • Pythonclient.governanceclient.snooze_rule(rule_id, duration_secs)
  • TypeScriptsnoozeRule(ruleId, durationSecs)
  • GoSnoozeRule(ruleID, durationSecs)

Parameters: rule_id, duration_secs

suppress_rule(rule_id, entity_id, condition=None)

suppress_rule(rule_id, entity_id, condition=None)`

  • Pythonclient.governanceclient.suppress_rule(rule_id, entity_id, condition=None)
  • TypeScriptsuppressRule(ruleId, entityId, opts)
  • GoSuppressRule(ruleID, entityID)

Parameters: rule_id, entity_id, condition=None

update_alert(alert_id, status=None, assignee=None, note=None)

update_alert(alert_id, status=None, assignee=None, note=None)`

  • Pythonclient.governanceclient.update_alert(alert_id, status=None, assignee=None, note=None)
  • TypeScriptupdateAlert(alertId, opts)
  • GoUpdateAlert(alertID)

Parameters: alert_id, status=None, assignee=None, note=None

fromClient(client)

fromClient(client)`

  • TypeScriptfromClient(client)

Parameters: client