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