Skip to content

Adding encrypted recordings for async recording modes#55859

Merged
eriktate merged 1 commit intomasterfrom
eriktate/async-recording-encryption-multipart
Jun 30, 2025
Merged

Adding encrypted recordings for async recording modes#55859
eriktate merged 1 commit intomasterfrom
eriktate/async-recording-encryption-multipart

Conversation

@eriktate
Copy link
Copy Markdown
Contributor

@eriktate eriktate commented Jun 18, 2025

This PR adds recording encryption support for async recording modes. It replaces the existing per event upload of on-disk .tar recordings with a multipart upload of the individually encrypted parts over gRPC.

@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from e111b80 to 8f5347a Compare June 18, 2025 01:18
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from 6528a81 to 951fe6a Compare June 18, 2025 01:34
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from 8f5347a to fe05558 Compare June 18, 2025 01:36
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from 951fe6a to 9951b3c Compare June 24, 2025 13:50
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from fe05558 to 67c47c7 Compare June 24, 2025 13:50
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from 9951b3c to 4c47222 Compare June 24, 2025 14:10
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from 67c47c7 to 88fbbc2 Compare June 24, 2025 14:10
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from 4c47222 to b9d371a Compare June 24, 2025 15:28
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from 88fbbc2 to f0f55a6 Compare June 24, 2025 15:28
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from b9d371a to a046cd8 Compare June 24, 2025 20:27
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from f0f55a6 to 60ae572 Compare June 24, 2025 20:27
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from 5aa67b2 to e049d5b Compare June 24, 2025 22:51
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from 60ae572 to 6c57ee9 Compare June 24, 2025 22:59
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from e049d5b to 780f861 Compare June 24, 2025 23:37
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch 2 times, most recently from 8618e9d to a3728fe Compare June 24, 2025 23:55
@eriktate eriktate marked this pull request as ready for review June 25, 2025 13:22
@github-actions github-actions Bot added application-access audit-log Issues related to Teleports Audit Log database-access Database access related issues and PRs desktop-access kubernetes-access size/md labels Jun 25, 2025
@eriktate eriktate force-pushed the eriktate/encrypted-recording-service-proto branch from 780f861 to a3a28cb Compare June 25, 2025 15:53
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from a3728fe to 151b238 Compare June 25, 2025 15:56
@eriktate eriktate added the no-changelog Indicates that a PR does not require a changelog entry label Jun 25, 2025
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from fd050fc to 7be7d31 Compare June 25, 2025 16:56
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from f25460a to 7ef3cde Compare June 27, 2025 21:05
Comment thread lib/events/filesessions/fileasync.go
Comment thread lib/events/stream.go
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch 2 times, most recently from 8f9a48a to 771d23f Compare June 30, 2025 17:53
@eriktate eriktate requested a review from rosstimothy June 30, 2025 18:13
Comment thread lib/auth/recordingencryption/recordingencryptionv1/service.go Outdated
Comment thread lib/auth/recordingencryption/recordingencryptionv1/service.go Outdated
@eriktate eriktate force-pushed the eriktate/async-recording-encryption-multipart branch from 224b201 to cbd0e19 Compare June 30, 2025 21:08
@eriktate eriktate added this pull request to the merge queue Jun 30, 2025
Merged via the queue into master with commit 97a7778 Jun 30, 2025
43 checks passed
@eriktate eriktate deleted the eriktate/async-recording-encryption-multipart branch June 30, 2025 21:49
github-merge-queue Bot pushed a commit that referenced this pull request Sep 3, 2025
* adding support for encryption/decryption keys to keystore manager (#54428, #55652)

* adds new protos for resources related to encrypted session recordings and updates the existing SessionRecordingConfig protos to include a Status (#54780)

* adding local service implementation for recording encryption resources (#54816)

* adding Manager for RecordingEncryption resources that handles shared ops more complex than CRUD (#55078)

* Adding session recording plugin for `age` (#55120)

* adding Manager for RecordingEncryption resources that handles shared ops more complex than CRUD

* adding age plugin wrapping default X25519 Identity/Recipient implementation with hooks to more efficiently lookup private keys given their respective public key

* Adding recording encryption and playback for `sync` modes (#54901)

* adding cache for RecordingEncryption (#55857)

* adding recording_encryption service protos (#55121)

* adding async recording encryption with gRPC multipart uploader (#55859)

* adding file configuration for encrypted session recording (#56200)

* Switching recording encryption to unwrap keys using direct keystore RSA decryption (#56776)

* adding manual key management config (#56920)

* updating protos for recording encryption (#57055)

* Add missing handling for recording encryption configs and keys (#57279)

* updating protos for recording encryption

* changing labels for encryption keys to prevent automatic cleanup, adjusting pkcs11 host UUID check to allow for key sharing of encryption keys, preventing cloud tenants from enabling manual key management, preventing use of recording encryption in FIPS mode

* adding new protos for rotated keys and the local service for interacting (#57576)

with them

* Switching encryption keys from PEM to ASN.1 DER encoding (#58137)

* using pregenerated RSA4096 key for keystore tests because generation is too slow (#58138)

* extending precomputed RSA keys to support 4096-bit keys (#58251)

* adding rotation process to Manager and exposing with new RPCs and (#57577)

* adding rotation sub commands for recording encryption keys and fixing (#57780)

broken session_recording_config when using fileconf

* using more reliable method of validating key bit length
@tigrato
Copy link
Copy Markdown
Contributor

tigrato commented Mar 28, 2026

@codex review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

application-access audit-log Issues related to Teleports Audit Log database-access Database access related issues and PRs desktop-access kubernetes-access no-changelog Indicates that a PR does not require a changelog entry size/md

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants