Data Prepper supports push-based sources which open networking ports. This page documents security requirements for creating these sources.
For consistency, push-based sources should use Armeria.
Additionally, they should use code for common server creation. For example, using the CreateServer class to create a server.
Push-based sources mush use the existing authentication plugins for Armeria.
Endpoints must enable SSL by default. They should log a warning if SSL is disabled.
All push-based sources must include automated tests for:
- Unauthenticated Access: Verify that requests without credentials are rejected with HTTP 401
- Unauthorized Access: Verify that requests with valid credentials but insufficient permissions are rejected with HTTP 403
- Authenticated Access: Verify that properly authenticated requests succeed
Additionally, the test must cover both gRPC and HTTP access.
Some examples:
All pull requests for push-based sources should include evaluation against this checklist.
- Does this PR add or modify an HTTP endpoint?
- Is the source using an existing web framework within Data Prepper? If not, why not?
- Does the source support Data Prepper authentication plugins?
- Are there tests for unauthenticated access rejection?
- Are there tests for unauthorized access rejection?
- Are there tests for authenticated access?
- Do the tests cover all supported protocols (e.g. HTTP and gRPC)?