Authentication
确定一个用户身份的过程。用户需要提供一组credentials供Openstack验证。首先,credentials一般是用户名、密码,或用户名和API key。当Openstack验证credentials有效,会返回用户一个authentication token。后续所有的请求,用户必须提供该token。
Credentials
用于核实用户身份的数据。例如用户名+密码,用户名+API key,或者一个authentication token(注:某一具体服务验证用户的合法性时。例如用户通过token调用barbican服务api,barbican需要通过该token去keystone核实该用户的合法性)。
Domain
keystone API v3新增加的概念。Domain是project和user的集合,定义了管理身份实例的管理边界。Domain可以代表个人、公司或其它运营实体。这些实体把管理功能交给系统用户,用户被授予domain的管理员角色。domain管理员可以在domain中创建project、user和group,并将role分配给domain中的user和group。
Endpoint
一个网络可达的地址,通常是一个URL,通过该URL可以访问一个service。( If you are using an extension for templates, you can create an endpoint template that represents the templates of all consumable services that are available across the regions.)
Group
keystone API v3新增加的概念。Group是Domain中用户的集合,一个Group所被赋予的role,该group下所有的user都被赋予该role。添加一个user到一个group中,该user被赋予该group的role,移除同理。
OpenStackClient
Openstack服务的命令行工具。例如用户可以执行:openstack service create命令来创建一个service。 openstack endpoint create来创建一个endpoint。
Project
将资源或标识对象分组或隔离的容器。根据service的运营者不同,project可能映射到客户、账户、组织或租户。
Region
keystone API v3新增加的概念。代表Openstack部署的一般划分。可以将零个或多个sub-regions与一个region关联,从而形成树状层次结构。虽然region没有地理上的含义,但部署时可以用 一个地理地区的名字,例如us-east.
Role
一个标识符,定义了一组特定用户权限和特权来执行一组特定的操作。keystone给user分配token时,同时会包括一个role列表,代表该用户拥有的所有roles。当user调用一个service时,service检查user的role集合,确定是否有权限调用该service。
Service
一个Openstac服务,例如Compute(nova),Object Storage(swift),image service(glance),key management(barbican)。service会提供一个或多个endpoints,用于用户访问该service的资源或命令service执行某种操作。
Token
由字母或数字组成的字符串。访问Openstack APIs时需要提供该token。token可以随时被撤销,并且有过期时间。在这个版本中,keystone支持基于token的身份认证。将来会支持更多的协议。keystone是一个集成服务,它不希望成为一个完整的身份存储和管理解决方案。
User
使用OpenStack云服务的人、系统或服务的数字表示。当user发出访问请求时,keystone要验证user的合法性。user有一个登录名,可以使用分配的token访问资源。用户可以直接分配给一个project,并且表现得像在该项目中一样。
Create and manage services and service users
keystone服务允许如下方式定义service:
- 用模版文件作为catalog服务的后端。Service catalog template. 对于OpenStack其它服务,keystone服务扮演service的endpoint目录。/etc/keystone/default_catalog.templates 模版文件定义了所有services的endpoint。当keystone服务用模版文件作为后端时,任何对于endpoint的修改,都会被缓存,但是不会被持久化,当重启服务或机器后,会还原成原来模版中的内容。
- 用SQL作为catalog服务的后端。当keystone服务启动后,必须把所有service添加到catalog中。生产环境用SQL作为后端。
auth_token中间件,对于每一个service,支持用shared secret 或 users。(The
auth_token
middleware supports the use of either a shared secret or users for each service.)为了通过keystone验证用户,需要为每一个OpenStack service创建一个service user。例如,为Compute、Block Stone和Networking Service创建对应的service user。
为了用service user配置Openstack service ,为所有的service创建一个project,为每一个service创建对应的user。为每一个service user和project对(service user and project pair)分配admin角色。该角色使service user能够验证token,并对其他用户的请求进行身份验证和授权。