Security model

Built for the security review you'll put it through.

PosturaNet reads, reasons and proposes. It never changes your cloud. Humans merge every change.

Stays in your environment

  • Findings, flow logs and CloudTrail queries
  • Terraform code and state (state is never logged)
  • Behavior contracts and audit evidence, as files in your repo
  • Prompts to your LLM, with secrets redacted first

Reaches PosturaNet (optional)

  • A license check: your license id and agent version
  • Nothing else, and the check can be turned off
License keys are verified offline with an Ed25519 signature.
Read-only by construction

Every AWS call is on a published allowlist.

posturanet init generates the IAM policy from the same allowlist the code enforces, so the two can't drift apart. A test fails the build if any mutating call appears.

// PosturaNetReadOnly (excerpt)
{
  "Effect": "Allow",
  "Action": [
    "securityhub:GetFindings",
    "ec2:DescribeSecurityGroups",
    "ec2:DescribeNetworkInterfaces",
    "logs:StartQuery",
    "logs:GetQueryResults",
    "cloudtrail:LookupEvents"
  ],
  "Resource": "*"
}

How the agent stays safe

Fails closed

Missing context, a failed check, a timeout or unexpected plan scope stops the run. No PR.

The LLM never decides

Rules and diffs come from code and a solver. Model output is schema-checked and never executed.

External text is data

Instructions hidden in findings, comments or logs are ignored and noted in the run record.

One finding, one PR

An idempotency key prevents duplicates, and the number of open PRs is capped.

Honest results

Every PR states the evidence window, confidence, model scope, residual risk and unknowns.

Source-available core

FSL-1.1, Apache 2.0 after two years. Read the code that runs in your CI before you run it.

Need more for your review?

Start with the read-only IAM role: generate it, read it, then decide.