-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
security: document threat model. #8906
Conversation
Describe core/extension and data/control plane distinctions and our current posture around these. Signed-off-by: Harvey Tuch <htuch@google.com>
@envoyproxy/security-team for consideration. |
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.
Awesome, LGTM w/ some small comments.
/wait
Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Harvey Tuch <htuch@google.com>
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.
In general, +1 on this approach. With the bazel tagging can we feed that into the docs somehow? WDYT? Amazing stuff.
Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Harvey Tuch <htuch@google.com>
This is now updated with the plumbing for generating docs from |
Signed-off-by: Harvey Tuch <htuch@google.com>
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.
Super amazing work. So amazing! Flushing out some comments now before I run to a meeting. Will look at the rendered docs later.
name = "config", | ||
srcs = ["config.cc"], | ||
hdrs = ["config.h"], | ||
security_posture = "unknown", |
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.
@lizan @PiotrSikora I think Istio uses this?
source/extensions/filters/network/thrift_proxy/filters/ratelimit/BUILD
Outdated
Show resolved
Hide resolved
@htuch looking at the rendered docs can you alpha sort the output of each security posture section? |
Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Harvey Tuch <htuch@google.com>
Signed-off-by: Harvey Tuch <htuch@google.com>
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.
Some random notes from looking at the docs:
- Is
envoy.transport_sockets.alts
really robust to downstream and upstream? How have we validated that? - kafka/xray show up on the threat model page with no links. Can they be excluded?
- On the detailed page for each extension, can the thread model and production readiness level be somehow called out via an attention box or similar?
- (Wish) on the threat model page, can it say something like "(alpha)" if an extension is alpha quality?
- I think all the tracers need to be robust to downstream similar to loggers?
Amazing stuff.
/wait
@@ -69,6 +69,7 @@ envoy_cc_extension( | |||
srcs = ["filter_factory.cc"], | |||
hdrs = ["filter_factory.h"], | |||
security_posture = "robust_to_untrusted_downstream", | |||
status = "alpha", |
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.
@marcomagdy @easy are you willing to call the X-ray and OpenCensus tracers (respectively) as hardened to edge traffic (i.e. untrusted downstreams)? |
@mattklein123 re: the ALTS robustness, my assumption is that any transport socket is largely symmetrical, as (with some minor configuration differences usually) it can be dropped into downstream or upstream configuration. |
@PiotrSikora @lizan @qiwzhang can you folks please address @mattklein123 's questions in the threads above? We'd like to land the threat modeling for Envoy. |
Signed-off-by: Harvey Tuch <htuch@google.com>
@htuch I think that makes sense for X-Ray since it consumes HTTP headers only which have gone through Envoy's core already. |
Signed-off-by: Harvey Tuch <htuch@google.com>
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.
Awesome work, let's ship and iterate.
Add an explicit threat model to the end user facing docs, link to this from SECURITY.md
Switch all Envoy extensions to use a new macro
envoy_cc_extension
, mandating that extensions declare a security posture. Extensions can also optionally declarealpha
orwip
status.Tag all documentation sites with their well-known Envoy names.
Introduce tooling to automagically populate a list of known trusted/untrusted extensions in the threat model docs.
Generate API docs for extensions that depend on
google.protobuf.Empty
. This pattern is deprecated as per Per-extension empty message configs #8933, but we need these for tooling support meanwhile.This work was motivated by oss-fuzz issue https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=18370
Signed-off-by: Harvey Tuch htuch@google.com