理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)
作為 OpenStack 的基礎(chǔ)支持服務(wù),Keystone 做下面這幾件事情:
管理用戶及其權(quán)限
維護(hù) OpenStack Services 的 Endpoint
Authentication(認(rèn)證)和 Authorization(鑒權(quán))
學(xué)習(xí) Keystone,得理解下面這些概念:
User
User 指代任何使用 OpenStack 的實(shí)體,可以是真正的用戶,其他系統(tǒng)或者服務(wù)。
當(dāng) User 請(qǐng)求訪問(wèn) OpenStack 時(shí),Keystone 會(huì)對(duì)其進(jìn)行驗(yàn)證。
Horizon 在 Identity->Users 管理 User
除了 admin 和 demo,OpenStack 也為 nova、cinder、glance、neutron 服務(wù)創(chuàng)建了相應(yīng)的 User。 admin 也可以管理這些 User。
Credentials
Credentials 是 User 用來(lái)證明自己身份的信息,可以是: 1. 用戶名/密碼 2. Token 3. API Key 4. 其他高級(jí)方式
Authentication
Authentication 是 Keystone 驗(yàn)證 User 身份的過(guò)程。
User 訪問(wèn) OpenStack 時(shí)向 Keystone 提交用戶名和密碼形式的 Credentials,Keystone 驗(yàn)證通過(guò)后會(huì)給 User 簽發(fā)一個(gè) Token 作為后續(xù)訪問(wèn)的 Credential。
Token
Token 是由數(shù)字和字母組成的字符串,User 成功 Authentication 后由 Keystone 分配給 User。
Token 用做訪問(wèn) Service 的 Credential
Service 會(huì)通過(guò) Keystone 驗(yàn)證 Token 的有效性
Token 的有效期默認(rèn)是 24 小時(shí)
Project
Project 用于將 OpenStack 的資源(計(jì)算、存儲(chǔ)和網(wǎng)絡(luò))進(jìn)行分組和隔離。 根據(jù) OpenStack 服務(wù)的對(duì)象不同,Project 可以是一個(gè)客戶(公有云,也叫租戶)、部門或者項(xiàng)目組(私有云)。
這里請(qǐng)注意:
資源的所有權(quán)是屬于 Project 的,而不是 User。
在 OpenStack 的界面和文檔中,Tenant / Project / Account 這幾個(gè)術(shù)語(yǔ)是通用的,但長(zhǎng)期看會(huì)傾向使用 Project
每個(gè) User(包括 admin)必須掛在 Project 里才能訪問(wèn)該 Project 的資源。 一個(gè)User可以屬于多個(gè) Project。
admin 相當(dāng)于 root 用戶,具有最高權(quán)限
Horizon 在 Identity->Projects 中管理 Project
通過(guò) Manage Members 將 User 添加到 Project 中
Service
OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等。
每個(gè) Service 都會(huì)提供若干個(gè) Endpoint,User 通過(guò) Endpoint 訪問(wèn)資源和執(zhí)行操作。
Endpoint
Endpoint 是一個(gè)網(wǎng)絡(luò)上可訪問(wèn)的地址,通常是一個(gè) URL。 Service 通過(guò) Endpoint 暴露自己的 API。 Keystone 負(fù)責(zé)管理和維護(hù)每個(gè) Service 的 Endpoint。
可以使用下面的命令來(lái)查看 Endpoint。
root@devstack-controller:~# source devstack/openrc admin admin?
root@devstack-controller:~# openstack catalog list
Role
安全包含兩部分:Authentication(認(rèn)證)和 Authorization(鑒權(quán)) Authentication 解決的是“你是誰(shuí)?”的問(wèn)題 Authorization 解決的是“你能干什么?”的問(wèn)題
Keystone 是借助 Role 來(lái)實(shí)現(xiàn) Authorization 的:
Keystone定義Role
可以為 User 分配一個(gè)或多個(gè) Role Horizon 的菜單為 Identity->Project->Manage Members
Service 決定每個(gè) Role 能做什么事情 Service 通過(guò)各自的 policy.json 文件對(duì) Role 進(jìn)行訪問(wèn)控制。 下面是 Nova 服務(wù) /etc/nova/policy.json 中的示例
上面配置的含義是:對(duì)于 create、attach_network 和 attach_volume 操作,任何Role的 User 都可以執(zhí)行; 但只有 admin 這個(gè) Role 的 User 才能執(zhí)行 forced_host 操作。
OpenStack 默認(rèn)配置只區(qū)分 admin 和非 admin Role。 如果需要對(duì)特定的 Role 進(jìn)行授權(quán),可以修改 policy.json。
下一節(jié)我們將通過(guò)例子加深對(duì)這些概念的理解。
總結(jié)
以上是生活随笔為你收集整理的理解 Keystone 核心概念 - 每天5分钟玩转 OpenStack(18)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 中国空间站迎来建成后首个春节,“神十五”
- 下一篇: 特斯拉2023年或交付190万辆电动汽车