- contact@verticalserve.com
A product that can change production permissions is worth attacking. InsightKeys is designed so that compromising our service would not be enough: the only credential that can grant access lives in a broker you run, which obeys signed instructions only, applies your own policy, and takes access away on time without us.
You create a broker in the console and get a one-time enrollment token. The broker generates its own Ed25519 key, enrolls with the token, and receives your organisation’s public key, which it pins. The token is useless afterwards.
Each poll, result, inventory and activity report is signed by the broker’s key over the time, method, path and a hash of the body, and must arrive within five minutes. A revoked broker is refused.
Instructions are signed with your organisation’s key. The broker rejects anything unsigned, replayed (nonce), stale (not-after), or addressed to another broker or organisation. Re-delivery is idempotent.
Allowed integrations, the longest grant, actions never granted (by default iam:*, organizations:*, sts:*), whether admin is allowed, and a pause switch. A refused instruction is reported and never run. Revocation is never refused.
The broker records every grant it made and revokes each at expiry itself, then reports it. An outage on our side, or a control plane that stopped sending revokes, cannot leave access in place.
A database password a grant creates is sealed at rest, shown to the requester once, then wiped. Integration secrets (Slack, Duo) are sealed and never returned by the API.
# broker.yaml — your policy, not ours. A signed instruction it refuses is never executed. control_plane: https://app.insightkeys.com name: prod-us-east-1 state_dir: /var/lib/insightkeys-broker # its key, the pinned org key, the ledger allow_integrations: ["prod-aws", "payments-db"] max_duration_minutes: 240 # the longest grant it will create, whatever it is told deny_actions: ["iam:*", "organizations:*", "sts:*"] allow_admin: false paused: false # true: no new grants; revocation continues credentials: payments-db: {user: insightkeys_broker, password_env: PAYMENTS_BROKER_PASSWORD} prod-aws: {} # the broker's own IAM role
paused: true, or revoke the broker in the consoleEvery tenant table is protected by PostgreSQL row-level security; the application connects as an ordinary role that the policies bind.
Sign-in through OIDC from Okta, Entra ID, Google or Duo SSO, with their MFA. Roles: admin, security, approver, engineer, auditor.
Authenticator-app codes (RFC 6238, replay-protected) or Duo push. An assertion lasts five minutes and serves one decision.
Two-person flows require two different approvers, neither the requester. Break-glass is always reviewed after.
Every request, approval, instruction, grant, revoke and agent action, with who and when, exportable.
Agents act only at the level you set, within a deployment ceiling, and every action can be rejected or undone.
We would rather you hear this from us.
The AWS drivers are tested against moto, the AWS API emulator; the PostgreSQL driver against a real PostgreSQL database, including logging in with the granted role and being refused on other tables; the Kubernetes driver against the API’s request shapes. Before your production, we run the broker against a sandbox account of yours with you.
An independent penetration test is planned before the first external production customer. We will share the summary under NDA when it is done.
As a container image (docker run or Docker Compose) and a Python package. CloudFormation, Terraform and Helm packaging are planned.
Your catalog (resource names, owners, sensitivity), requests and their reasons, decisions, grants and their scoped permissions, session events the broker reports, standing-access findings and reviews. It stores no credential to your systems.
Yes. The self-hosted edition runs the same control plane images in your cloud with your PostgreSQL and identity provider.