Skip to content

docs: document required ACLs for the Redpanda Migrator user#451

Merged
Feediver1 merged 2 commits into
mainfrom
docs/migrator-acl-requirements
Jun 25, 2026
Merged

docs: document required ACLs for the Redpanda Migrator user#451
Feediver1 merged 2 commits into
mainfrom
docs/migrator-acl-requirements

Conversation

@twmb

@twmb twmb commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

What

Documents the Kafka ACLs the Redpanda Migrator user needs on the source and destination clusters. Adds a Required permissions section to the migrator cookbook (source/destination ACL tables + least-privilege rpk examples) and references it from the redpanda_migrator input and output component pages.

Why

The migrator reads each source topic's configuration via a DescribeConfigs request so it can recreate the topic on the destination, which requires the DESCRIBE_CONFIGS operation on the topic. A consumer ACL (READ) implicitly grants DESCRIBE but not DESCRIBE_CONFIGS, so a consumer-only source principal consumes messages successfully but then fails topic creation with TOPIC_AUTHORIZATION_FAILED against the source cluster. These ACL requirements were previously undocumented.

Verification

The ACL set is derived from the migrator's admin calls (internal/impl/redpanda/migrator/migrator_topic.go and migrator_groups.go in redpanda-data/connect) and cross-checked against rpk security acl --help-operations. Feature gating reflects the defaults: consumer group offset migration is on by default (consumer_groups.enabled); ACL migration (sync_topic_acls) is opt-in.

🤖 Generated with Claude Code

The migrator reads each source topic's configuration via a DescribeConfigs
request so it can recreate the topic on the destination, which requires the
DESCRIBE_CONFIGS operation on the topic. A consumer ACL (READ) implicitly
grants DESCRIBE but not DESCRIBE_CONFIGS, so a consumer-only source principal
consumes messages but then fails topic creation with
TOPIC_AUTHORIZATION_FAILED against the source cluster.

Add a "Required permissions" section to the migrator cookbook with
source/destination ACL tables and least-privilege rpk examples, and reference
it from the redpanda_migrator input and output component pages. The ACL set is
derived from the migrator's admin calls and cross-checked against
`rpk security acl --help-operations`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@twmb twmb requested a review from a team as a code owner June 25, 2026 18:41
@netlify

netlify Bot commented Jun 25, 2026

Copy link
Copy Markdown

Deploy Preview for redpanda-connect ready!

