学习Keystone之(1): Multi Domain 支持下的ID Mapping

概述:

随着Keystone的发展,对于multi domains支持的进一步完善,federation features进一步实现,关于multi domain backends的管理以及user , group的管理,因为机制的不同,出现了一些问题。

原有user , group存储在本地的数据库中,通过分配给user,group一个UUID进行操作;现在,Keystone实现了对于multi domain backends可以配置成不同的LDAP,将user,group的信息 存储在LDAP中,或者通过federation的方式,将user,group的数据管理与验证,delegate给extensional的Identity Service。这些方式的实现,都面临着如何在Keystone中继续通过unique ID对user,group进行操作,以及快速的通过user,group的unique ID,找到其所在domain的driver,以便调用driver进行user,group的数据操作等问题。

Keystone为了解决上述问题,且尽可能的减少其他引用Keystone Service的components的代码改动,引入了ID Mapping的概念,将user,group的local ID,其所在的domain id,已经在Keystone service中可用的unique ID进行了mapping。

关于ID Mapping的Spec,可以参考OpenStack Community文档:
Cross-backend IDs for User and Group Entities


解析

1. 配置项:

配置 ID Mapping(/etc/keystone/keystone.conf):

driver = sql
generator = sha256
backward_compatible_ids = true

在Kilo release中,简化了配置项中的参数书写格式,Kilo之前的版本,配置项如下:

driver = keystone.identity.id_generators.sha256.Generator
generator = keystone.identity.mapping_backends.sql.Mapping
backward_compatible_ids = true

2. 代码解析:
ID Mapping的数据存储在数据库中的表“id_mapping”中,数据库表结构如下:

ID Mapping的data model如下:

class IDMapping(sql.ModelBase, sql.ModelDictMixin):
    __tablename__ = 'id_mapping'
    public_id = sql.Column(sql.String(64), primary_key=True)
    domain_id = sql.Column(sql</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值