<div dir="ltr"><div dir="ltr">Hey Colleen,<div><br></div><div>>This sounds like it is based on the customizations done at Oath, which to my recollection did not use the actual federation implementation in keystone due to its reliance on Athenz (I think?) as an identity manager. Something similar can be accomplished in standard keystone with the mapping API in keystone which can cause dynamic generation of a shadow user, project and role assignments.</div><div><br></div><div>You're correct, this was more about the general design of asymmetrical token based authentication rather that our exact implementation with Athenz. We didn't use the shadow users because Athenz authentication in our implementation is done via an 'ntoken'  which is Athenz' older method for identification, so it was it more straightforward for us to resurrect the PKI driver. The new way is via mTLS, where the user can identify themselves via a client cert. I imagine we'll need to move our implementation to use shadow users as a part of that change.</div><div><br></div><div>>We have historically pushed back hard against allowing setting a project ID via the API, though I can see predictable-but-not-settable as less problematic. </div><div><br></div><div>Yup, predictable-but-not-settable is what we need. Basically as long as the uuid is a hash of the string, we're good. I definitely don't want to be able to set a user ID or project ID via API, because of the security and operability problems that could arise. In my mind this would just be a config setting.</div><div><br></div><div>>One of the use cases from the past was being able to use the same token in different regions, which is problematic from a security perspective. Is that that idea here? Or could someone provide more details on why this is needed?</div><div><br></div><div>Well, sorta. As far as we're concerned you can get authenticate to keystone in each region independently using your credential from the IdP. Our use cases are more about simplifying federation of other systems, like Glance. Say I create an image and a member list for that image. I'd like to be able to copy that image <i>and</i> all of its metadata straight across to another cluster and have things Just Work without needing to look up and resolve the new UUIDs on the new cluster. </div><div><br></div><div>However, for deployers who wish to use Keystone as their IdP, then in that case they'll need to use that keystone credential to establish a credential in the keystone cluster in that region.</div><div><br></div><div>-James</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Sep 26, 2018 at 2:10 AM Colleen Murphy <<a href="mailto:colleen@gazlene.net">colleen@gazlene.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks for the summary, Ildiko. I have some questions inline.<br>
<br>
On Tue, Sep 25, 2018, at 11:23 AM, Ildiko Vancsa wrote:<br>
<br>
<snipped><br>
<br>
> <br>
> We agreed to prefer federation for Keystone and came up with two work <br>
> items to cover missing functionality:<br>
> <br>
> * Keystone to trust a token from an ID Provider master and when the auth <br>
> method is called, perform an idempotent creation of the user, project <br>
> and role assignments according to the assertions made in the token<br>
<br>
This sounds like it is based on the customizations done at Oath, which to my recollection did not use the actual federation implementation in keystone due to its reliance on Athenz (I think?) as an identity manager. Something similar can be accomplished in standard keystone with the mapping API in keystone which can cause dynamic generation of a shadow user, project and role assignments.<br>
<br>
> * Keystone should support the creation of users and projects with <br>
> predictable UUIDs (eg.: hash of the name of the users and projects). <br>
> This greatly simplifies Image federation and telemetry gathering<br>
<br>
I was in and out of the room and don't recall this discussion exactly. We have historically pushed back hard against allowing setting a project ID via the API, though I can see predictable-but-not-settable as less problematic. One of the use cases from the past was being able to use the same token in different regions, which is problematic from a security perspective. Is that that idea here? Or could someone provide more details on why this is needed?<br>
<br>
Were there any volunteers to help write up specs and work on the implementations in keystone?<br>
<br>
<snipped><br>
<br>
Colleen (cmurphy)<br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote></div>