Skip to content

Add blog post: Kafka bucket notifications in Ceph RGW - Part 1 - #1183

Open
sujay-d07 wants to merge 1 commit into
ceph:mainfrom
sujay-d07:rgw-kafka-bucket-notification-blog-1
Open

sujay-d07 wants to merge 1 commit into
ceph:mainfrom
sujay-d07:rgw-kafka-bucket-notification-blog-1

Conversation

@sujay-d07

Copy link
Copy Markdown

Really excited to share Part 1 of my blog on Kafka Bucket Notifications in Ceph RGW! :)

Part 1 includes the plaintext, SASL_PLAINTEXT (PLAIN and SCRAM), SSL, SASL_SSL, and mTLS mechanisms.

Each section includes the commands needed to reproduce the setup and steps to verify that events actually make it to the Kafka broker.

@sujay-d07
sujay-d07 requested a review from a team as a code owner August 11, 2026 17:04

@anthonyeleven anthonyeleven left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Good stuff. Was AI used here?

Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
Comment thread src/en/news/blog/2026/kafka-bucket-notifications-part-1/index.md Outdated
@yuvalif

yuvalif commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

@sujay-d07

  • your audience are ceph users not developers. they dont build from source, use vstart etc.
  • the main issue that they faced is our lack of support of kafka security mechanism, not how to do the setup (though, keep the security conf bits)
  • please use more toned down language, it should read a as somewhat boring user docs rather than marketing material :-)

@anthonymicmidd

Copy link
Copy Markdown
Contributor

I would like to promote this blog on social media through the Ceph LinkedIn and Twitter accounts. I'll wait until the changes have been made.

@sujay-d07
sujay-d07 force-pushed the rgw-kafka-bucket-notification-blog-1 branch 2 times, most recently from b185b08 to 9c26fd4 Compare August 23, 2026 11:26
- "security"
---

Bucket notifications to a Kafka broker over plaintext have worked for a long time.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the whole paragraph is incorrect. we supported SASL over SSL.
so, user/password over encrypted and authenticated connection was supported.
mtls only adds client side (not user) authentication by the broker.

unsecured listener and no notifications at all.

That gap is now closed. RGW's Kafka endpoint supports SASL/PLAIN,
SASL/SCRAM-SHA-256 and SCRAM-SHA-512, one-way TLS, SASL over TLS, mutual TLS, and —

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

IIRC, SCRAM was also supported (but probably not tested)

| SCRAM | SASL_PLAINTEXT | 9095 | Identity, without sending the password |
| SSL | SSL | 9093 | The channel is encrypted |
| SASL_SSL | SASL_SSL | 9094 | Both: credentials inside TLS |
| mTLS | SSL + `client.auth=required` | 9096 | Both sides prove identity, no password |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the meaning of "identity" here an in the SASL related lines of the table is different.
SASL mecahnism allow the broker to know identity of the user (a person)
TLS allows the TCP server to know the identity of the TCP client (a machine)
(mTLS allow also for the inverse)

please use the correct terms. note that PLAIN SASL (user/password) can work over PLAINTEXT connection, TLS connection or mTLS connection.
and the same is true for SCRAM user identifications

Every section creates a bucket and attaches a topic to it, and the JSON differs only
in two names. This helper keeps the rest of the post shorter:

```bash

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

this section should be informational, not a toolset
please avoid bach functions, utilities etc.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the actual user may not use aws CLI at all (they can use java/ golang etc as client).
so, this section should provide a clear example to how they should use it in their system.
a bash function just obscures that

| ----------------------- | ------- | ----------------------------------------------- |
| `y-ca.crt` | RGW | CA certificate — the `ca-location` attribute |
| `server.keystore.jks` | Broker | Broker private key and signed certificate |
| `server.truststore.jks` | Broker | Trusts the client CA (needed for mTLS) |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

what is "Trusts" ?

An SNS topic on its own does nothing until a bucket points at it:

```bash
attach_topic test-bucket plaintext-notifications

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

what is attach_topic ?

- **`rgw_allow_notification_secrets_in_cleartext` is not set.** RGW rejects topic
credentials over a cleartext connection without it, so the SASL_PLAINTEXT sections
do not work.
- **The CA certificate or client key is not readable by `radosgw`.** The paths in the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

not sure it is just a matter of being readable.
the file's permision has to be set correctly (IIRC, setting to 777 still make it readable, but would fail since the permissions are too wide)


## Summary

| Mechanism | Encryption | Authentication | RGW topic attributes |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

the term "Authentication" here is misleading. both SSL and mTLS has authentication (one side, or both sides) but no user identification

the `kafka_security_test` marker, in
[`src/test/rgw/bucket_notification/`](https://github.com/ceph/ceph/tree/main/src/test/rgw/bucket_notification).

For a staged migration, start from a plaintext topic, confirm that events are

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

we already support SASL over SSL. just remove this section (lines 711 - 714)

@yuvalif

yuvalif commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

@sujay-d07 veside the comments the rest looks good (the majority of the technical content).
just verifying that this is tested?

Signed-off-by: sujay-d07 <sujaydongre07@gmail.com>
@sujay-d07
sujay-d07 force-pushed the rgw-kafka-bucket-notification-blog-1 branch from 9c26fd4 to dad4c55 Compare August 30, 2026 17:46
@anthonymicmidd

Copy link
Copy Markdown
Contributor

It would be great to get this blog series out before the GSoC showcase. Is there anything I can help with here? @sujay-d07 @yuvalif

@anthonyeleven anthonyeleven left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

AM: I think it’s ready?

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