Name Link
🔨 Latest commit 1c0de62
🔍 Latest deploy log https://app.netlify.com/projects/redpanda-connect/deploys/6a3d817b3f7642000733b9e7
😎 Deploy Preview https://deploy-preview-451--redpanda-connect.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 281ded96-37d4-457a-a061-5cd391167711

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR updates Redpanda Migrator documentation to describe ACL requirements for source and destination clusters. It adds a new permissions section in the cookbook, including the DESCRIBE_CONFIGS caveat for topic creation and the conditional permissions for consumer-group migration and ACL synchronization. The input and output component pages also gain requirement notes and references to the permissions documentation.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • mmatczuk
  • JakeSCahill
  • Jeffail
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: documenting required ACLs for the Redpanda Migrator user.
Description check ✅ Passed The description matches the changeset and explains the new ACL documentation and cross-references.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/migrator-acl-requirements

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/components/pages/outputs/redpanda_migrator.adoc`:
- Around line 45-48: The requirements text mixes destination-principal ACLs with
the source-topic DESCRIBE_CONFIGS caveat, so separate them in
redpanda_migrator.adoc. Keep the destination summary focused on the output
principal’s needed permissions (CREATE, WRITE, ALTER, DESCRIBE_CONFIGS, consumer
group READ, cluster ALTER), and move the source-side DESCRIBE_CONFIGS
requirement for reading topic configs into the cookbook reference or a dedicated
source-side note. Use the existing “Requirements” section and the xref to
required permissions to keep the scoping clear.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 11d4cccf-5454-4d98-8a89-0ac9e21ba886

📥 Commits

Reviewing files that changed from the base of the PR and between 5ef69c0 and f49874b.

📒 Files selected for processing (3)
  • modules/components/pages/inputs/redpanda_migrator.adoc
  • modules/components/pages/outputs/redpanda_migrator.adoc
  • modules/cookbooks/pages/redpanda_migrator.adoc

Comment thread modules/components/pages/outputs/redpanda_migrator.adoc

@Feediver1 Feediver1 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.

PR Review (final-pass against docs-team-standards)

Files reviewed: 3 .adoc files (cookbook + input/output component pages, ~103 additions)
Overall assessment: Strong, source-verified addition by the SME that fills a real gap. The new cookbook section is well-structured (tables + least-privilege rpk examples + a clear error-log explanation). One valid CodeRabbit clarity point on the output page, one style nit, and a minor cross-repo reconciliation with the companion docs PR.

Critical issues (must fix)

None. The xref:cookbooks:redpanda_migrator.adoc#required-permissions[...] links from both the input and output pages resolve — the [#required-permissions] anchor exists at cookbook line 368. Code blocks have language specifiers ([,text], [,bash]), tables are well-formed, terminology is correct.

Suggestions (should consider)

  1. [outputs/redpanda_migrator.adoc:47] Em dash — the style guide disallows them: "...requires DESCRIBE_CONFIGS on the source topics — a consumer-only ACL is not sufficient." Replace with a colon, period, or "; ".

  2. [outputs/redpanda_migrator.adoc:47] (aligns with CodeRabbit) The destination "Requirements" paragraph folds in a source-topic DESCRIBE_CONFIGS caveat, which blurs which principal needs which ACL. The source requirement is already documented on the input page and in the cookbook. Consider scoping this section to the destination principal and letting the cookbook link carry the source detail.

  3. [inputs vs outputs pages] Structural asymmetry: the input page adds the caveat as a bullet inside an existing requirements list, while the output page introduces a new == Requirements H2. Minor — consider matching the two for consistency.

Impact on other files

  • redpanda-data/docs#1770 (companion, different repo): worth reconciling the consumer-group ACLs. #1770's summary lists target consumer groups as CREATE/READ, while this PR's destination table lists group READ only (for committing translated offsets). This PR is the more granular, source-derived version; confirm the #1770 summary doesn't imply a group CREATE that isn't actually required.
  • nav.adoc: No change needed — cookbook page already in nav (nav.adoc:409); new section, not a new page.
  • What's New: No entry needed — documents existing migrator behavior, not a new feature.
  • Inbound xrefs: Several pages xref the cookbook (migration guides, whats-new); all still valid.

CodeRabbit findings worth considering

  1. [outputs/redpanda_migrator.adoc:48] "Keep the source-side caveat separate from the destination summary" — valid. Captured as suggestion #2; the destination note should stay scoped to the output principal.

What works well

  • Source-verified: ACL set derived from the migrator's admin calls (migrator_topic.go, migrator_groups.go) and cross-checked against rpk security acl --help-operations.
  • Excellent troubleshooting touch: shows the actual TOPIC_AUTHORIZATION_FAILED error and explains the counter-intuitive part (the failure is a DescribeConfigs read against the source, despite "create topic" wording).
  • Tables document operation and purpose, and note feature-gating (consumer_groups.enabled default-on, sync_topic_acls opt-in).
  • Least-privilege rpk examples with inline comments make the ACLs directly actionable.

🤖 Generated with Claude Code

Comment thread modules/components/pages/outputs/redpanda_migrator.adoc Outdated

@Feediver1 Feediver1 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.

lgtm

@Feediver1 Feediver1 merged commit 694e7b5 into main Jun 25, 2026
5 checks passed
@Feediver1 Feediver1 deleted the docs/migrator-acl-requirements branch June 25, 2026 19:34
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.

2 participants