Skip to content

Conversation

haydentherapper
Copy link
Contributor

@haydentherapper haydentherapper commented Sep 3, 2025

This adds rate limiting for read and write requests for tile-backed logs. This also restricts request sizes.

The defaults are reasonable, and variables have been provided to tweak rate limiting to meet deployment needs.

We've chosen to add rate limiting for the read path to prevent unlimited reads, which come with egress costs. The threshold is much higher than writes to support monitoring, and will be increased over time for the public deployment as write QPS increases.

Ref sigstore/rekor-tiles#354

Ref sigstore/rekor-tiles#355

#vc4a

Summary

Release Note

Documentation

@haydentherapper
Copy link
Contributor Author

Plan looks good: https://github.com/sigstore/public-good-instance/actions/runs/17448557776/job/49548568574?pr=3217

I think I've ironed out any issues. The main difference from what we've used in the past is that the compute bucket backend uses an "edge" armor policy.

Copy link
Member

@jku jku left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, no notes (I'm not an expert though)


match {
expr {
expression = "int(request.headers['content-length']) > 8388608"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should be sure to document this somewhere

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ack, will document this

}

advanced_options_config {
json_parsing = "STANDARD"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm. will this cover both HTTP and gRPC traffic? I don't think we want the firewall parsing gRPC traffic.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll add separate security policies for HTTP and gRPC to remove this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah actually i want one security policy for all write traffic. i'll dig into this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can include specific content types for when to parse the body. This should prevent gRPC traffic from being parsed.

}

advanced_options_config {
json_parsing = "STANDARD"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this needed for?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Armor will reject traffic that isn't valid JSON. It's an early check to keep CPU load down for requests that will never be valid. I'm creating separate security policies for http and grpc, since grpc won't be valid json.

This adds rate limiting for read and write requests for tile-backed
logs. This also restricts request sizes.

The defaults are reasonable, and variables have been provided to tweak
rate limiting to meet deployment needs.

We've chosen to add rate limiting for the read path to prevent unlimited
reads, which come with egress costs. The threshold is much higher than
writes to support monitoring, and will be increased over time for the
public deployment as write QPS increases.

Ref sigstore/rekor-tiles#354

Ref sigstore/rekor-tiles#355

Signed-off-by: Hayden <[email protected]>
Co-authored-by: Bob Callaway <[email protected]>
Signed-off-by: Hayden <[email protected]>
@haydentherapper haydentherapper merged commit f0051db into sigstore:main Sep 10, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants