Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Vendor Inheritance

Many compliance controls are partially or fully satisfied by external providers (cloud platforms, SaaS tools, managed services). Pretorin tracks these inheritance relationships and keeps inherited narratives in sync with vendor documentation.

Concepts

  • Vendor — An external provider or internal shared service (CSP, SaaS, managed service, internal)
  • Responsibility edge — A link between a control and a vendor indicating the control is inherited or shared
  • Stale edge — A responsibility edge where the source narrative has changed but the inherited control hasn’t been updated

Workflow

1. Create Vendor Entities

pretorin vendor create "AWS GovCloud" --type csp \
  --description "Primary cloud infrastructure" \
  --authorization-level "FedRAMP High P-ATO" \
  --inherent-risk high

pretorin vendor create "Okta" --type saas \
  --description "Identity and access management" \
  --inherent-risk moderate

Vendor inherent risk and residual risk tiers use low, moderate, high, and critical. medium is accepted only as a deprecated input alias for moderate.

2. Upload Vendor Documentation

pretorin vendor upload-doc <vendor_id> ./aws-crm.pdf \
  --name "AWS Customer Responsibility Matrix" \
  --attestation-type vendor_provided

pretorin vendor upload-doc <vendor_id> ./okta-soc2.pdf \
  --name "Okta SOC 2 Type II Report" \
  --attestation-type third_party_attestation

3. Set Control Responsibility

Via MCP tools:

set_control_responsibility(
  system_id,
  control_id,
  framework_id,
  responsibility_mode,  # "inherited" or "shared"
  source_type,          # "provider" or "org_system"
  vendor_id,            # required when source_type is "provider"
  source_system_id,     # required when source_type is "org_system"
  source_control_id,    # optional — defaults to control_id
)

Responsibility modes:

  • inherited — Fully satisfied by the source
  • shared — Partially satisfied; your system handles the remainder

Source types:

  • provider — A vendor entry on the Pretorin vendor portal. Pass its vendor_id.
  • org_system — Another org-internal system (a shared platform, a common control provider). Pass its source_system_id.

source_control_id is the control id on the source side. It defaults to the target control_id, which fits the common vendor-inheritance case where the source covers the same control concept; set it explicitly when the source tracks the requirement under a different id.

Only system_id, control_id, framework_id, and responsibility_mode are required by the tool schema — the source fields are validated against the source_type you pick.

To inspect or undo an edge:

get_control_responsibility(system_id, control_id, framework_id)     # inherited, shared, or system-specific
remove_control_responsibility(system_id, control_id, framework_id)  # back to system-specific

4. Generate Inheritance Narratives

generate_inheritance_narrative(system_id, control_id, framework_id)

AI generates a narrative grounded in the vendor’s uploaded documentation (resolved via the responsibility edge), explaining how the vendor satisfies the control requirements.

5. Monitor Staleness

Over time, vendor documentation or source narratives may be updated. Check for stale inheritance:

get_stale_edges(system_id)

Returns controls where the source has changed but the inherited narrative hasn’t been refreshed.

6. Sync Stale Edges

sync_stale_edges(system_id)

Bulk updates inherited controls by regenerating narratives from the latest source.

Linking Evidence to Vendors

link_evidence_to_vendor(evidence_id, vendor_id, attestation_type)

Attestation types: self_attested, third_party_attestation, vendor_provided