- Kill switch. Disable the key or remove Corsa’s access, and Corsa can no longer decrypt or encrypt your protected fields.
- Scoped access. Your key policy only allows Corsa to use the key with your workspace’s encryption context.
- Audit. AWS CloudTrail records every use of the key by Corsa, in your account.
BYOK protects your data with a key you own and can revoke. It doesn’t hide plaintext from Corsa while access is granted: Corsa services read decrypted values to run screening, rules, and other features. If stored sensitive fields must stay unreadable to Corsa, see HYOK.
How it works
- You create a symmetric AWS KMS key in your account. Its key policy grants Corsa’s BYOK service role permission to use the key, only with the encryption context
platformId = <your workspace ID>. - When a protected field is written through any path (API, SDK, KYC integration, or the app), Corsa’s isolated encryption service asks your key for a data key and encrypts the field with AES-256-GCM. Each value is bound to its workspace, entity type, and field.
- Corsa stores the encrypted value and a keyed search index. It never stores the plaintext of protected fields.
- When an authorized Corsa user or service reads the field, the encryption service decrypts it with a data key that your KMS key unwraps.
Set up BYOK
You need an AWS account and permission to create a KMS key in it.1
Start BYOK setup in Corsa
A workspace Owner opens Settings → Encryption and selects BYOK. Corsa shows your workspace ID (
platformId), the Corsa BYOK role for your region, and the AWS region to use.2
Create the key in your AWS account
The setup screen provides a key template prefilled for your workspace. Deploy it in the region shown. It creates a symmetric encrypt-and-decrypt key with the key policy Corsa needs. You can also create the key yourself, as long as its policy meets the key policy requirements.
3
Register the key ARN
Paste the key ARN (for example
arn:aws:kms:us-east-1:111122223333:key/your-key-id) into the setup screen. Key aliases aren’t accepted.4
Verify
Corsa runs an encrypt and decrypt round trip with your workspace’s encryption context. On success, the key status becomes
active and Corsa starts encrypting the fields you selected.Key policy requirements
Your key policy must allow the following:- Corsa use. Corsa’s BYOK role may encrypt, decrypt, and generate data keys with your key, but only when the encryption context
platformIdequals your workspace ID. So Corsa can use the key only for your workspace’s data. - Corsa describe. Corsa’s BYOK role may describe the key, without an encryption context condition. KMS doesn’t send an encryption context for this call. It lets Corsa confirm the key type, state, and region during verification.
- Your administration. Your own administrators keep full control, so they can manage, disable, and audit the key.
Verify the key
Corsa verifies the key when you register it, and monitors it afterwards. Verification encrypts and decrypts a test value with your workspace’s encryption context and checks the key withDescribeKey.
You can read the status,
byokLastVerifiedAt, and byokLastError with GET /v1/platforms/encryption-config.
Revoke access (kill switch)
To stop Corsa from using your key, do any of the following in your AWS account:- Disable the key (
aws kms disable-key --key-id <key-arn>). - Remove or change the Corsa statements in the key policy.
- Revoke any grant you created for the Corsa role.
- Reads fail closed. The app and API show protected fields as masked values with a Key revoked indicator. Corsa never falls back to a different key.
- Writes of protected fields fail with HTTP
423and error codeKEY_REVOKED. Writes that don’t touch protected fields keep working. - Features that need the plaintext stop for protected fields, including screening, rules that read those fields, search, and exports.
- In-memory data keys expire within 5 minutes. Until then, Corsa can still use data keys it unwrapped before revocation.
- Corsa alerts you and shows the revoked state in Settings → Encryption.
Audit key use with CloudTrail
Every KMS call Corsa makes appears in your CloudTrail as aGenerateDataKey, Decrypt, Encrypt, or DescribeKey event. Filter by the Corsa BYOK role ARN to see them:
platformId. Because Corsa caches data keys for up to 5 minutes, one CloudTrail event can cover many field reads. CloudTrail shows when and how often Corsa used the key, not which individual record was read. Corsa’s own audit log in the app records who viewed which client.