-
Notifications
You must be signed in to change notification settings - Fork 300
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
fix(rbac): lowercase user and group entity references #1937
fix(rbac): lowercase user and group entity references #1937
Conversation
Changed Packages
|
844aca2
to
0706751
Compare
We will need to also lowercase users and groups in claims in conditional policies. |
@dzemanov I am not certain that we need to lowercase users and groups for conditional policy claims. I was testing a variety of scenarios and it seems like whether I used my GitHub username as is or all lowercase, the conditional policy would still work for me. Could you share an example of where it didn't work for you? |
Your current changes looks good to me, but I think you also need to handle upperCases for test cases:
|
0706751
to
daf4794
Compare
2024-12-02.12-25-33.mp4@PatAKnight it would be amazing if we don't have to lowercase users and groups for conditional policy claims. Demo for using lowercase as opposed to uppercase: |
daf4794
to
31da182
Compare
Yeah, let me try it again. I was using the GitHub auth provider with the |
de2e8db
to
0c9a136
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @dzemanov, thanks for the contribution, you'll need to add a change set so that these changes get released, details on that are here: https://github.com/backstage/community-plugins/blob/main/CONTRIBUTING.md#creating-changesets
Also left one small optional comment 👍
workspaces/rbac/plugins/rbac-backend/__fixtures__/data/invalid-csv/duplicate-policy.csv
Outdated
Show resolved
Hide resolved
Hi @AndrienkoAleksand, @divyanshiGupta, @PatAKnight, as owners of this plugin can you please review this PR? Once one of you have then I'm fine with hitting merge if you can't 👍 |
0a990a5
to
82a9d70
Compare
Waiting for the owners to review and approve 👍 |
82a9d70
to
76799b8
Compare
Waiting on #2166 to be merged first. |
76799b8
to
b93415f
Compare
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
b93415f
to
4968b28
Compare
workspaces/rbac/plugins/rbac-backend/src/file-permissions/lowercase-file-adapter.ts
Outdated
Show resolved
Hide resolved
Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> Co-authored-by: Oleksandr Andriienko <oandriie@redhat.com> Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tested, works like expected. Gread job, @dzemanov!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All requested changes were made, plugin owners have approved
Dismissing review as changeset was added
* Introduce LowercaseFileAdapter Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce transformPolicyGroupToLowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce transformRolesGroupToLowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Convert uppercase groups to lowecase in csv watcher Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Convert uppercase groups to lowercase in providers Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add v0 migration of users groups to lowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Update lowercase-file-adapter reference Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix prettier Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce lowercasing memberReferences in role endpoints Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Lowercase admins entityRef from config Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix uppercase role Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix delete of role user Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Catch invalid calls to enforcer delegate Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix return type of mock implementation Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add newline to duplicate-policy.csv Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add changeset Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Unify lowecasing Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> Co-authored-by: Oleksandr Andriienko <oandriie@redhat.com> Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> --------- Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> Co-authored-by: Oleksandr Andriienko <oandriie@redhat.com>
* Introduce LowercaseFileAdapter Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce transformPolicyGroupToLowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce transformRolesGroupToLowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Convert uppercase groups to lowecase in csv watcher Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Convert uppercase groups to lowercase in providers Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add v0 migration of users groups to lowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Update lowercase-file-adapter reference Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix prettier Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce lowercasing memberReferences in role endpoints Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Lowercase admins entityRef from config Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix uppercase role Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix delete of role user Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Catch invalid calls to enforcer delegate Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix return type of mock implementation Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add newline to duplicate-policy.csv Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add changeset Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Unify lowecasing Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> Co-authored-by: Oleksandr Andriienko <oandriie@redhat.com> Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> --------- Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> Co-authored-by: Oleksandr Andriienko <oandriie@redhat.com>
* Introduce LowercaseFileAdapter Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce transformPolicyGroupToLowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce transformRolesGroupToLowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Convert uppercase groups to lowecase in csv watcher Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Convert uppercase groups to lowercase in providers Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add v0 migration of users groups to lowercase Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Update lowercase-file-adapter reference Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix prettier Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Introduce lowercasing memberReferences in role endpoints Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Lowercase admins entityRef from config Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix uppercase role Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix delete of role user Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Catch invalid calls to enforcer delegate Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix return type of mock implementation Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add newline to duplicate-policy.csv Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Add changeset Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Unify lowecasing Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> Co-authored-by: Oleksandr Andriienko <oandriie@redhat.com> Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> --------- Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> Co-authored-by: Oleksandr Andriienko <oandriie@redhat.com>
Hey, I just made a Pull Request!
Roles and permissions are not applied correctly when users or groups contain uppercase.
Auth can return lowercased
sub
and lowercasedownershipEntityRefs
, which means we are not getting matches when comparing withcasbin_rule
v0
that has original references that could contain uppercase, or possibly in other places, like 1, 2Entity references are case insensitive.
Entity references are saved in
relations_table
in lowercase.This change:
casbin_rule
v0
conditions
Other possible solutions:
How to test
Login as a user with a username containing uppercase - in all example queries/data, please change
user:default/User
to your user.1. Add to Catalog locations a file with these users/groups
2. Test Config
You should be able to see RBAC page
3. Test API
Create role:
Create permissions:
You should be able to create and delete Catalog entities.
Update role:
DELETE your user from role:
4. Test csv
Create uppercase.csv:
Add to
app-config.yaml
:Confirm your User can delete and create entities.
You can add csv reload:
And change uppercase.csv to for example:
2. Test Migration
Run the old code to populate database with uppercase users/groups.
You can use csv file for this, for example:
Go back to this branch.
Change
knexfile.js
to your database, e.g:Apply migrations:
Verify
casbin_rule
v0
column has now lowercased users and groups, but roles stayed the same (e.g test-Delete)✔️ Checklist
Signed-off-by
line in the message. (more info)