Skip to content

[UX-838] Add rpk support for local gbac#29738

Merged
graham-rp merged 11 commits into
redpanda-data:devfrom
graham-rp:UX-838/local-gbac
Mar 12, 2026
Merged

[UX-838] Add rpk support for local gbac#29738
graham-rp merged 11 commits into
redpanda-data:devfrom
graham-rp:UX-838/local-gbac

Conversation

@graham-rp

@graham-rp graham-rp commented Feb 27, 2026

Copy link
Copy Markdown
Contributor

Backports Required

  • none - not a bug fix
  • none - this is a backport
  • none - issue does not exist in previous branches
  • none - papercut/not impactful enough to backport
  • v25.3.x
  • v25.2.x
  • v25.1.x

Release Notes

  • Adds rpk security group subcommands

Features

Adds the following commands to rpk security group

  • rpk security group list
  • rpk security group describe <group>
  • rpk security group assign <group> --role <role>
  • rpk security group unassign <group> --role <role>

Comment thread src/go/rpk/pkg/adminapi/version.go
Comment thread src/go/rpk/pkg/cli/security/group/assign.go
Comment on lines +27 to +30
Use: "assign [GROUP] --role [ROLE]",
Short: "Assign an IDP group to a Redpanda role",
Long: `Assign an IDP group to a Redpanda role.

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.

Why a new command group assign --role instead of using rpk security role assign --group <group>? Both commands (group assign and role assign) update role memberships.

Don't get me wrong, I like that it is all within the same command space, so it is self-contained and easily discoverable, but perhaps we should add the --group flag to role assign for those who are already accustomed to the role command space

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

good call - it's a little weird to have users and groups be assigned from different places

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 can have both, so people don't have to run between commands and both call the same underlying method.

We do it with rpk cloud cluster select and rpk profile create --from-cloud, they are technically an alias, but they exist for discoverability

Comment thread src/go/rpk/pkg/cli/security/group/assign.go Outdated
out.Die("rpk security group is not yet available in Redpanda Cloud")
}

groupName := args[0]

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.

Do we expect users to assign multiple roles to a single group? Or multiple groups with the same role?

This is to understand if the input role flag should accept a comma-separated list of roles, and we batch update the group OR allow multiple groups in the input and assign the same role to all of them.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I don't know if we have great research here, but I'd think one role to multiple groups (like principals) is probably the most likely case.

Comment thread src/go/rpk/pkg/cli/security/group/assign.go Outdated
cmd := &cobra.Command{
Use: "describe [GROUP]",
Aliases: []string{"info"},
Short: "Describe the roles assigned to an IDP group",

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.

Doc question, in group assign we have

Short: "Assign an IDP group to a Redpanda role",

And here

 roles assigned to an IDP group

Should we standardize and say that we assign roles to groups? Also, should we use 'Redpanda roles' in both places?

@graham-rp graham-rp Mar 3, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

definitely with you on Redpanda roles, and I can make it uniform (groups assigned to a role?), but I think it's really a bidirectional thing, right?

edit: the more I try to think about wording, the more I'm convinced it's bidirectional. Do you have any ideas on the best way to get this across?

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.

I would just say in the Short form: Describe the IDP Group.

In the long form, I would mention that we are describing the configuration between roles and IDP groups within Redpanda.

Comment thread src/go/rpk/pkg/cli/security/group/describe.go
Comment thread src/go/rpk/pkg/cli/security/group/list.go Outdated
Comment thread src/go/rpk/pkg/cli/security/group/list.go Outdated
@graham-rp graham-rp force-pushed the UX-838/local-gbac branch 5 times, most recently from c5ad0fe to 96f244c Compare March 3, 2026 20:19
@graham-rp graham-rp requested a review from r-vasquez March 4, 2026 15:06
@graham-rp graham-rp force-pushed the UX-838/local-gbac branch from 1881887 to 8feaac6 Compare March 9, 2026 18:46
@graham-rp graham-rp marked this pull request as ready for review March 9, 2026 19:03
@vbotbuildovich

vbotbuildovich commented Mar 9, 2026

Copy link
Copy Markdown
Collaborator

CI test results

test results on build#81506
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
CloudTopicsL0GCEpochLagTest test_epoch_lag_and_catchup {"cloud_storage_type": 1} integration https://buildkite.com/redpanda/redpanda/builds/81506#019cd407-264c-42a5-b3bd-475edc7d2424 FLAKY 19/21 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0094, p0=0.1727, reject_threshold=0.0100. adj_baseline=0.1000, p1=0.3917, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=CloudTopicsL0GCEpochLagTest&test_method=test_epoch_lag_and_catchup
test results on build#81626
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
CloudTopicsL0GCNodeFailureTest test_node_failure_mid_gc {"cloud_storage_type": 2} integration https://buildkite.com/redpanda/redpanda/builds/81626#019cddc0-178a-4038-a310-8f1d55f7371c FLAKY 10/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0389, p0=1.0000, reject_threshold=0.0100. adj_baseline=0.1123, p1=0.3038, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=CloudTopicsL0GCNodeFailureTest&test_method=test_node_failure_mid_gc
CloudTopicsL0GCNodeFailureTest test_node_failure_mid_gc {"cloud_storage_type": 1} integration https://buildkite.com/redpanda/redpanda/builds/81626#019cddbe-4f83-4115-a6ab-e4290843affa FLAKY 10/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0389, p0=1.0000, reject_threshold=0.0100. adj_baseline=0.1123, p1=0.3038, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=CloudTopicsL0GCNodeFailureTest&test_method=test_node_failure_mid_gc
QuotaManagementUpgradeTest test_upgrade null integration https://buildkite.com/redpanda/redpanda/builds/81626#019cddc0-178a-45cc-8848-5b7a1650e412 FLAKY 10/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0385, p0=1.0000, reject_threshold=0.0100. adj_baseline=0.1112, p1=0.3075, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=QuotaManagementUpgradeTest&test_method=test_upgrade
VerifyConsumerOffsetsThruUpgrades test_consumer_group_offsets {"versions_to_upgrade": 1} integration https://buildkite.com/redpanda/redpanda/builds/81626#019cddc0-1787-4d57-ad8d-5e22477bcea9 FLAKY 10/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0058, p0=1.0000, reject_threshold=0.0100. adj_baseline=0.1000, p1=0.3487, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=VerifyConsumerOffsetsThruUpgrades&test_method=test_consumer_group_offsets
TxAtomicProduceConsumeTest test_basic_tx_consumer_transform_produce {"with_failures": true} integration https://buildkite.com/redpanda/redpanda/builds/81626#019cddbe-4f82-436a-a2d5-e3b25fe93ffc FLAKY 10/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0052, p0=1.0000, reject_threshold=0.0100. adj_baseline=0.1000, p1=0.3487, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=TxAtomicProduceConsumeTest&test_method=test_basic_tx_consumer_transform_produce

r-vasquez
r-vasquez previously approved these changes Mar 11, 2026
@graham-rp graham-rp merged commit 33de8c0 into redpanda-data:dev Mar 12, 2026
24 of 28 checks passed

@dotnwat dotnwat left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

@graham-rp

Copy link
Copy Markdown
Contributor Author

Please try to keep the git commit history clean

https://github.com/redpanda-data/redpanda/blob/dev/CONTRIBUTING.md#commit-history

ah! blanked on this one, sorry!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants