Skip to content

docs for $GATEWAY_SECURITY_MODE #760

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

Open
wants to merge 37 commits into
base: console-1.35.0_gateway-3.10.0
Choose a base branch
from

Conversation

jpalmerr
Copy link
Contributor

@jpalmerr jpalmerr commented May 15, 2025

https://linear.app/conduktor/project/gateway-security-ux-7d62db5252bc/overview

https://linear.app/conduktor/issue/YSH-17/support-gateway-managed
https://linear.app/conduktor/issue/YSH-18/remove-usage-of-delegated-xxx-security-mode-from-code-base
https://linear.app/conduktor/issue/YSH-19/override-acl-enabled-to-true-when-isgatewaymanaged

Security Mode

The aim of these UX changes are to split the security protocol decision making into two steps. What is responsible for authentication? How will we be authenticating?
Previously both these questions were resolved by the GATEWAY_SECURITY_PROTOCOL. Instead, we set the who using GATEWAY_SECURITY_MODE and simplify the options for the how, which is still GATEWAY_SECURITY_PROTOCOL.

Therefore, our documentation should be pointing the new user towards using both variables as part of the recommended set up. Ideally, a new user won't have to encounter the terminology DELEGATED at all.

However, these changes are non breaking, we still support DELEGATED_XXX protocols, so it is important we:
a) state the changes begin from version 3.10.0
b) point existing users to a migration guide where they would have expected documentation of DELEGATED.

This is why we have lots of deprecation notices in this change.

Acl enabled

We want to migrate users off of setting this explicitly, as we want to decide this capability based upon the security mode

  • KAFKA_MANAGED -> acl enabled false
  • GATEWAY_MANAGED -> acl enabled true

However, since GATEWAY_SECURITY_MODE is an optional non breaking field, the same must be true of ACL_ENABLED.

Therefore, we must again
a) explain to new users on how this is automatically set
b) show existing users that it is deprecated, how it is still supported, and how to migrate

If the user attempts to set KAFKA_MANAGED security mode with acl enabled set to true, we will error with an appropriate message

Copy link

vercel bot commented May 15, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
conduktor-docs ✅ Ready (Inspect) Visit Preview Jun 3, 2025 9:44am

| `GATEWAY_AUTHENTICATION_CONNECTION_MAX_REAUTH_MS` | Force the client re-authentication after this amount of time. If set to 0, we never force the client to re-authenticate until the next connection | `0` |
| **Environment variable** | **Description** | **Default value** |
|---------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
| `GATEWAY_SECURITY_PROTOCOL` | The type of authentication clients should use to connect to Gateway. Valid values are: `PLAINTEXT`, `SASL_PLAINTEXT`, `SASL_SSL`, `SSL`, `DELEGATED_SASL_PLAINTEXT` and `DELEGATED_SASL_SSL`. | The default value depends on KAFKA_SECURITY_PROTOCOL. ![](images/gateway-security-protocol-default.png) |
Copy link
Contributor

@caoilte-conduktor caoilte-conduktor May 28, 2025

Choose a reason for hiding this comment

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

edited... agin. do we really have DELEGATED defaults... surely it will set GATEWAY_SECURITY_MODE etc instead?

Also. we should indicate that although valid DELEGATED protocols are deprecated and link to a guide for upgrading.

image

| **Environment variable** | **Description** | **Default value** |
|---------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
| `GATEWAY_SECURITY_PROTOCOL` | The type of authentication clients should use to connect to Gateway. Valid values are: `PLAINTEXT`, `SASL_PLAINTEXT`, `SASL_SSL`, `SSL`, `DELEGATED_SASL_PLAINTEXT` and `DELEGATED_SASL_SSL`. | The default value depends on KAFKA_SECURITY_PROTOCOL. ![](images/gateway-security-protocol-default.png) |
| `GATEWAY_SECURITY_MODE` | Define where authentication takes place, Gateway or Kafka. Valid values are: `GATEWAY_MANAGED`, `KAFKA_MANAGED`. Note that `SSL` and `PLAINTEXT` are not valid inputs in `KAFKA_MANAGED` mode and will be rejected. | If not provided, we infer based upon `GATEWAY_SECURITY_PROTOCOL` value. ![](images/gateway-security-managed-default.png) |
Copy link
Contributor

Choose a reason for hiding this comment

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

Note that SSL and PLAINTEXT are not valid inputs in KAFKA_MANAGED mode and will be rejected.

doesn't amke sense... also i think too much complexity for such a table. i think we should have a dedicated table explaining the valid combinations.

Comment on lines 27 to 36
| GATEWAY_SECURITY_MODE | GATEWAY_SECURITY_PROTOCOL | Previous version GATEWAY_SECURITY_PROTOCOL equivalent |
|-----------------------|---------------------------|--------------------------------------------------------|
| GATEWAY_MANAGED | SASL_PLAINTEXT | SASL_PLAINTEXT |
| GATEWAY_MANAGED | SASL_SSL | SASL_SSL |
| GATEWAY_MANAGED | SSL | SSL |
| GATEWAY_MANAGED | PLAINTEXT | PLAINTEXT |
| KAFKA_MANAGED | SASL_PLAINTEXT | DELEGATED_SASL_PLAINTEXT |
| KAFKA_MANAGED | SASL_SSL | DELEGATED_SASL_SSL |
| KAFKA_MANAGED | SSL | Invalid auth mode with Kafka. Will be rejected. |
| KAFKA_MANAGED | PLAINTEXT | Invalid auth mode with Kafka. Will be rejected. |
Copy link
Contributor

@caoilte-conduktor caoilte-conduktor May 28, 2025

Choose a reason for hiding this comment

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

this table should be in docs in two places.

  1. guide for new users
  2. guide for users migrating

suggest we link to both from here and in relevant sections of env variables table.

@jpalmerr
Copy link
Contributor Author

will tidy this up - lots has changed since I first updated it

@jpalmerr jpalmerr marked this pull request as ready for review May 28, 2025 13:11
Comment on lines +46 to +47
* **SASL_SSL**: Authentication from the client is mandatory and will be forwarded to the backend Kafka cluster for validation. All communication between the client and the Gateway broker is encrypted using TLS. The Gateway will intercept the SASL authentication exchange to detect authenticated principals.
All credentials are managed by your backend Kafka.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

There was no mention of SASL_SSL before.

  • There could have been a reason for this im unaware of
  • I could use a second opinion on this definition

@jpalmerr jpalmerr marked this pull request as ready for review June 3, 2025 09:50
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.

3 participants