-
Notifications
You must be signed in to change notification settings - Fork 39
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
chore: observability and security for HTTP gateway #1825
Merged
Merged
Conversation
This file contains 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
# Conflicts: # packages/dashmate/configs/getConfigFileMigrationsFactory.js
shumkov
commented
Apr 30, 2024
shumkov
changed the title
chore: observability and security for HTTP traffic
chore: observability and security for HTTP gateway
Apr 30, 2024
shumkov
commented
May 1, 2024
# Conflicts: # package.json # yarn.lock
…chore/dashmate/secure-api
lklimek
previously approved these changes
May 8, 2024
lklimek
approved these changes
May 8, 2024
QuantumExplorer
approved these changes
May 8, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving without review.
5 tasks
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.
Issue being fixed or feature implemented
Currently, to handle HTTP requests in Evonode we use outdated version of Envoy This version contains many security vulnerabilities and is not configured properly for being an edge proxy for all incoming HTTP traffic. To control and limit the load it should provide mechanisms to limit incoming requests. We don't have any visibility on HTTP traffic in general and specific requests to Drive and DAPI.
What was done?
platform.gateway.maxConnections
to limit max active connections to Gateway. If we close to the limit, we disable keep-alive, and stop accepting requests when we reach it.platform.gateway.maxHeapSizeInBytes
to release free memory and disable keep-alive when we close to limit and reject incoming connections when we reach it.platform.gateway.upstreams.*.maxRequest
to limit active requests to specific upstream (DAPI, Drive, etc)platform.gateway.metrics
to expose Envoy Prometheus metrics.platform.gateway.admin
to enable Envoy admin interface (must be enabled for metrics).platform.gateway.listeners.*.http2.maxConcurrentStreams
to limit max concurrent streams per incoming HTTP2 connection.platform.gateway.log.level
to define verbosity of Envoy application logs.platform.gateway.log.accessLogs
to define any number of access logs. Supported destinations arestdout
,stderr
andfile
. Supported formats aretext
orjson
. Default output templates are defined for each format and can be ovewritten for any specific access logs.platfrom.gateway.rateLimiter.metrics
to expose Rate limiter Prometheus metrics.platform.drive.abci.metrics
to expose Drive ABCI Prometheus metrics.dapi_tx_filter_stream
docker compose service renamed todapi_core_streams
since it expose multiple streaming endpoints.getProofs
since this is internal endpoint between DAPI and Drive and can be misused to make a huge load on the system./stats/prometheus
How Has This Been Tested?
Multiple testing scenarios to verify each configuration on the ouzo devnet with metric visualisations in Grafana
Breaking Changes
None
Checklist:
For repository code-owners and collaborators only