forked from google/grr
-
Notifications
You must be signed in to change notification settings - Fork 0
Fork based Review PR - Feature/spanner #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
daschwanden
wants to merge
169
commits into
master
Choose a base branch
from
feature/spanner
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 54 commits
Commits
Show all changes
169 commits
Select commit
Hold shift + click to select a range
96a8e53
Initial commit
daschwanden d2f0ffe
First draft of GRR Datastore Spanner schema
daschwanden f5dd3c5
Drop in datastore stubs
daschwanden 8286b9b
Yara table tests passing
daschwanden b94a026
Adds blob_keys table
daschwanden 3ad2f76
Adds Artifacts table
daschwanden b0573a9
Adds HashBlobReferences table
daschwanden b7e3f4f
Adds SignedBinaries table
daschwanden d21378d
Adds SignedCommands table
daschwanden 5d76dca
Adds ApiAuditEntry table
daschwanden 67d2a51
EoD 20250528
daschwanden 4c9113d
Adds PubSub to Database wrapper
daschwanden fc32e13
Adds PubSub pull
daschwanden 6aff24b
Refactor RequestQueue class
daschwanden f874977
Adds MessageHandler read/write
daschwanden 9a16496
Adds MessageHandler lease mgmt
daschwanden 20fad7d
Adds Users table
daschwanden e1d267b
Adds Clients table
daschwanden c23ebc4
EoD 20250609
daschwanden de568f5
EoD 20250610
daschwanden ae87797
EoD 20250611
daschwanden 140488e
EoD 20250612
daschwanden 884ada8
Adds Paths table
daschwanden 5e3b14b
EoD 20250613
daschwanden f647151
EoD 20250614
daschwanden e1b33ae
Adds Hunts table
daschwanden 103dc35
EoD 20250615
daschwanden e416422
EoD 20250615
daschwanden 4a8ef98
EoD 20250615
daschwanden 304064f
Updates CronJobs table tests
daschwanden e438006
Adds time tests
daschwanden 1f81835
Updates Flows table tests
daschwanden 7112de3
EoD 20250618
daschwanden 25dd618
Updates FlowRequestProcessing and MessageHandler
daschwanden 25d8ee1
Clean up handlers
daschwanden 8971141
Adds Spanner config variables
daschwanden 06632a3
Clean up Spanner config
daschwanden 6ac79c7
Fix user notification encoding
daschwanden dd5e077
Make repo owner configurable for container image upload
daschwanden 740e4ef
Merge branch 'google:master' into feature/spanner
daschwanden f8f12bd
Fix testing compose manifest images
daschwanden 9e608ae
Propagate txn_tag
daschwanden 53a36c0
Propagate txn_tag
daschwanden 934ba71
Adds spanner emulator to test env
daschwanden af901a0
Update build.yml
daschwanden cc159ba
Update build steps with Spanner Instance creation
daschwanden 09df46d
Fix Spanner Env variable names
daschwanden bc72cbd
Run database removal with quiet flag
daschwanden 18506fe
Adds PROJECT_ID env var
daschwanden 8233c2b
Creates unique database name
daschwanden 0bc717f
Creates unique database name
daschwanden ecce62c
Creates unique database name
daschwanden 3bd6006
Reset the test db
daschwanden b5e4a45
Reset the test db
daschwanden 098cf51
Several cosmetic improvements
daschwanden 4d46101
Adds fixes to pass Spanner tests and installation instructions
daschwanden 2648089
Removes emulator test instructions
daschwanden 6734876
Update grr/server/grr_response_server/databases/spanner.py
daschwanden bcbb208
Update grr/server/grr_response_server/databases/spanner.py
daschwanden 6fcb253
Update grr/server/grr_response_server/databases/spanner_artifacts.py
daschwanden d4c6a59
Update grr/server/grr_response_server/databases/spanner_artifacts.py
daschwanden d04b82c
Update grr/server/grr_response_server/databases/spanner_artifacts.py
daschwanden 5c967a4
Update grr/server/grr_response_server/databases/spanner_yara_test.py
daschwanden 5c5b2dc
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 2611ad8
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden aff64ce
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden ef4c12d
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 1e256bc
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 540ef4d
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 1e45c72
Update grr/server/grr_response_server/databases/spanner_events.py
daschwanden 99e17ff
Update grr/server/grr_response_server/databases/spanner_paths.py
daschwanden 81ee1a7
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 840b849
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 704a5d4
Update grr/server/grr_response_server/databases/spanner_cron_jobs.py
daschwanden 60668c6
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 9cbe6e1
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden b02c6e2
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden d37bd6a
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 743105c
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden ebab5aa
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden c3c0fad
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 8a92ea7
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 6f3efaf
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 03db3b6
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 785168c
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 30a66dd
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 6ad847d
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 731ba1e
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 97b7b1a
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden fc66c22
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden ce13240
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 3dbec74
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 85a8878
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden b1d7cbd
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 428cd12
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 21cbfc7
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden e2f5cbb
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden ada8f5f
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden 71f8705
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden f35b1c8
Update grr/server/grr_response_server/databases/spanner_cron_jobs.py
daschwanden 51865aa
Update grr/server/grr_response_server/databases/spanner_cron_jobs.py
daschwanden b4efb65
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 3d3f7df
Update grr/server/grr_response_server/databases/db_blob_references_te…
daschwanden bbdff8b
Update grr/server/grr_response_server/databases/spanner_blob_referenc…
daschwanden 8815af2
Update grr/server/grr_response_server/databases/spanner_blob_referenc…
daschwanden 8550c9d
Update grr/server/grr_response_server/databases/spanner_blob_referenc…
daschwanden 09499b5
Update grr/server/grr_response_server/databases/spanner_blob_referenc…
daschwanden e19ed85
Update grr/server/grr_response_server/databases/spanner_blob_referenc…
daschwanden b746fd3
Update grr/server/grr_response_server/databases/spanner_artifacts_tes…
daschwanden a3cfda3
Update grr/server/grr_response_server/databases/spanner_test_lib.py
daschwanden 12021e3
Update grr/server/grr_response_server/databases/spanner_test_lib.py
daschwanden 7a6e7bb
Update grr/server/grr_response_server/databases/spanner_signed_comman…
daschwanden 752deb4
Update grr/server/grr_response_server/databases/spanner_signed_comman…
daschwanden f8b755d
Update grr/server/grr_response_server/databases/spanner_signed_comman…
daschwanden 62e0825
Update grr/server/grr_response_server/databases/spanner_blob_keys_tes…
daschwanden 60d5bf0
Update grr/server/grr_response_server/databases/spanner_blob_referenc…
daschwanden 646c11c
Update grr/server/grr_response_server/databases/spanner_clients_test.py
daschwanden 4293098
Update grr/server/grr_response_server/databases/spanner_cron_jobs_tes…
daschwanden b0586f5
Update grr/server/grr_response_server/databases/spanner_time_test.py
daschwanden 0f4fb60
Update grr/server/grr_response_server/databases/spanner_cron_jobs.py
daschwanden 8011d06
Update grr/server/grr_response_server/databases/spanner_cron_jobs.py
daschwanden 11f63c0
Update grr/server/grr_response_server/databases/spanner_cron_jobs.py
daschwanden d6ba41f
Update grr/server/grr_response_server/databases/spanner_events_test.py
daschwanden 84f19a7
Update grr/server/grr_response_server/databases/spanner_flows_large_t…
daschwanden a6ef39d
Update grr/server/grr_response_server/databases/spanner_flows_test.py
daschwanden fe4c478
Update grr/server/grr_response_server/databases/spanner_flows_test.py
daschwanden 487be8d
Update grr/server/grr_response_server/databases/spanner.py
daschwanden c8d7334
Update grr/server/grr_response_server/databases/spanner_yara.py
daschwanden 70dcdd2
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 8054c7f
Update grr/server/grr_response_server/databases/spanner_users.py
daschwanden db70413
Update grr/server/grr_response_server/databases/spanner_users.py
daschwanden f4ec7c4
Update grr/server/grr_response_server/databases/spanner_users_test.py
daschwanden 016490c
Update grr/server/grr_response_server/databases/spanner_blob_referenc…
daschwanden d98f50b
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 4072bd9
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 78cf38d
Update grr/server/grr_response_server/databases/spanner_hunts_test.py
daschwanden 42b409d
Update grr/server/grr_response_server/databases/spanner_signed_binari…
daschwanden 71ca032
Update grr/server/grr_response_server/databases/spanner_hunts.py
daschwanden cf6f18b
Update grr/server/grr_response_server/databases/spanner_paths.py
daschwanden 950ae59
Update grr/server/grr_response_server/databases/spanner_paths.py
daschwanden 9ccda4c
Update grr/server/grr_response_server/databases/spanner_users.py
daschwanden 44f4545
Update grr/server/grr_response_server/databases/spanner_paths.py
daschwanden 579aab9
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden 6ef67bd
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden 983120a
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden e01cec2
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden ed6d0b0
Update grr/server/grr_response_server/databases/spanner_utils_test.py
daschwanden 9ecf5b1
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 64859cd
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 3e9a812
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 1b39610
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden a55c9ec
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden ba61ddf
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden a18f044
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 67ace6a
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 798baef
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 89cfdeb
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 87afd04
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 0ce830e
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 79b3dd8
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden b4fff3f
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 7b02e87
Update grr/server/grr_response_server/databases/spanner_utils.py
daschwanden 474ef8b
Update grr/server/grr_response_server/databases/spanner_signed_binari…
daschwanden 41a495d
Update grr/server/grr_response_server/databases/spanner_signed_binari…
daschwanden 28f1e94
Update grr/server/grr_response_server/databases/spanner_paths_test.py
daschwanden 3336ee9
Update grr/server/grr_response_server/databases/spanner_message_handl…
daschwanden d60235f
Update grr/server/grr_response_server/databases/spanner_hunts.py
daschwanden b8f498a
Update grr/server/grr_response_server/databases/spanner_flows.py
daschwanden 993eb01
Update grr/server/grr_response_server/databases/spanner_clients.py
daschwanden File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,14 +1,14 @@ | ||
|
|
||
| services: | ||
| grr-admin-ui: | ||
| image: ghcr.io/google/grr:testing | ||
| image: ghcr.io/google/grr:test | ||
|
|
||
| grr-fleetspeak-frontend: | ||
| image: ghcr.io/google/grr:testing | ||
| image: ghcr.io/google/grr:test | ||
|
|
||
| grr-worker: | ||
| image: ghcr.io/google/grr:testing | ||
| image: ghcr.io/google/grr:test | ||
|
|
||
| grr-client: | ||
| image: ghcr.io/google/grr:testing | ||
| image: ghcr.io/google/grr:test | ||
| privileged: true |
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
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
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
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
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,82 @@ | ||
|
|
||
| from google.cloud.spanner import Client | ||
|
|
||
| from grr_response_core import config | ||
| from grr_response_core.lib import rdfvalue | ||
| from grr_response_server import threadpool | ||
| from grr_response_server.databases import db as db_module | ||
| from grr_response_server.databases import spanner_artifacts | ||
| from grr_response_server.databases import spanner_blob_keys | ||
| from grr_response_server.databases import spanner_blob_references | ||
| from grr_response_server.databases import spanner_clients | ||
| from grr_response_server.databases import spanner_cron_jobs | ||
| from grr_response_server.databases import spanner_events | ||
| from grr_response_server.databases import spanner_flows | ||
| from grr_response_server.databases import spanner_foreman_rules | ||
| from grr_response_server.databases import spanner_hunts | ||
| from grr_response_server.databases import spanner_paths | ||
| from grr_response_server.databases import spanner_signed_binaries | ||
| from grr_response_server.databases import spanner_signed_commands | ||
| from grr_response_server.databases import spanner_users | ||
| from grr_response_server.databases import spanner_utils | ||
| from grr_response_server.databases import spanner_yara | ||
| from grr_response_server.models import blobs as models_blobs | ||
| from grr_response_server.rdfvalues import objects as rdf_objects | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Where are these being used? |
||
|
|
||
| class SpannerDB( | ||
| spanner_artifacts.ArtifactsMixin, | ||
| spanner_blob_keys.BlobKeysMixin, | ||
| spanner_blob_references.BlobReferencesMixin, | ||
| spanner_clients.ClientsMixin, | ||
| spanner_cron_jobs.CronJobsMixin, | ||
| spanner_events.EventsMixin, | ||
| spanner_flows.FlowsMixin, | ||
| spanner_foreman_rules.ForemanRulesMixin, | ||
| spanner_hunts.HuntsMixin, | ||
| spanner_paths.PathsMixin, | ||
| spanner_signed_binaries.SignedBinariesMixin, | ||
| spanner_signed_commands.SignedCommandsMixin, | ||
| spanner_users.UsersMixin, | ||
| spanner_yara.YaraMixin, | ||
| db_module.Database, | ||
| ): | ||
| """A Spanner implementation of the GRR database.""" | ||
|
|
||
| def __init__(self, db: spanner_utils.Database) -> None: | ||
| """Initializes the database.""" | ||
| self.db = db | ||
| self._write_rows_batch_size = 10000 | ||
|
|
||
| self.handler_thread = None | ||
| self.handler_stop = True | ||
|
|
||
| self.flow_processing_request_handler_thread = None | ||
| self.flow_processing_request_handler_stop = None | ||
| self.flow_processing_request_handler_pool = threadpool.ThreadPool.Factory( | ||
| "spanner_flow_processing_pool", | ||
| min_threads=config.CONFIG["Spanner.flow_processing_threads_min"], | ||
| max_threads=config.CONFIG["Spanner.flow_processing_threads_max"], | ||
| ) | ||
|
|
||
| @classmethod | ||
| def FromConfig(cls) -> "Database": | ||
|
daschwanden marked this conversation as resolved.
Outdated
|
||
| """Creates a GRR database instance for Spanner path specified in the config. | ||
|
|
||
| Returns: | ||
| A GRR database instance. | ||
| """ | ||
| project_id = config.CONFIG["Spanner.project"] | ||
| spanner_client = Client(project_id) | ||
| spanner_instance = spanner_client.instance(config.CONFIG["Spanner.instance"]) | ||
| spanner_database = spanner_instance.database(config.CONFIG["Spanner.database"]) | ||
|
|
||
| return cls(spanner_utils.Database(spanner_database, project_id)) | ||
|
|
||
| def Now(self) -> rdfvalue.RDFDatetime: | ||
| """Retrieves current time as reported by the database.""" | ||
| (timestamp,) = self.db.QuerySingle("SELECT CURRENT_TIMESTAMP()") | ||
| return rdfvalue.RDFDatetime.FromDatetime(timestamp) | ||
|
|
||
| def MinTimestamp(self) -> rdfvalue.RDFDatetime: | ||
| """Returns minimal timestamp allowed by the DB.""" | ||
| return rdfvalue.RDFDatetime.FromSecondsSinceEpoch(0) | ||
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.