[sec_scan][10] add AccessGraphSettingsUpdate audit event#44011
Merged
[sec_scan][10] add AccessGraphSettingsUpdate audit event#44011
AccessGraphSettingsUpdate audit event#44011Conversation
jakule
approved these changes
Jul 10, 2024
Contributor
There was a problem hiding this comment.
The confusing part about it is that we will have multiple Access Graph setting in Teleport now. Saying "AG config has been updated" doesn't indicate which configuration.
Contributor
Author
There was a problem hiding this comment.
I can include the config change in a separate pr but it won't render well
4dad48c to
a706853
Compare
hugoShaka
approved these changes
Jul 12, 2024
This PR adds the boilerplate code and proto definition for `AccessGraphSettingsUpdate` audit event. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
a706853 to
b1f1ca0
Compare
tigrato
added a commit
that referenced
this pull request
Jul 30, 2024
This PR adds the boilerplate code and proto definition for `AccessGraphSettingsUpdate` audit event. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
tigrato
added a commit
that referenced
this pull request
Jul 30, 2024
This PR adds the boilerplate code and proto definition for `AccessGraphSettingsUpdate` audit event. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
github-merge-queue Bot
pushed a commit
that referenced
this pull request
Aug 13, 2024
* Add the device assertion protos (#43804) * Add the device assertion protos * Update generated protos * Add a client-side API to assert devices (#43890) * Add a client-side API to assert devices * Add a godoc to authnStreamAdapter * Define server-side device assertion interfaces (#44036) * Define server-side device assertion interfaces * Update proto comments * Update generated protos * [sec_scan][1] Add `teleport.access_graph.v1.SecretsScannerService` (#43462) This PR introduces the `teleport.access_graph.v1.SecretsScannerService`that will be used by Teleport SSH nodes to report `authorized_keys` and user's laptops to report secrets found on them. The `ReportAuthorizedKeys` uses node's TLS certs signed by HostCA for authentication while `ReportSecrets` leverages the device trust credentials (requires that the device is enrolled) to report secrets without requiring valid user credentials. handle Alan's feedback * [sec_scan][2] expose `ssh_scan_enabled` in `AccessGraphConfig` response (#43467) This PR exposes the configuration for nodes to be aware that they should report SSH Authorized keys to Teleport. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][3] add `PrivateKey`, `AuthorizedKey` and `Device` to Access Graph resources (#43468) This PR extends the Access Graph resources to be able include the newly added `teleport.access_graph.v1.PrivateKey`, `teleport.access_graph.v1.AuthorizedKey` and existing device trust information `teleport.devicetrust.v1.Device`. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * fix: fix `nextKey` values when using multiple prefixes (#43486) This PR makes `generic.Service` correctly implementing `List*` functions when multiple key prefixes are defined Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][5] add secrets backend service (#43543) * [sec_scan][5] add secrets backend service This PR implements the backend service to support storing `authorized_keys` and `private_keys` into Teleport backend. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * handle feedback * handle nits --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][6] add device events (#43905) This PR adds the ability to watch for events for `*devicepb.Device` objects. Backend storage representation of `devicepb.Device` is achieved using an internal representation that lives in `e/lib/devicetrust/storage` and whose logic is internal to the package. To be able to expose the unmarshal logic necessary for events to work, this PR exposes a registration hook that `e/lib/devicetrust/storage` function must call during initialization to register the unmarshal function. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][7] add authorizedKeys and privateKeys events support (#43906) This PR introduces the ability to watch for events related to `accessgraphsecretsv1pb.AuthorizedKey` and `accessgraphsecretsv1pb.PrivateKey` objects. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][9] add `access_graph_settings` protobuf (#44010) This PR adds the `clusterconfigpbv1.AccessGraphSettings` resource that will be used to control the secrets scanning definition of Teleport. This resource will be a singleton and the only goal is to carry some settings related to access graph because on the cloud, users don't have access to fileconf. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][10] add `AccessGraphSettingsUpdate` audit event (#44011) This PR adds the boilerplate code and proto definition for `AccessGraphSettingsUpdate` audit event. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][11] add `AccessGraphSettings` backend service (#44014) This PR adds the backend service to be able to create, update and retrieve access graph configurations from Teleport backend. This PR is part of gravitational/access-graph#637. * [sec_scan][12] add cache and events support for `AccessGraphSettings` (#44016) * [sec_scan][12] add cache and events support for `AccessGraphSettings` This PR adds the cache and events support for the new resource `AccessGraphSettings`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * add tests --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][13] add `AccessGraphSettings` gRPC implementation (#44021) This PR introduces the gRPC implementation for the CRUD operations related to `AccessGraphSettings`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][14] create `AccessGraphSettings` on first auth init (#44032) * [sec_scan][14] create `AccessGraphSettings` on first auth init This PR adds a init script that sets `AccessGraphSettings` into Teleport backend when auth first inits and there is no `AccessGraphSettings`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * remove iterations --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][15] add support for edits to `AccessGraphSettings` via `tctl` (#44055) This PR allows any cluster admin to edit `access_graph_settings` objects via `tctl`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][16] add methods to store/retrieve device assertion functions (#44081) This PR adds methods to store/retrieve functions defined by different teleport services. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][17] add `AssertDevice` to `FakeDeviceService` (#44159) * [sec_scan][17] add `AssertDevice` to `FakeDeviceService` This PR introduces a `AssertDevice` logic into `FakeDeviceService` to authenticate devices during unit tests using device trust credentials. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * simplify assert tests * Update lib/devicetrust/assert/assert_test.go Co-authored-by: Alan Parra <alan.parra@goteleport.com> --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> Co-authored-by: Alan Parra <alan.parra@goteleport.com> * [sec_scan][20] add `ReportSecrets` forwarder to proxy's gRPC insecure server (#44324) * [sec_scan][20] add `ReportSecrets` forwarder to proxy's gRPC insecure server This PR implements a `ReportSecrets` forwarder from Proxy server to Auth server. The goal is to allow clients to hit the proxy insecure gRPC server (credentialless) and proxy will forward requests to the AuthServer on behalf of the client. This is required because the client doesn't have valid credentials and it wasn't possible for it to reach auth server via reversetunnel when the cluster uses `separate` mode. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * add comments * move dial to lib/client/proxy/insecure --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][19] add `tsh scan keys` implementation (#44220) * [sec_scan][19] add `tsh scan keys` implementation This PR introduces the required code to transverse a directory(es), finding all the SSH private keys and report them back to the cluster using the device security enclave as authentication mechanism. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * handle code review * fix message * handle code review * fork ssh private keys * add skip dirs support * handle code review --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][22] add authorized keys reporter (#44523) * [sec_scan][22] add authorized keys reporter This PR introduces a SSH authorized keys reporter that monitors `/etc/passwd` file and all users' authorized_keys files and reports the findings back to teleport. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * handle comments * handle comments --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][24] extract AuthorizedKey's comment and type (#44643) This PR adds ability to extract the comment and key type from AuthorizedKeys files. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * fix api module * [sec_scan][27] add support for LDAP users and macOS (#45109) * [sec_scan][27] add support for LDAP users and macOS This PR extends support for authorized keys report for users managed by LDAP system and macOS targets. It leverages `getpwent` to read the system database files and retrieve the user properties. It doesn't use the `getpwent_r` because it's not available in macOS and because it's not (yet) standerdized > PLEASE NOTE: the `getpwent_r' function is not (yet) standardized. > The interface may change in later versions of this library. But > the interface is designed following the principals used for the > other reentrant functions so the chances are good this is what the > POSIX people would choose. Part of gravitational/access-graph#637 * handle comments * handle comments 2 * add comment --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> Co-authored-by: Alan Parra <alan.parra@goteleport.com>
github-merge-queue Bot
pushed a commit
that referenced
this pull request
Aug 13, 2024
* Add the device assertion protos (#43804) * Add the device assertion protos * Update generated protos * Add a client-side API to assert devices (#43890) * Add a client-side API to assert devices * Add a godoc to authnStreamAdapter * Define server-side device assertion interfaces (#44036) * Define server-side device assertion interfaces * Update proto comments * Update generated protos * [sec_scan][1] Add `teleport.access_graph.v1.SecretsScannerService` (#43462) This PR introduces the `teleport.access_graph.v1.SecretsScannerService`that will be used by Teleport SSH nodes to report `authorized_keys` and user's laptops to report secrets found on them. The `ReportAuthorizedKeys` uses node's TLS certs signed by HostCA for authentication while `ReportSecrets` leverages the device trust credentials (requires that the device is enrolled) to report secrets without requiring valid user credentials. handle Alan's feedback * [sec_scan][2] expose `ssh_scan_enabled` in `AccessGraphConfig` response (#43467) This PR exposes the configuration for nodes to be aware that they should report SSH Authorized keys to Teleport. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][3] add `PrivateKey`, `AuthorizedKey` and `Device` to Access Graph resources (#43468) This PR extends the Access Graph resources to be able include the newly added `teleport.access_graph.v1.PrivateKey`, `teleport.access_graph.v1.AuthorizedKey` and existing device trust information `teleport.devicetrust.v1.Device`. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * fix: fix `nextKey` values when using multiple prefixes (#43486) This PR makes `generic.Service` correctly implementing `List*` functions when multiple key prefixes are defined Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][5] add secrets backend service (#43543) * [sec_scan][5] add secrets backend service This PR implements the backend service to support storing `authorized_keys` and `private_keys` into Teleport backend. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * handle feedback * handle nits --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][6] add device events (#43905) This PR adds the ability to watch for events for `*devicepb.Device` objects. Backend storage representation of `devicepb.Device` is achieved using an internal representation that lives in `e/lib/devicetrust/storage` and whose logic is internal to the package. To be able to expose the unmarshal logic necessary for events to work, this PR exposes a registration hook that `e/lib/devicetrust/storage` function must call during initialization to register the unmarshal function. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][7] add authorizedKeys and privateKeys events support (#43906) This PR introduces the ability to watch for events related to `accessgraphsecretsv1pb.AuthorizedKey` and `accessgraphsecretsv1pb.PrivateKey` objects. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][9] add `access_graph_settings` protobuf (#44010) This PR adds the `clusterconfigpbv1.AccessGraphSettings` resource that will be used to control the secrets scanning definition of Teleport. This resource will be a singleton and the only goal is to carry some settings related to access graph because on the cloud, users don't have access to fileconf. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][10] add `AccessGraphSettingsUpdate` audit event (#44011) This PR adds the boilerplate code and proto definition for `AccessGraphSettingsUpdate` audit event. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][11] add `AccessGraphSettings` backend service (#44014) This PR adds the backend service to be able to create, update and retrieve access graph configurations from Teleport backend. This PR is part of gravitational/access-graph#637. * [sec_scan][12] add cache and events support for `AccessGraphSettings` (#44016) * [sec_scan][12] add cache and events support for `AccessGraphSettings` This PR adds the cache and events support for the new resource `AccessGraphSettings`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * add tests --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][13] add `AccessGraphSettings` gRPC implementation (#44021) This PR introduces the gRPC implementation for the CRUD operations related to `AccessGraphSettings`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][14] create `AccessGraphSettings` on first auth init (#44032) * [sec_scan][14] create `AccessGraphSettings` on first auth init This PR adds a init script that sets `AccessGraphSettings` into Teleport backend when auth first inits and there is no `AccessGraphSettings`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * remove iterations --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][15] add support for edits to `AccessGraphSettings` via `tctl` (#44055) This PR allows any cluster admin to edit `access_graph_settings` objects via `tctl`. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][16] add methods to store/retrieve device assertion functions (#44081) This PR adds methods to store/retrieve functions defined by different teleport services. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][17] add `AssertDevice` to `FakeDeviceService` (#44159) * [sec_scan][17] add `AssertDevice` to `FakeDeviceService` This PR introduces a `AssertDevice` logic into `FakeDeviceService` to authenticate devices during unit tests using device trust credentials. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * simplify assert tests * Update lib/devicetrust/assert/assert_test.go Co-authored-by: Alan Parra <alan.parra@goteleport.com> --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> Co-authored-by: Alan Parra <alan.parra@goteleport.com> * [sec_scan][20] add `ReportSecrets` forwarder to proxy's gRPC insecure server (#44324) * [sec_scan][20] add `ReportSecrets` forwarder to proxy's gRPC insecure server This PR implements a `ReportSecrets` forwarder from Proxy server to Auth server. The goal is to allow clients to hit the proxy insecure gRPC server (credentialless) and proxy will forward requests to the AuthServer on behalf of the client. This is required because the client doesn't have valid credentials and it wasn't possible for it to reach auth server via reversetunnel when the cluster uses `separate` mode. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * add comments * move dial to lib/client/proxy/insecure --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][19] add `tsh scan keys` implementation (#44220) * [sec_scan][19] add `tsh scan keys` implementation This PR introduces the required code to transverse a directory(es), finding all the SSH private keys and report them back to the cluster using the device security enclave as authentication mechanism. This PR is part of gravitational/access-graph#637. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * handle code review * fix message * handle code review * fork ssh private keys * add skip dirs support * handle code review --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][22] add authorized keys reporter (#44523) * [sec_scan][22] add authorized keys reporter This PR introduces a SSH authorized keys reporter that monitors `/etc/passwd` file and all users' authorized_keys files and reports the findings back to teleport. Part of gravitational/access-graph#637 Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * handle comments * handle comments --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * [sec_scan][24] extract AuthorizedKey's comment and type (#44643) This PR adds ability to extract the comment and key type from AuthorizedKeys files. Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> * update gomod * [sec_scan][27] add support for LDAP users and macOS (#45109) * [sec_scan][27] add support for LDAP users and macOS This PR extends support for authorized keys report for users managed by LDAP system and macOS targets. It leverages `getpwent` to read the system database files and retrieve the user properties. It doesn't use the `getpwent_r` because it's not available in macOS and because it's not (yet) standerdized > PLEASE NOTE: the `getpwent_r' function is not (yet) standardized. > The interface may change in later versions of this library. But > the interface is designed following the principals used for the > other reentrant functions so the chances are good this is what the > POSIX people would choose. Part of gravitational/access-graph#637 * handle comments * handle comments 2 * add comment --------- Signed-off-by: Tiago Silva <tiago.silva@goteleport.com> Co-authored-by: Alan Parra <alan.parra@goteleport.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds the boilerplate code and proto definition for
AccessGraphSettingsUpdateaudit event.This PR is part of https://github.com/gravitational/access-graph/issues/637.