vmware / vmware/pinniped

[stub] The concierge should automatically filter large group sets based on RBAC

Open
#559 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement priority/undecided
Dominant language
Go
Stars
739
Forks
85
Avg merge
5d 5h
Merged PRs (30d)
1

Description

Related to #557 and #558

Client certs max out at roughly 50k characters worth of group names:

  1. 500 groups with 100 characters each
  2. 1,000 groups with 50 characters each

We have no choice but to encode groups into the client cert itself, meaning the best we can do is try to filter down the group list somehow. One automatic approach would be to filter down based on RBAC, but this could be problematic for admission plugins that have special behavior based on group membership. We could be smart about how we filter down, i.e. by trying our best to include every RBAC referenced group + every "short" group until we reach the 50k character limit. We could also not start filtering until we hit like 10k group characters.


Raw data:

Success with: 57,395 characters for 571 groups (most of which were 106 characters each),
84,437 byte PEM client cert - ~63,328 bytes decoded - successfully obtained via TCR

Even at 2,500+ groups with 100+ characters each (413,406 byte PEM client cert successfully obtained via TCR),
everything other than using the cert against KAS (i.e. Kube secret storage, supervisor OIDC, TCR, etc) worked just fine

// probably caused by this go std lib TLS limitation
maxHandshake       = 65536        // maximum handshake we support (protocol max is 16 MB)

sessions.yaml

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No implementation file or test is named. Start by reviewing related issues #557 and #558 and the sessions.yaml data, then identify how group claims enter client certificates and how RBAC-referenced groups are represented. Done would require an agreed filtering policy and tests for the 50k-character boundary, but the issue does not define that policy.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
authentication, authorization, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.