OpenStack Identity(Keystone)概述及示例
OpenStack 的验证服务有两个主要功能:
1. 用户管理(租户、用户、权限)
2. Service catalog,管理服务的目录和它们的endpoint。
相关概念
1. User
User即用户,他们代表访问openstack的人或程序。Users通过认证信息(credentials,如密码、API Keys等)进行验证。
2. Tenant
Tenant即租户,它是各个服务中的一些可以访问的资源集合。在Swift,资源是以tenant为单位进行划分的。Users默认的总是绑定到某些tenant上。
3. Role
Role即角色,Roles代表一组用户可以访问的资源权限。Role是在验证服务定义,但是具体意义由执行操作的服务(比如 swift)解释。
4. Service
Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service,这里通常使用一些不同的名称表示不同的服务。在上文中谈到的Role,实际上也是可以绑定到某个service的。例如,当swift需要一个管理员权限的访问进行对象创建时,对于相同的role我们并不一定也需要对nova进行管理员权限的访问。为了实现这个目标,我们应该创建两个独立的管理员role,一个绑定到swift,另一个绑定到nova,从而实现对swift进行管理员权限访问不会影响到Nova或其他服务。
5. Endpoint
Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。因此,在keystone中包含一个endpoint模板(endpoint template,在安装keystone的时候我们可以在conf文件夹下看到这个文件),这个模板提供了所有存在的服务endpoints信息。一个endpoint template包含一个URLs列表,列表中的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。public url可以被全局访问,private url只能被局域网访问,admin url被从常规的访问中分离。
6、Token
Token是访问资源的钥匙。它是通过Keystone验证后的返回值,在之后的与其他服务交互中只需要携带Token值即可。每个Token都有一个有效期,Token只在有效期内是有效的。
主要关系
1、租户下,管理着一堆用户(人,或程序)。
2、每个用户都有自己的credentials(凭证)。用户名+密码,或者,用户名+API key,或其他凭证。
3、用户在访问其他资源(计算、存储)之前,需要用自己的credential,去请求keystone服务,获得验证信息(主要是Token信息)和服务信息(服务目录和它们的endpoint)。
4、用户拿着Token信息,就可以去访问特点的资源了。
示例
向keystone发送请求:
1 > POST http://192.168.150.129:35357/v2.0/tokens
1 > Accept: application/json
1 > Content-Type: application/json
{
"auth":{
"tenantName":"service",
"passwordCredentials":{
"username":"swift",
"password":"password"
}
}
}
keystone的响应
2 < 200
2 < Vary: X-Auth-Token
2 < Date: Tue, 30 Jul 2013 08:44:30 GMT
2 < Content-Length: 3354
2 < Content-Type: application/json
2 < Connection: keep-alive
{
"access": {
"token": {
"issued_at": "2013-07-30T08:44:28.336139",
"expires": "2013-07-31T08:44:28Z",
"id": "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-R4v3i+kQ81P+FPByRXY=",
"tenant": {
"description": null,
"enabled": true,
"id": "8c008d68bbd74cd88dd04a4b377254e7",
"name": "service"
}
},
"serviceCatalog": [
{
"endpoints": [
{
"adminURL": "http://192.168.150.129:8080",
"region": "RegionOne",
"internalURL": "http://192.168.150.129:8080/v1/AUTH_8c008d68bbd74cd88dd04a4b377254e7",
"id": "192d5461b9e5465f81074958886fbd93",
"publicURL": "http://192.168.150.129:8080/v1/AUTH_8c008d68bbd74cd88dd04a4b377254e7"
}
],
"endpoints_links": [
],
"type": "object-store",
"name": "swift"
},
{
"endpoints": [
{
"adminURL": "http://192.168.150.129:35357/v2.0",
"region": "RegionOne",
"internalURL": "http://192.168.150.129:5000/v2.0",
"id": "71af9dc85f634728b2d4384df36ecac9",
"publicURL": "http://192.168.150.129:5000/v2.0"
}
],
"endpoints_links": [
],
"type": "identity",
"name": "keystone"
}
],
"user": {
"username": "swift",
"roles_links": [
],
"id": "663a26d5c78b41a19034034762dc5b0b",
"roles": [
{
"name": "_member_"
},
{
"name": "admin"
}
],
"name": "swift"
},
"metadata": {
"is_admin": 0,
"roles": [
"9fe2ff9ee4384b1894a90878d3e92bab",
"87fa6e8e51004488aba30020fd9a93dc"
]
}
}
}
OpenStack Identity(Keystone)概述及示例的更多相关文章
- OpenStack (1) - Keystone OpenStack Identity Service
echo deb http://ubuntu-cloud.archive.canonical.com/ubuntu precise-updates/grizzly main >> /etc ...
- (弃)解读Openstack Identity API v2.0
目前OpenStack社区提供了详尽的API文档,并配有丰富的说明和示例,关于Identity API v2查看这里, 关于Identity API v3请查看这里. 尽管现在官方已经不建议OpenS ...
- openstack核心组件——keystone身份认证服务(5)
云计算openstack核心组件——keystone身份认证服务(5) 部署公共环境 ntp openstack mariadb-server rabbitmq-server memcache 1.w ...
- OpenStack 安装 Keystone
OpenStack 安装 Keystone 本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件 openstack 版本 我选的是queens 版本 1.Op ...
- openstack中Keystone组件简解
一.Keystone服务概述 在Openstack框架中,keystone(Openstack Identity Service)的功能是负责验证身份.校验服务规则和发布服务令牌的,它实现了Opens ...
- OpenStack中Keystone的基本概念理解
原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...
- OpenStack:安装Keystone
>安装Keystone1. 安装# apt-get install keystone2. 创建dbcreate database keystone;grant all privileges on ...
- Openstack中keystone与外部LDAP Server的集成
openstack中keystone鉴权的用户user和password信息,通常保存在mysql数据库的keystone库: 表local_user和表password: keystone也支持外部 ...
- 单点登录SSO:概述与示例
目录 概述 演示一:零改造实施单点登录 演示二: 单点注销 演示三:集成AD认证 演示四:客户端单点登录 演示五:移动端单点登录 单点登录SSO概述 本系列将由浅入深的,带大家掌握最新单点登录SSO方 ...
- openstack 之~keystone部署
第一:版本信息 官网http://docs.openstack.org/newton/install-guide-rdo/keystone.html 我们按照Newton这个版本来部署,opensta ...
随机推荐
- Python: pyinstaller打包exe(含file version信息)
最近项目上一直都是用Spyder直接运行.py文件的方式来执行每日的自动化程序,每天都要手动去点击Run来执行一次,所以考虑把.py文件直接打包成exe,然后用windows的task schedul ...
- Asp.NetCore初步探究
1, 新建一个空的AspNetCore项目,默认Program下的代码如下: public static void Main(string[] args) { BuildWebHost(args ...
- Stm32 ADC学习
stm32 ADC 简介 stm32的ADC是 12位逐次逼近型 模拟数字转换器;它包括18个通道,可以用来测量16个外部通道和2个内部通道.ADC转换的结果存放在16位数据寄存器(ADC规则数据寄存 ...
- 微信小程序开发教程(一)—介绍和准备
前言: 因为客户需要,也为了更好的发展我们公司的产品,所以决定扩展移动端.但是由于公司没有原生安卓开发人员,而且开发安卓成本比较高,所以公司一致决定开发微信小程序,也是由于微信小程序最近的火热. 后台 ...
- java入门——面向对象
简介 对象具有自己的状态和行为: 描述一个对象具有什么状态和行为的过程叫做建模,不同的意图下我们对同一个事物的描述会产生不同的模型. 类 类描述一类对象的状态和行为的模板.可以把类想象成一个汽车设计图 ...
- python 通过 pymysql模块 操作 mysql 数据库
Python 中操作 MySQL 步骤 安装模块 pip install pymysql 引入模块 在py文件中引入pymysql模块 from pymysql import * Connection ...
- Flask从入门到精通之自定义错误界面
如果你在浏览器的地址栏中输入了不可用的路由,那么会显示一个状态码为404 的错误页面.现在这个错误页面太简陋.平庸,而且样式和使用了Bootstrap 的页面不一致. 像常规路由一样,Flask 允许 ...
- python pip安装模块提示错误failed to create process
python pip安装模块提示错误failed to create process 原因: 报这个错误的原因,是因为python的目录名称或位置发生改动. 解决办法: 1.找到修改python所在的 ...
- jmeter测试计划配置
用户定义的变量: 测试计划上可以添加用户定义的变量.一般添加一些系统常用的配置.如果测试过程中想切换环境,切换配置,一般不建议在测试计划上添加变量,因为不方便启用和禁用,一般是直接添加用户自定义变量组 ...
- 【LeetCode】390. 消除游戏
题目 给定一个从1 到 n 排序的整数列表. 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾. 第二步,在剩下的数字中,从右到左,从倒数第一个数字开始,每隔一个数字进行删除,直 ...