OpenStack Keystone

OpenStack Keystone

简介

用于管理身份验证 (managing authentication),授权 (authorization) 和服务目录 (service catalog)
用户和服务可以使用服务目录来来查找其他服务 (服务目录是 OpenStack 部署中可用服务的集合)

User

User 指代任何使用 OpenStack 的实体,可以是真正的用户,也可以是其他系统或者服务
除了 admin 和 demo,OpenStack 也为 nova、cinder、glance、neutron 服务创建了相应的 User, admin 也可以管理这些 User

Credentials

Credentials 是 User 用来证明自己身份的信息,可以是:

  • 用户名/密码
  • Token
  • API Key
  • 其他高级方式

Authentication

Authentication 是 Keystone 验证 User 身份的过程
User 访问 OpenStack 时向 Keystone 提交用户名和密码形式的 Credentials,Keystone 验证通过后会给 User 签发一个 Token 作为后续访问的 Credential

Token

Token 是由数字和字母组成的字符串,User 成功 Authentication 后 Keystone 生成 Token 并分配给 User

  • Token 是用做访问 Service 的 Credential
  • Service 会通过 Keystone 验证 Token 的有效性
  • Token 的有效期默认是 24 小时

Project

Project 用于将 OpenStack 的资源(计算、存储和网络)进行分组和隔离
根据 OpenStack 服务的对象不同,Project 可以是一个客户(公有云,也叫租户)、部门或者项目组(私有云)
注意:

  • 资源的所有权是属于 Project 的,而不是 User。
  • 在 OpenStack 的界面和文档中,Tenant / Project / Account 这几个术语是通用的,但长期看会倾向使用 Project
  • 每个 User(包括 admin)必须挂在 Project 里才能访问该 Project 的资源,一个 User 可以属于多个 Project
  • admin 相当于 root 用户,具有最高权限

Service

OpenStack 的 Service 包括 Compute (Nova)、Block Storage (Cinder)、Object Storage (Swift)、Image Service (Glance) 、Networking Service (Neutron) 等,每个 Service 都会提供若干个 Endpoint,User 通过 Endpoint 访问资源和执行操作

Endpoint

Endpoint 是一个网络上可访问的地址,通常是一个 URL,Service 通过 Endpoint 暴露自己的 API
每个服务可以有一个或多个 Endpoint,每个 Endpoint 可以是以下三种类型之一:admin,internal或public。
Keystone 负责管理和维护每个 Service 的 Endpoint
在生产环境中,出于安全原因,不同的 Endpoint 类型可能驻留在暴露给不同类型用户的不同网络上

Role

Keystone 借助 Role 实现 Authorization:
Keystone 定义 Role, 可以为 User 分配一个或多个 Role
Service 决定每个 Role 能做什么事情, Service 通过各自的 policy.json 文件对 Role 进行访问控制

Identity 服务包含以下组件:

Server

集中式服务器通过 RESTful 接口提供身份验证和授权服务

Drivers

Drivers 或服务后端 (service back end) 被集成到中央服务器,它们用于访问 OpenStack 外部存储库中的身份信息,并且可能已存在于部署 OpenStack 的基础架构中 (例如,SQL 数据库或 LDAP 服务器)

Modules

中间件模块 (Middleware modules) 在使用 Identity 服务的 OpenStack 组件的地址空间中运行。 这些模块监听服务请求,获取用户证书 (Credentials),并将它们发送到中央服务器以进行授权
中间件模块和 OpenStack 组件之间的集成使用 Python Web 服务器网关接口

使用服务的流程

通过 User admin 查看 image 的流程可以更好地理解 Keystone

  1. admin 登录时把 Credentials (用户名、密码) 给 Keystone
    Keystone 通过认证 (authentication) 确定身份后返回一个 token, token 中包含了 User 的 Role 信息
  2. admin 把 token 给 Keystone
    Keystone 返回 admin 可以访问的 Projects 和各个 Service 的 Endpoint
  3. admin 把 token 给 Glance,请求查看 Project admin 中的 image
    Glance 将 token 发送给 Keystone,询问 admin 的 token 是否有效
    Keystone 确认 admin 的 token 有效,确定用户为 admin 中的 User
    Glance 查看 /etc/glance/policy.json ,确定 admin 拥有查看 image 的权限,返回 image 的列表

posted on 2019-09-17 15:18  doubtful  阅读(291)  评论(0编辑  收藏  举报

导航