目錄
Keystone 認證流程
User 使用憑證(username/password) 到 keystone 驗證并獲得一個臨時的 Token 和 Generic catalog(全局目錄),臨時的 Token 會存儲在 keystone-client(cache UUID locally) 和 keystone-backend 中。
User 使用這個臨時 Token 發送給 keystone 并獲得一個該 User 能通路的 Tenants 清單
User 再跟 keystone 發送一個請求,表明希望通路的 Tenants
keystone 就會向 User 發送一個管理這個 Tenants 的 Services 清單和允許通路這個 Tenants 的 Token (Tenants Token)
User 會通過這個 Services 和 Generic catalog(全局目錄) 映射找到 Services 的 endpoint,并通過 endpoint 找到實際 Services 元件的位置
然後 User 再拿着 Tenant Token 和 endpoint 來通路實際上的 Service 組
Service 元件會拿着這個 User-Tennat Token 對到 keystone 做進一步的驗證(Openstack 要保證每一步操作都是安全的)
如果通過了 7. 的驗證的話,keystone 會傳回一系列的确認資訊和附加資訊(User 希望操作的内容)給 Services
最後 Services 執行一系列的操作
讓 Keystone 為一個新的項目 Service 提供驗證功能
在新項目的配置檔案中指定使用 Keytone 認證方式
該配置項的意義:
Because most OpenStack services must access the Identity Service, you must configure the IP address of the keystone server to be able to access it. You must also configure the admin_tenant_name, admin_user, and admin_password options for each service to work.
簡而言之, 就是讓每個不同的 Openstack Service 都使用一個特定的注冊在 Keystone 中的 User 去通路 Keystone Service 并請求獲得驗證服務. 并且該配置項還指定了該項目屬于的 Project(資源), 也就是早期版本中的 Tenant. 這裡設定的是: 該項目屬于 Tenant service. 這個在之後我們會使用到.
是以, 我們首先需要為這個新的項目在 Keystone 中注冊一個使用者.
因為新的項目的Service 屬于 Tenant service, 是以需要在這個 Tenant 中注冊該項目的 Service
NOTE: Name 是用于顯示的辨別, 實際在 Servces 之間生效的是 Type .
在 Tenant service 中注冊完之後, 還需要建立 endpoint 記錄, 讓不同項目的 Services 之間可以定位到該新項目的服務
到目前為止, 其實還沒有完成新項目 Service 的添加, 因為現在為止在 Keystone 中新注冊的 User 是沒有權限通路這個 Tenant 的, 那麼自然也無法擷取 Tenant 中的 Services 清單. 是以無法為新項目完成驗證的功能.
将 User 綁定到 Tenant 和 Role 中
驗證 User 的權限
使用 <code><new_user></code> 也能夠通路完全的 User list, 表示該 User 具有了 admin 的權限.
最後
小結:
1. Openstack Service 需要一個注冊在 Keystone 中的 User 來通路 Keystone service
2. Openstack Service 應該屬于 Tenant service 中, 屬于服務資源.
3. 這個 User 對 Tenant service 應該具有 admin 或者 member 權限, 是以需要将 User/ Tenant service/Role admin 綁定到一起.
4. 為了 Openstack services 之間可以互相通路, 需要在 service 的 URL 注冊到 endpoint 中.