| |||
Confidentiality Notice: This email, including any attachments, may contain confidential and privileged information for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure, or distribution is prohibited. If you are not the intended recipient, please contact the sender immediately and destroy all copies of this email. Thank you. This email has been sent in accordance with the European Union General Data Protection Regulation (EU GDPR).
--
You received this message because you are subscribed to the Google Groups "KrakenD Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to community+...@krakend.io.
To view this discussion on the web visit https://groups.google.com/a/krakend.io/d/msgid/community/2edb9dd6-d1be-4ace-8a9d-41294dcedacan%40krakend.io.
Hi David!
Thanks for reaching out through our community email list. I've just answered your previous email directly to your inbox, including it below:
----
Dear David,
Thank you for your interest in KrakenD. I'm happy to provide some insights into your queries.
Regarding API/Application Usage Control Per CustomerControl/Assessment for All Customers
- Throttling: KrakenD offers a per-client rate limiting feature, which allows you to control the number of requests a client can make to your API within a certain timeframe. This helps prevent any single client from overloading your system. You can learn more about this feature in our rate-limiting documentation.
- Metering: KrakenD integrates with a wide range of telemetry systems that can track and measure API usage. This allows you to monitor how your API is being used and make data-driven decisions. You can see the full list of available metrics and tracing exporters in our telemetry documentation.
- Authentication: KrakenD Enterprise Edition supports both API Key authentication and JWT-based authentication. This allows you to control access to your API on a per-client basis, ensuring that each client can only access the resources they are authorized to use. We support many Identity Providers, like Auth0, Keycloak, and Okta. You can learn more about this in our API Key authentication and JWT authentication documentation.
- Versioning: While KrakenD is agnostic to your versioning strategy, its ability to decouple your external API contract from your internal services implementations makes it a great tool for implementing a robust versioning strategy. You can learn more about this in our API Gateway Deployment Guide.
- Logging: KrakenD integrates with a variety of logging systems, allowing you to capture detailed logs of API usage. This can be invaluable for debugging, performance monitoring, and auditing purposes. You can find more details in our logging documentation.
- Auditing: KrakenD's extensive logging capabilities can be used in conjunction with external auditing tools to track and audit API usage. For instance, we offer an integration with ELK, which provides powerful search and visualization capabilities on top of your log data. You can learn more about this in our ELK integration documentation.
- Unifying Separate APIs into a Single Layer: This is one of the core features of KrakenD. It acts as an API Gateway, aggregating responses from multiple backend services into a single, unified API layer for the client. This allows you to provide a consistent, easy-to-use API to your clients, regardless of the complexity of your backend services.
I hope this information helps clarify the capabilities of KrakenD. However, I understand that these topics can be complex and might raise further questions. To ensure you have all the information you need, I would like to invite you to a one-on-one call where we can dive deeper into your specific needs and how KrakenD can meet them.
Please feel free to schedule a call with me at your earliest convenience using my availability calendar. I'm looking forward to our conversation and exploring how we can help you achieve your goals with KrakenD.
Best regards,
Confidentiality Notice: This email, including any attachments, may contain confidential and privileged information for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure, or distribution is prohibited. If you are not the intended recipient, please contact the sender immediately and destroy all copies of this email. Thank you. This email has been sent in accordance with the European Union General Data Protection Regulation (EU GDPR).
| |||
Confidentiality Notice: This email, including any attachments, may contain confidential and privileged information for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure, or distribution is prohibited. If you are not the intended recipient, please contact the sender immediately and destroy all copies of this email. Thank you. This email has been sent in accordance with the European Union General Data Protection Regulation (EU GDPR).
| |||
Confidentiality Notice: This email, including any attachments, may contain confidential and privileged information for the sole use of the intended recipient(s). Any unauthorized review, use, disclosure, or distribution is prohibited. If you are not the intended recipient, please contact the sender immediately and destroy all copies of this email. Thank you. This email has been sent in accordance with the European Union General Data Protection Regulation (EU GDPR).
I have an additional question about the flexibility of KrakenD's configuration. Can I utilize separate configuration files for individual users or customers? For instance, having "customerA.json" and "customerB.json" configuration files, and using environment variables to determine which config file to load?
Does this approach enables a multi-customer configuration setup without the need to duplicate endpoint listings for different users based on "strategy."?
It provides a more organized and manageable way to cater to distinct customer requirements while avoiding redundancy in the configuration.
Regarding the configuration, in "customerA.json," would you list the endpoints and extra_config just as you would in the KrakenD.json structure (Scope/Endpoint/Backend) or would it only contain environment variables for that specific customer?
However, instead of hardcoding values in the KrakenD.tmpl file, you would reference the environment variables related to Customer A for those fields.
For example (krakend.tmpl):
Is that correct?
Kind regards,Is there a mechanism to establish distinct rate limits for each customer? I'm uncertain how to approach this unless there's a provision within the flexible configuration to dynamically adjust customer-specific requirements.
While a straightforward approach like the one below does not work, is there an alternative approach to achieving per-endpoint customization?
I understand the code snippet below won't work, just an idea of what I'd like to achieve. Is there a way to achieve something like this below?
Hello Albert,
I might be inclined to explore the Enterprise plan if that's the case.
Regarding Dynamic Routing, let's consider a scenario where we have a shared endpoint, such as "/user/{id}", but distinct requirements for different customers. For instance, we aim to allow customer 1 to access this endpoint up to 5 times per minute, while customer 2 should have a limit of 2 times per minute.
In the context of Dynamic Routing, the question arises: how can we differentiate between these cases and route them accordingly?
I'm seeking to comprehend a situation in which two end users interact with the same endpoint but are directed differently based on their headers or other factors.
If you happen to have a code example illustrating this, I'd greatly appreciate it.
Thank you!
What prevents a user from simply appending to the API call command, such as using "curl -H 'X-Plan: gold' (api)" to bypass rate limits and gain higher access etc?
Is there a method to uniquely identify users based on their plan without allowing such appendages? One possibility is using a JWT claim field, not sure if that is something KrakenD could see. Could this approach be effective?
Is there a feature within the community edition that enables this type of authorization information or dynamic routing the only option for this which is enterprise edition?
Kind regards