Integrating AWS Bedrock

Bedrock is the natural runtime for federal civilian and other FedRAMP-relevant deployments. The Verdifax integration is one extra call after each invoke_model.

Install

pip install verdifax boto3

Bedrock + Claude

import json
import boto3
import verdifax

bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")

prompt = "Summarize this benefits-eligibility determination..."
body = json.dumps({
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": prompt}],
})

resp = bedrock.invoke_model(
    modelId="anthropic.claude-sonnet-4-6-v1:0",
    body=body,
)
payload = json.loads(resp["body"].read())
output = payload["content"][0]["text"]

receipt = verdifax.attest(
    payload=f"model:claude-sonnet-4-6\nprompt:{prompt}\nresponse:{output}",
    program_id="a" * 64,
    route_id="bedrock-eligibility-v1",
    registry_record_hash="b" * 64,
)
print(receipt.manifest_hash)

Why FedRAMP buyers care

FedRAMP authorizes cloud services against baselines built from NIST SP 800-53, including the audit and accountability (AU) controls, such as AU-9 (protection of audit information). Those controls are the duty of the cloud service provider and the agency. A Verdifax record makes a later change to what it anchors detectable: every section for records sealed from run 239 on; the run's identity and its 33 pre-anchor values for leaf v5 records sealed before run 238, whose descriptive sections are sealed inside the bundle only. Run 238 also carries the complete-record entry, but deleting it only lowers the verdict to partial coverage. Verdifax records can serve as evidence for the integrity side of that party's own audit controls, alongside Bedrock's authorization boundary. Verdifax is not FedRAMP certified, and the hosted Verdifax service is not a FedRAMP-authorized cloud service, so check whether your authorization boundary permits sending data to it.

See Compliance, FedRAMP for the explicit mapping.

Continue