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
- Compliance, FedRAMP
- Integrating Anthropic Claude (non-Bedrock)
