This adds two columns to the `recording_session` table. One column is a
foreign key to the `iam_user_hst` table and the other is a foreign key
to the `iam_scope_hst` table. The foreign key to the `iam_scope_hst`
table reference the IAM scope the user belongs to at the time of the
recording.
This moves and renames the migration with the session recording table to
come after the history table migrations. This allows the session
recording table to have foreign key references to the history tables
without using alter table statements.
This adds a history table for `iam_scope`. It also includes reusable
triggers to maintain the included history table and future history
tables.
This also includes a test suite that runs on any table ending in `_hst`.
This adds a SQL function that generates a secure random ID of at least
14 characters suitable for use as a public or private ID. IDs generated
with the function will only contain characters from the unreserved
character set defined in RFC 3986 Section 2.3 making them safe for use
in a URL.
This adds a new Job type that is for generic session state monitoring. Monitoring sessions does not include any information about specific connections.
refactor servers.(repository).ListWorkers(...) into just
servers.ListWorkers(...) used independently of the repo. The method
func is refactor to use the new bits as well.
Originally, UpstreamMessageHandler was used by
controllerUpstreamMessageServiceServer.UpstreamMessage to process
(aka handle) an upstream message and by SendUpstreamMessage to
send an upstream msg.
We split UpstreamMessageHandler into two interfaces so we can
register handlers independently of a senders.
The upstream messages all basically looked the same; regardless
of which message was sent. This PR adds DetailsUpstreamMessage to
audit events emitted by UpstreamMessage requests/response
This makes it possible to have external packages implement the
storage.FS, storage.Container, and storage.File interfaces and correctly
inspect the various options.
Add the following new tables used for storing session recordings:
* recording_session
* recording_connection
* recording_channel
* recording_channel_ssh
* storage_bucket