[openstack-dev] [keystone] Custom ProjectID upon creation

Boris Bobrov bbobrov at mirantis.com
Mon Dec 5 23:16:07 UTC 2016


On 12/06/2016 01:46 AM, Andrey Grebennikov wrote:
>     Hi,
> 
>     On 12/05/2016 09:20 PM, Andrey Grebennikov wrote:
>     > Hi keystoners,
>     > I'd like to open the discussion about the little feature which I'm
>     > trying to push forward for a while but I need some
>     > feedbacks/opinions/concerns regarding this.
>     > Here is the review I'm talking
>     > about https://review.openstack.org/#/c/403866/
>     <https://review.openstack.org/#/c/403866/>
>     > <https://review.openstack.org/#/c/403866/
>     <https://review.openstack.org/#/c/403866/>>
>     >
>     > What I'm trying to cover is multi-region deployment, which includes
>     > geo-distributed cloud with independent Keystone in every region.
>     >
>     > There is a number of use cases for the change:
>     > 1. Allow users to re-use their tokens in all regions across the
>     > distributed cloud. With global authentication (LDAP backed) and same
>     > roles names this is only one missing piece which prevents the user to
>     > switch between regions even withing single Horizon session.
>     > 2. Automated tools responsible for statistics collection may access all
>     > regions using one token (real customer's usecase)
> 
>     What do you understand by "region"?
> 
> I believe I explained what the "region" is in the beginning. In here it
> is actually a generic "keystone region" with all stuff, but Keystone is
> independent in it. Literally all Keystones in all "my" regions are aware
> about each other since they all have common catalog. 
> 
> 
>     > 3. Glance replication may happen because the images' parameter "owner"
>     > (which is a project) should be consistent across the regions.
>     >
>     > What I hear all time - "you have to replicate your database" which from
>     > the devops/deployment/operations perspective is totally wrong approach.
>     > If it is possible to avoid Galera replication over geographically
>     > distributed regions - then API calls should be used. Moreover, in case
>     > of 2 DCs there will be an issue to decide which region has to take over
>     > when they are isolated from each other.
> 
>     My comment in the review still stands. With the change we are getting
>     ourselves into situation when some tokens *are* verifiable in 2
>     regions (project-scoped with identical project ids in both regions),
>     some *might be* verifiable in 2 regions (project-scoped with ids about
>     which we can't tell anything), and some *are not* verifiable, because
>     they are federation- or trust-scoped. A user (human or script) won't be
>     able to tell what functionality the token brings without complex
>     inspection.
> 
> I commented it in the IRC and repeat over here - it is Always the
> responsibility of the administrator to realize how things work and
> implement it in the way he/she wants it. You don't need it - you don't
> set it. The IDs will be still generated.

It is not a general usecase that an administrator creates projects.
There are policies that define who can do that.

> 
>     Current design is there is single issuer of tokens and single
>     consumer. With the patch there will be single issuer and multiple
>     consumers. Which is basically SSO, but done without explicit
>     design decision.
> 
> Not true. SSO assumes Central point of authorization. Here it is highly
> distributed.
>  
> 
>     Here is what i suggest:
> 
>     1. Stop thinking about 2 keystone installations with non-shared database
>     as about "one single keystone". If there are 2 non-replicated databases,
>     there are 2 separate keystones. 2 separate keystones have completely
>     different sets of tokens. Do not try to share fernet keys between
>     separate keystones.
> 
> Even if you replicate the DB it is not going to work with no key
> replication. I repeat my statement once again - if the admin doesn't
> need it - leave the --id field blank, that's it. Nothing is broken.
>  
> 
>     2. Instead of implementing poor man's federation, use real federation.
>     Create appropriate projects and create group-based assignments, one
>     for each keystone instance. Use these group-based assignments for
>     federated users.
> 
> Does federation currently allow me to use remote groups?

What do you mean by remote groups? Group name can be specified in
SAML assertion and then used, yes.

> Does it allow me to replicate my projects?

No. Create projects in each keystone:

for ip in $list_of_ips; do
    openstack project create --os-url=$ip ...;
done

> Does it allow me to work when there is no connectivity between keystones?

Yes

> Does it allow me to know whether user
> exists in the federated provider before I create shadow user?

I don't understand the question.

Shadow users don't need to be created. Shadow users is internal keystone
entity that operator doesn't deal with at all.

> Does it
> delete assignments/shadow user records when the user is deleted from the
> remote provider?

No, but this is merely a clean-up problem. If remote user doesn't exist,
the local user is effectively disabled. And there are no assignments
for a shadow federated user, only for the group.

> I can keep going forever.

Please do!

> And yes, I don't mention CLI
> support of federation.

What's wrong with it? If there is something missing, you're welcome to
file a bugreport and/or start working on it in python-openstackclient.

> Feel free to add.
> 
> Thanks!
> 
>     > There is a long conversation in the comments of the review, mainly with
>     > concerns from cores (purely developer's opinions).
>     >
>     > Please help me to bring it to life ;)
>     >
>     > PS I'm so sorry, forgot to create a topic in the original message
>     >
>     > --
>     > Andrey Grebennikov
>     > Principal Deployment Engineer
>     > Mirantis Inc, Austin TX
>     >
>     >
>     >
>     __________________________________________________________________________
>     > OpenStack Development Mailing List (not for usage questions)
>     > Unsubscribe:
>     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>     <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>     > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>     <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>
>     >
> 
>     __________________________________________________________________________
>     OpenStack Development Mailing List (not for usage questions)
>     Unsubscribe:
>     OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>     <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
>     http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>     <http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev>
> 
> 
> 
> 
> -- 
> Andrey Grebennikov
> Principal Deployment Engineer
> Mirantis Inc, Austin TX
> 
> 
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
> 



More information about the OpenStack-dev mailing list