Tuesday, 2022-08-23

opendevreviewYusuke Niimi proposed openstack/keystonemiddleware master: OAuth2.0 Client Credentials Grant Flow Support  https://review.opendev.org/c/openstack/keystonemiddleware/+/83073700:38
*** tkajinam|off is now known as tkajinam05:48
opendevreviewYusuke Niimi proposed openstack/keystonemiddleware master: OAuth2.0 Client Credentials Grant Flow Support  https://review.opendev.org/c/openstack/keystonemiddleware/+/83073709:42
*** dviroel is now known as dviroel}rover11:26
*** dviroel}rover is now known as dviroel|rover11:26
*** dasm|off is now known as dasm13:28
*** dviroel|rover is now known as dviroel|rover|lunch14:59
dmendiza[m]#startmeeting keystone15:01
opendevmeetMeeting started Tue Aug 23 15:01:07 2022 UTC and is due to finish in 60 minutes.  The chair is dmendiza[m]. Information about MeetBot at http://wiki.debian.org/MeetBot.15:01
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.15:01
opendevmeetThe meeting name has been set to 'keystone'15:01
dmendiza[m]#topic Roll Call 15:01
dmendiza[m]Courtesy ping for admiyo, bbobrov, crisloma, d34dh0r53, dpar, dstanek, hrybacki, knikolla, lbragstad, lwanderley, kmalloc, rodrigods, samueldmq, ruan_he, wxy, sonuk, vishakha, Ajay, rafaelwe, xek15:01
knikollao/15:01
xeko/15:02
d34dh0r53o/ meeting conflict so lurking15:02
h-asahinao/15:02
dmendiza[m]Hi everyone!15:02
dmendiza[m]Let's get started15:02
dmendiza[m]As usual the agenda is over here:15:02
dmendiza[m]#link https://etherpad.opendev.org/p/keystone-weekly-meeting15:02
dmendiza[m]#topic Review Past Meeting Action Items15:03
dmendiza[m]#link https://meetings.opendev.org/meetings/keystone/2022/keystone.2022-08-16-15.01.html15:03
dmendiza[m]We didn't have any15:03
dmendiza[m]Moving on ...15:03
dmendiza[m]#topic Liaison Updates15:03
dmendiza[m]Zed-3 milestone is next week: 15:04
dmendiza[m]#link https://releases.openstack.org/zed/schedule.html#z-315:04
dmendiza[m]We should definitely try to land all we can before then.15:05
dmendiza[m]Which is a nice segue into15:05
dmendiza[m]#topic OAuth 2.015:05
dmendiza[m]We should try to land the outstanding patches that have been in review for a while15:05
dmendiza[m]before Z-315:05
dmendiza[m]hopefully knikolla will be around for the reviewathon15:06
dmendiza[m]the last one was not very productive without him 😅15:06
dmendiza[m]h-asahina: any updates this week? 15:06
h-asahinaas dmendiza say, please kindly review the remaining patches :)15:07
knikollai will be around for the reviewathon15:07
knikollaand will try to catch up on everything i missed before then15:07
dmendiza[m]knikolla: awesome!15:07
dmendiza[m]I'll try to do some pre-reviewing before then15:07
h-asahinathanks. I'd really appreciate that.15:07
h-asahinaknikolla: if you have time today, i'd like to discuss my comments on the spec15:08
h-asahinahttps://review.opendev.org/c/openstack/keystone-specs/+/84376515:08
h-asahinahttps://review.opendev.org/c/openstack/keystone-specs/+/843765/comments/80f8ff28_abd7007815:09
h-asahinamight be better to paste the link of the comment.15:09
h-asahinai have two questionts as I wrote in the above comment: i) delegation of user's permission to OAuth2.0 client; ii) usage of the existing federation mapping API.15:11
knikollafor 1, we only have 2 mechanisms for only providing a subset of access. 15:11
knikollaapplication credentials and trusts15:11
knikollathis is not something that the credential api is able to provide and would need to be changed to offer that15:12
knikollafor 2, yes. that matches my thoughts. you'd register a federation mapping with your mapping rule and use it when authenticating. 15:13
h-asahinafor 2, I think we also have an option that writing mapping to keystone.conf15:14
h-asahinalike:  [oauth2]15:14
h-asahina dn_mapping_user_id=UID15:14
h-asahina dn_mapping_user_name=CN15:14
h-asahina dn_mapping_user_email=emailAddress15:14
h-asahina dn_mapping_user_domain_id=DC15:14
h-asahina dn_mapping_user_domain_name=O15:14
h-asahinathis must work15:15
knikollayes, however that type of configuration locks you into only being able to support one CA15:15
h-asahinaif we assume the different CA have different mapping rules, yes.15:16
h-asahinaif we use mapping API, we have to specify mapping_id to use in any case.15:17
h-asahinaso we have to specify a specific mapping_id in somewhere15:18
knikollawith mappings you'd have: one mapping rule, one identity provider (with the issuer url), and one federation mapping, mapping a rule with an idp15:19
knikollathis is what connects it together15:19
h-asahinaI see15:20
h-asahinait more flexible than directly writing the mappings in the .conf, like you said.15:20
knikollawe're already integrating keystone with openid connect, oauth2.0 and saml identity providers. I don't see why this should be different, except for providing the same mechanisms but protected from a cert via mTLS. 15:21
h-asahinabut I'm also concerned that user shouldn't have to have a permission to change this rule.15:21
knikollathis can only be changed from the administrator/operator15:22
knikollachanging rules requires admin15:22
h-asahinaif we use .conf, only the cloud admin who can ssh into host machine can change the config15:23
knikollai'm fairly sure you can currently authenticate using OAuth mTLS using federation, today. 15:23
knikollawithout any changes to keystone. 15:23
h-asahinayou meant, with mapping API?15:24
knikollayes. 15:24
h-asahinaI agree with that we can realize OAuth mtls by such way.15:25
h-asahinabut15:25
knikollawe already support authenticating via apache, apache supports authenticating via mTLS, we can give you a token based on the attributes that apache gives passing them through a mapping15:25
knikollathe only mechanism that is missing is tying a token to a cert. 15:25
h-asahinalike I said if we want to make this more secure, writing mapping to .conf can be an option15:26
knikollaonly a person with the global admin can change mapping rules15:26
knikollathis won't make it any more secure than that15:26
h-asahinanormally, the cloud admin and the admin user of keystone are different.15:27
h-asahinathe clould admin who build the openstack environment have stronger permission than the any users created by openstack.15:27
knikollabut anyone who has admin access to keystone can create all the users they want, so i don't see the added level of protection you're getting here15:28
h-asahinaokey. that's true. permission for changing mapping rules and that for creating users is the same things in terms of security level.15:29
h-asahinaindeed. I'm convinced. 15:30
h-asahinathanks. I need to clarify that our choice would be a better option than the others. that's why I asked. 15:31
knikollaI can try to build out a demo this week and see how far I can get with the current mapping mechanisms trying to authenticate with mTLS using OAuth in Keystone15:31
knikollaand you can tell me if that works for you or goes against your use case15:32
knikollafrom that, it shouldn't be hard to just add the thumbprint to tokens received via that type of authentication and add that extra check on the thumbprint15:32
h-asahinaawesome. thank you.15:33
h-asahinayeah, I also think it shouldn't be hard.15:33
dmendiza[m]👍️15:34
h-asahinaI'll recheck the spec and update if it's necessary15:34
h-asahinaah, sorry, for 115:34
h-asahinaif we want to delegate user's permission is there any option to realize that?15:35
knikollayes, i think you should look into trusts15:35
knikollai think they give you what you're looking for15:35
h-asahinaokey. I briefly checked it. certainly, it looks the solution.15:36
knikollawhen a user requests a cert to your CA, you can create a new user for the cert, delegate the roles on that project from the requesting user to the new user, and create a Cert for that user instead15:36
knikollatrusts even have an "impersonation" flag that makes it look like all operations from that user were done but the trustor15:38
h-asahinaI see. it looks enough. we originaly thought use the user's (truster) credentials when issuing the token for the client created by user.15:40
h-asahinabut looks the "trust" realize that in more natural way.15:40
knikollayeah, clients are just a slightly different type of user semantically15:41
knikollaunfortunately in keystone we can only deal with users at the moment, and not have special types :) 15:41
h-asahinagot it. whether using this feature as a fundamental requirement to use OAuth2.0 or not is another discussing point, but I think it's enough that we can realize delegation, for now.15:42
knikollayeah, i think it should work15:42
knikollaif there was more of us, i'd be more than happy to try to rethink new concepts and build clients/users/service account/vm account/etc into the APIs that keystone provides. 15:43
h-asahinaI eager that15:44
knikollabut then the rest of openstack would kill us, and still use v3 until the end of times15:44
knikollahaha15:44
h-asahinayeah, I know the current keystone isn't, and hard to change it.15:45
h-asahinaalright. my question was resolved. thank you very much knikolla :)15:45
knikollathank you :) 15:46
dmendiza[m]awesome, sounds like we've got a good path forward15:47
dmendiza[m]Anything else before we move on?15:47
h-asahinafrom me, no. it's okey.15:48
dmendiza[m]OK, lets see if I can cover some Secure RBAC in the rest of the time15:49
dmendiza[m]#topic Secure RBAC15:49
dmendiza[m]I was reviewing the latest changes to the community goal:15:49
dmendiza[m]#link https://governance.openstack.org/tc/goals/selected/consistent-and-secure-rbac.html15:49
dmendiza[m]Looks like Phase 1 changed for us to:15:49
dmendiza[m]> 1. Remove the scope string (system:all) from the policy rule check_str.15:49
dmendiza[m]> 2. Add the project in scope_type in every policy rule.15:49
dmendiza[m]For 1, I don't quite understand what "system:all" does in the policy rules?15:50
knikollagmann: ^^15:51
dmendiza[m]There's a note about it in the base policy:15:51
dmendiza[m]#link https://opendev.org/openstack/keystone/src/commit/1dd6993d7b9b647810e6f495b62c37627c6e8658/keystone/common/policies/base.py#L35-L4615:51
dmendiza[m]seems it's there to prevent situations where the new rules are more premissive15:52
gmanndmendiza[m]: knikolla: that was added to protect the project reader to behave as system reader when scope is disabled 15:52
gmannthat was needed until enforce_scope become true by default 15:52
dmendiza[m]Wouldn't that still be an issue if we remove it?15:53
dmendiza[m]Or should we default enforce_scope=True to avoid that issue?15:54
dmendiza[m]gmann: ^^15:55
gmannactually we are opening the policy for project scope too so it is not issue any more because with enforce_scope true or false, project reader should be able to access those15:55
gmannnew direction is, project and system reader both should have access. those are not system only things anymore15:56
knikollaAh right :)15:57
gmannmeans if anyone already or will try to access system reader API they should continue able to do that. and our legacy way with project token can also continue the access15:57
gmannwe want everything as project scoped in other services like nova etc but in keystone letting both token work 15:58
knikollaAnd for admin, the project level thing is manager. So scope is not an issue here either eventually.15:58
gmannyeah15:58
knikollaThanks gmann15:58
dmendiza[m]I see ...15:58
gmannnext week or sometime I should be able to push the change and you can verify how it looks like15:59
dmendiza[m]gmann: sounds good.15:59
dmendiza[m]Alrighty, y'all.  That's all the time we have scheduled for the meeting16:00
dmendiza[m]thanks for joining!16:00
dmendiza[m]#endmeering16:00
dmendiza[m]#endmeeting16:00
opendevmeetMeeting ended Tue Aug 23 16:00:23 2022 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)16:00
opendevmeetMinutes:        https://meetings.opendev.org/meetings/keystone/2022/keystone.2022-08-23-15.01.html16:00
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/keystone/2022/keystone.2022-08-23-15.01.txt16:00
opendevmeetLog:            https://meetings.opendev.org/meetings/keystone/2022/keystone.2022-08-23-15.01.log.html16:00
knikollaThanks dmendiza[m]16:00
*** dviroel|rover|lunch is now known as dviroel|rover16:27
*** dasm is now known as dasm|off22:29
*** dviroel|rover is now known as dviroel|out22:31

Generated by irclog2html.py 2.17.3 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!