openstack-keystone简记
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
-
驗(yàn)證
- 概念
- 租戶(hù)(tenant)
- openstack的組織方式
- 一個(gè)租戶(hù)=一個(gè)nova的project-id
- 用戶(hù)(user)
- 代表個(gè)體,openstack用user的形式授權(quán)
- 一個(gè)user=一個(gè)證書(shū)(credentials)
- 一個(gè)證書(shū)可分配給1~N個(gè)租戶(hù)
- 驗(yàn)證后,每個(gè)tenant會(huì)分配有一個(gè)特定令牌
- 證書(shū)(credentials)
- 唯一標(biāo)識(shí)一個(gè)keystone user的密碼/其他信息
- 令牌(token)
- 任意比特的文本
- 兩種類(lèi)型
- scoped:代表某個(gè)tenant驗(yàn)證過(guò)的user
- unscoped:僅代表一個(gè)user
- 有效期有限,隨時(shí)可被撤回
- 角色(role)
- 某個(gè)tenant的權(quán)限集合
- 租戶(hù)(tenant)
- 概念
-
服務(wù)目錄
- 服務(wù)(service)
- nova,glance,swift等
- 端點(diǎn)(endpoint)
- 一個(gè)uri
- 模板(template)
- 端點(diǎn)的集合
- 服務(wù)(service)
-
credential的處理和存儲(chǔ)方式
- openstack的做法應(yīng)該是 1.給每個(gè)公司分配一個(gè)userId,對(duì)應(yīng)有一個(gè)證書(shū) 2.給每個(gè)用戶(hù)建立多個(gè)項(xiàng)目,稱(chēng)為租戶(hù) 3.證書(shū)可以分配給租戶(hù),但使用時(shí)的,是通過(guò)證書(shū)生成的令牌 4.令牌有期限,可撤換(類(lèi)似oauth協(xié)議)
- 存儲(chǔ)證書(shū)方式:
- keystone存儲(chǔ)證書(shū)的方式,有多種選擇, 從內(nèi)置的sql 到 ldap - kvs - 內(nèi)存型方式 - 最簡(jiǎn)單的backend,只需支持主鍵查詢(xún) - sql - 內(nèi)置的是sqlite - 用SQLAlchemy持久存儲(chǔ) - pam - 使用OS提供的pam機(jī)制,以完成 - 授權(quán) - user-tenant的一對(duì)一關(guān)系 - 需root權(quán)限 - ldap - 內(nèi)置的是一個(gè)ldap的樁實(shí)現(xiàn)(FakeLdap)
backends/ --> sql.py --> Identity.authenticate(self, user_id, tenant_id, password): user_ref = self._get_user(user_id) 通過(guò)user_id獲取user的信息 --> Identity._check_password(self, password, user_ref): return utils.check_password(password, user_ref.get('password')) 調(diào)用統(tǒng)一的password校驗(yàn)方法 --> utils.check_password (password, hashed): (common/utils.py) password_utf8 = password轉(zhuǎn)為utf編碼 return passlib.hash.sha512_crypt.verify(password_utf8, hashed) 調(diào)用獨(dú)立的第三方庫(kù)passlib中的方法
keystone backends/ --> 使用sql的處理方式 --> Identity.authenticate(self, user_id, tenant_id, password): 通過(guò)user_id獲取user的信息 --> Identity._check_password(self, password, user_ref): 調(diào)用統(tǒng)一的password校驗(yàn)方法 --> utils.check_password (password, hashed): 調(diào)用獨(dú)立的第三方庫(kù)passlib中的方法,從中可以看出,password傳入的是明文,存儲(chǔ)的是sha512加密后的結(jié)果 passlib.hash.sha512_crypt.verify(password_utf8, hashed)
轉(zhuǎn)載于:https://my.oschina.net/kakablue/blog/128285
總結(jié)
以上是生活随笔為你收集整理的openstack-keystone简记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nginx分割日志管理
- 下一篇: three.js(七) 绘制到WebGL