This guide walks you through creating an AWS KMS key, granting KnoxCall cross-account access via an IAM role, and onboarding it as your tenant’s wrapping key.Documentation Index
Fetch the complete documentation index at: https://docs.knoxcall.com/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- AWS account with permission to create KMS keys and IAM roles
- KnoxCall Owner or Admin role
Step 1: Create a symmetric KMS key
In your AWS account, create a new symmetric KMS key:Step 2: Create a cross-account IAM role
KnoxCall assumes a role in your account using STS. Create an IAM role with the following trust policy — replace<KNOXCALL_AWS_ACCOUNT_ID> with the value shown in your KnoxCall admin UI under Settings → Security → Tenant KMS:
<your-chosen-external-id> — you’ll enter it in KnoxCall. Using an external ID prevents confused-deputy attacks.
Attach this inline permission policy to the role, scoped to only the one KMS key:
Step 3: Onboard via admin UI
- Go to Settings → Security → Tenant KMS
- Click Add provider → AWS KMS
- Fill in:
- Region — the AWS region where your KMS key lives
- KMS key ARN — the full
arn:aws:kms:...ARN (or alias ARN) - Role ARN — the role you created in Step 2
- External ID — the UUID from Step 2
- Click Verify and save
Step 4: Onboard via API
No step-up token is required for onboarding. KnoxCall runs a probe (wrap + unwrap on 32 test bytes) before writing anything — if the IAM grant isn’t working, the request fails immediately with400 kms_verify_failed.
provider is "aws" (not "aws_kms"). A successful response:
rewrap_status is always "enqueued" — KnoxCall unconditionally issues a background rewrap lease after onboarding.
Step 5: Verify the configuration
config.sealed_since is null and the keys array contains one active version.
Session duration impact
Once BYOK is active, all agent sessions for this tenant have a 5-minute TTL instead of the default 1 hour. Self-hosted proxy agents will renew sessions more frequently — this is intentional to bound plaintext exposure if you later revoke KMS access. Ensure your agents are not configured with session renewal intervals longer than 4 minutes.
Revoking access (the kill switch)
To lock KnoxCall out of your tenant data:- Remove (or deny) the
kms:Decryptpermission from the IAM role — or detach the inline policy entirely. - Within one cache TTL (5 minutes), KnoxCall will fail to unwrap on the next miss and the tenant will enter the sealed state.
Troubleshooting
AccessDenied during onboarding verify:
- Check the trust policy includes the correct KnoxCall AWS account ID
- Verify
sts:ExternalIdin the trust policy matches what you entered exactly - Confirm the inline policy ARN matches the KMS key ARN (no typos)
NoCredentialProviders error:
- The KnoxCall principal ARN must appear in the trust policy’s
Principal.AWSfield - Ensure you saved the role after adding the trust policy
- Copy the role ARN directly from the IAM console — avoid hand-typing the account ID
- Check KMS key is not in a pending-deletion state:
aws kms describe-key --key-id <arn> - Verify the KMS key is in the correct region
GCP Cloud KMS setup
Service account impersonation for GCP
Sealed state and unseal
What to do when KMS becomes unreachable
Key rotation
Rotate to a new master key version
Tenant KMS API reference
Full endpoint reference