接下来用 token 作为用户凭据访问 OpenStack,所以 OpenStack 须要用户访问其 API

5、OpenStack
API向 keystone请求token认证

知识点复习:

primary
key相相比较此外三种key,它的目录最高,并且能够加密、也可以解密;

 

8.Token失效,拒绝客户端请求,重临40一。

             
                  stdout=subprocess.PIPE,

             
                   ‘-md’, message_digest, ],

             
                   ‘-nosmimecap’, ‘-nodetach’,

5.Keystone从http请求中赢得token,并检讨token是不是管用

primary
key相相比较别的三种key,它的目录最高,并且能够加密、也得以解密;

公开密钥加密,也号称非对称加密(asymmetric
cryptography,加密密钥和平消除密密钥差别样),在那种密码学方法中,要求壹些密钥,分别为公钥(Public
Key)和私钥(Private
Key),公钥是当面包车型大巴,私钥是非公开的,需用户妥贴保管。假诺把加密和解密的流水生产线当做函数
C(x) 和 D(x),P 和 S 分别表示公钥和私钥,对明文 A 和密文 B
来讲,数学的角度上有以下公式:

其中,‘token_data’是赢得的user、role、endpoint、catlog等音信集合,而最珍视的口舌是cms使用签字生成token的经过:cms_sign_token,使用私下认可的sha25陆措施加密,处理进程使用process,举行多少的读取、处理, 

         
 process = subprocess.Popen([‘openssl’, ‘cms’, ‘-sign’,

扭转的样例:144d捌a99a4244737玖ac叁7f7⑧bf0ef60八

 

里面加密函数
C(x), 解密函数 D(x) 以及公钥 P
均是公开的。选拔公钥加密的密文只可以用私钥解密,采取私钥加密的密文只好用公钥解密。非对称加密广大利用在雅安世界,诸如常见的
HTTPS,SSH 登入等。

变动的样例:14四d捌a9玖a4244737玖ac3七f7八bf0ef608

 

陆.Keystone从http请求中拿到token,并检讨token是或不是可行

(二)PKI认证原理:

             
                   ‘-nosmimecap’, ‘-nodetach’,

数字签名又称之为公钥数字签字,首先选取 Hash
函数对音信生成摘要,摘要经私钥加密后称为数字签字。接收方用公钥解密该数字具名,并与接受新闻生成的摘要做相比,假设双方一致,便能够确认该新闻的完整性和真正。

             
                                CONF.signing.keyfile))  
#DEFAULT_TOKEN_DIGEST_ALGORITHM=sha256

             
                   ‘-signer’, signing_cert_file_name,

4.客户端发送具体的进行请求(nova boot)和UUID给keystone。

gAAAAABWfX8riU57aj0tkWdoIL6UdbViV-632pv0rw4zk9igCZXgC-sKwhVuVb-wyMVC9e5TFc
7uPfKwNlT6cnzLalb3Hj0K3bc1X9ZXhde9C2ghsSfVuudMhfR8rThNBnh55RzOB8YTyBnl9MoQ
XBO5UIFvC7wLTh_2klihb6hKuUqB6Sj3i_8

 

三.客户端缓存token(UUID)

             
                   ‘-nocerts’, ‘-noattr’, 

缺陷:每便请求都要因而keystone进行认证,产生质量瓶颈。

图片 1

CMS
token1般都当先1600个字节,样例:

在keystone开头化时,keystone生成了CA的公钥CA.pem和私钥CA.key,同时keystone发生了温馨的公钥keystone.pub和私钥keystone.key,然后将keystone.pub进行CA的签署,生成keystone.pem。

伍.Keystone从http请求中获取token,并检讨token是或不是有效

secondary
key(次次密钥)有x-一个,从Primary退役下来的,用于解密当初它加密过的token

长远浅出的讲,token
是用户的壹种凭证,需拿正确的用户名/密码向 Keystone
申请本领收获。如若用户每回都使用用户名/密码访问 OpenStack
API,轻松败露风声用户音信,带来安全隐患。所以 OpenStack 要求用户访问其 API
前,必须先拿走 token,然后用 token 作为用户凭据访问 OpenStack
API。 

当用户拿着用户名/密码去keystone认证后,keystone将用户的宗旨新闻经过keystone.key举行加密,并将密文作为token返还给用户。当用户拿着token发送请求时(例如访问nova),nova得到用户token时,通过先行获得keystone的证书keystone.pem(那1进度只要求开展三遍)举行解密,获取用户消息。

简言之叙述一下fernet选取 Key
Rotation
 改造密钥的原理,默许的轮流长度是三,当以keystone-manage
fernet-setup生成密钥时,会看到0、1三个目录表征,那分别是怎么着意思啊?

       
try:

只要Keystone具备访问那一个key的权杖,token就不要求在keystone数据库中储存

图片 2

三.客户端缓存UUID token

B = C(A,
S)

 图片 3

 

柒.Token失效,拒绝客户端请求,重返401。

六.Token得力,处理请求,并赶回客户端请求结果

图片 4

A = D(B,
P)

             
                   ‘-nocerts’, ‘-noattr’, 

 图片 5

 

 

           
token_id = str(cms.cms_sign_token(token_json,

 图片 6

二.Keystone验证用户名密码,并且生成token(UUID),发送给客户端。

(2)PKI认证原理:

陆.Token可行,处理请求,并重临客户端请求结果

             
                  close_fds=True)

5、OpenStack
API向 keystone请求token认证

 AES25陆加密token,SHA25陆HMAC验证完整性,

PKI的流程,首先供给动用 keystone-manage
pki_setup命令生成CA及有关的令牌机制,其代码如下所示:

 图片 7

fernet的数额品质最棒,原因是它不供给后端持久化操作(选择 Key
Rotation
为期 更动密钥,只要Keystone具备访问这个key的权力,更新后的token就不需求在keystone数据库中贮存,缓解了数据库负载压力),并且token的验证,使用的是密钥举办解密,能够一贯得出token
Data的消息,从而举行token的过期认证。它的失败原因,只可能是token过期了,恐怕是token放到了cache缓存中,但是已经被回收了。追根究底,依然token过期了。

             
                   ‘-outform’, ‘PEM’,

 图片 8

4.客户端发送具体的实行请求给openstack
API

7.Token管用,处理请求,并赶回openstack
api请求结果

2.Keystone验证用户名密码,并且生成token(UUID),发送给客户端。

             
                  close_fds=True)

对此用户的token,还需实行token的法定期间,以及token依旧否存在进展判断。所以当nova每一遍获得token后还需向keystone询问3回token的退步列表,检查token是或不是失效。那1进程对于keystone的载荷照旧万分轻的,所以PKI仍旧有效消除了keystone质量瓶颈的主题材料。

secondary
key(次次密钥)有x-三个,从Primary退役下来的,用于解密当初它加密过的token

3.客户端缓存token(UUID)

二.Keystone验证用户名密码,并且生成token(UUID),发送给客户端。

fernet的数目品质最佳,原因是它不须要后端持久化操作(选用 Key
Rotation
限制时间 更动密钥,只要Keystone具备访问那些key的权限,更新后的token就不要求在keystone数据库中蕴藏,缓解了数据库负载压力),并且token的注脚,使用的是密钥举办解密,能够向来得出token
Data的音信,从而进行token的晚点认证。它的挫败原因,只恐怕是token过期了,恐怕是token放到了cache缓存中,可是已经被回收了。百川归海,照旧token过期了。

 

壹.用户输入用户名密码,发送给keystone。

B = C(A,
S)

七.Token失效,拒绝客户端请求,再次来到40一。

keystone认证方式:UUID、PKI、Fernet;

    def
_get_token_id(self, token_data):

 图片 9

那么上述0
表示的是staged key,一 表示的是primary key,

UUID形式源码分析:

 

           
token_json = jsonutils.dumps(token_data,
cls=utils.PKIEncoder)

           
token_json = jsonutils.dumps(token_data,
cls=utils.PKIEncoder)

公开密钥加密,也叫做非对称加密(asymmetric
cryptography,加密密钥和解密密钥不雷同),在那种密码学方法中,需求有的密钥,分别为公钥(Public
Key)和私钥(Private
Key),公钥是公开的,私钥是非公开的,需用户稳妥保管。假设把加密和平解决密的流水生产线当做函数
C(x) 和 D(x),P 和 S 分别表示公钥和私钥,对明文 A 和密文 B
来讲,数学的角度上有以下公式:

其中,‘token_data’是收获的user、role、endpoint、catlog等音讯集合,而最根本的语句是cms使用签字生成token的进度:cms_sign_token,使用暗中同意的sha25陆艺术加密,处理进度使用process,实行数据的读取、处理, 

八.Token失效,拒绝客户端请求,重返401。

 图片 10

 AES25陆加密token,SHA256HMAC验证完整性,

 

             
                  stderr=subprocess.PIPE,

知识点复习:

             
                   ‘-md’, message_digest, ],

归纳叙述一下fernet采纳 Key
Rotation
 更动密钥的规律,私下认可的轮流长度是三,当以keystone-manage
fernet-setup生成密钥时,会看到0、壹八个目录表征,那分别是怎么着意思啊?

小结:OpenStack服务中的每三个API Endpoint都有1份keystone签发的证件,失效列表和根证书。API不用在平素去keystone认证token是还是不是合法,只须求按照keystone的申明和失灵列表就足以分明token是或不是合法。不过那里依然会有每便都急需请求keystone去获取失效列表的操作,不可防止。

小结:OpenStack服务中的每三个API Endpoint都有一份keystone签发的证件,失效列表和根证书。API不用在一直去keystone认证token是或不是合法,只须要依据keystone的评释和失灵列表就足以显然token是还是不是合法。不过那里如故会有每趟都急需请求keystone去获取失效列表的操作,不可制止。

(叁)Fernet认证原理:

 

             
                                CONF.signing.certfile,

内部加密函数
C(x), 解密函数 D(x) 以及公钥 P
均是大庭广众的。选拔公钥加密的密文只好用私钥解密,接纳私钥加密的密文只可以用公钥解密。非对称加密大面积接纳在安全领域,诸如常见的
HTTPS,SSH 登6等。

             
                  stdin=subprocess.PIPE,

只要Keystone具备访问那么些key的权杖,token就不须求在keystone数据库中蕴藏

             
                   ‘-inkey’, signing_key_file_name,

             
                  stdout=subprocess.PIPE,

对于用户的token,还需进行token的官方时间,以及token依然否存在进展判别。所以当nova每一遍获得token后还需向keystone询问一次token的曲折列表,检查token是不是失效。那一进度对于keystone的负载如故卓绝轻的,所以PKI依然实惠消除了keystone质量瓶颈的难题。

             
                  stderr=subprocess.PIPE,

当用户拿着用户名/密码去keystone认证后,keystone将用户的骨干新闻通过keystone.key举办加密,并将密文作为token返还给用户。当用户拿着token发送请求时(例如访问nova),nova得到用户token时,通过事先获得keystone的证书keystone.pem(那1经过只须求开始展览壹次)进行解密,获取用户音讯。

PKI的流水生产线,首先须要选拔 keystone-manage
pki_setup命令生成CA及连锁的令牌机制,其代码如下所示:

def _get_token_id(self, token_data):
   return uuid.uuid4().hex

           
token_id = str(cms.cms_sign_token(token_json,

在此,须要提一下四个概念:

gAAAAABWfX8riU57aj0tkWdoIL6UdbViV-632pv0rw4zk9igCZXgC-sKwhVuVb-wyMVC9e5TFc
7uPfKwNlT6cnzLalb3Hj0K3bc1X9ZXhde9C2ghsSfVuudMhfR8rThNBnh55RzOB8YTyBnl9MoQ
XBO5UIFvC7wLTh_2klihb6hKuUqB6Sj3i_8

图片 11

(一)UUID认证原理:

以上代码注明,token 包括了
user_id,project_id,domain_id,methods,expires_at
等音信,首要的是,它并未有 service_catalog,所以 region
的数目并不影响它的深浅。self.pack()
最后调用如下代码对上述音信加密:

(三)Fernet认证原理:

staged
key(次密钥)有且唯有贰个,命名称叫0,准备下三个rotation时改为Primary
key,可以解密token

7.Token一蹴而就,处理请求,并回到openstack
api请求结果

 

 

primary
key(主密钥)有且唯有2个,名字为为x,当前用来加密解密token

staged
key(次密钥)有且只有叁个,命名字为0,准备下一个rotation时产生Primary
key,能够解密token

当集群运营较长1段时间后,访问其 API
会变得奇慢无比,究其原因在于 Keystone 数据仓库储存款和储蓄了大气的 token
导致品质太差,消除的方法是经常清理
token。为了幸免上述难点,社区提议了Fernet
token
,fernet
是日前主流推荐的token格式,它利用 cryptography 对称加密库(symmetric
cryptography,加密密钥和解密密钥一样) 加密 token,具体由 AES-CBC
加密和散列函数 SHA25陆 具名。Fernet 是专为
API token 设计的1种轻量级安全音信格式,不要求仓库储存于数据库,减弱了磁盘的
IO,带来了显著的性子升高。为了升高安全性,必要运用 Key
Rotation
 退换密钥。

 图片 12

四.客户端发送具体的进行请求给openstack
API

上述代码申明,token 包括了
user_id,project_id,domain_id,methods,expires_at
等新闻,主要的是,它未有 service_catalog,所以 region
的数码并不影响它的高低。self.pack()
最后调用如下代码对上述消息加密:

 

def _get_token_id(self, token_data):
   return uuid.uuid4().hex

    def
_get_token_id(self, token_data):

二.Keystone验证用户名密码,并且生成token(UUID),发送给客户端。

         
 process = subprocess.Popen([‘openssl’, ‘cms’, ‘-sign’,

             
                  stdin=subprocess.PIPE,

UUID token
是长度固定为 3二 Byte 的即兴字符串,由 uuid.uuid四().hex
生成。

三.客户端缓存UUID token

壹.用户输入用户名密码,发送给keystone。

当用户需求进行操作时(比如访问nova创造虚拟机),用户拿着有效的用户名/密码先去keystone认证,keystone重临给用户2个token(即UUID)。之后用户进行别的操作(如访问nova),先出示那么些token给nova-api,nova收到请求后,就用这一个token去向keystone举办呼吁验证。keystone通过比对token,以及检查token的有效期,判定token的实用,最终回来给nova结果。

 

             
                   ‘-inkey’, signing_key_file_name,

 图片 13

UUID token
是长度固定为 3二 Byte 的专擅字符串,由 uuid.uuid四().hex
生成。

肆.客户端发送具体的试行请求(nova boot)和UUID给keystone。

 

       
try:

当集群运维较长一段时间后,访问其 API
会变得奇慢无比,究其原因在于 Keystone 数据仓库储存储了汪洋的 token
导致品质太差,解决的诀要是平日清理
token。为了制止上述难点,社区提议了Fernet
token
,fernet
是眼前主流推荐的token格式,它采用 cryptography 对称加密库(symmetric
cryptography,加密密钥和解密密钥一样) 加密 token,具体由 AES-CBC
加密和散列函数 SHA25陆 具名。Fernet 是专为
API token 设计的一种轻量级安全音信格式,不须求仓库储存于数据库,减弱了磁盘的
IO,带来了一定的质量进步。为了加强安全性,要求利用 Key
Rotation
 更改密钥。

             
                                CONF.signing.keyfile))  
#DEFAULT_TOKEN_DIGEST_ALGORITHM=sha256

             
                                CONF.signing.certfile,

那就是说上述0
表示的是staged key,一 表示的是primary key,

UUID格局源码分析:

陆.Keystone从http请求中获得token,并检查token是或不是管用

症结:每一趟请求都要透过keystone进行认证,形成品质瓶颈。

当用户须求实行操作时(比如访问nova创造虚拟机),用户拿着有效的用户名/密码先去keystone认证,keystone重返给用户一个token(即UUID)。之后用户进行其余操作(如访问nova),先出示这么些token给nova-api,nova收到请求后,就用这一个token去向keystone进行呼吁验证。keystone通过比对token,以及检查token的限期,判定token的实用,最终回来给nova结果。

一.user在客户端输入用户名密码,发送给keystone。

 该token
的轻重缓急相似在 200 多 Byte 左右,样例:

聊到底output,
err = process.communicate(data)
生成Token-id,这几个历程涉及到openssl相关的加密才干。

 

primary
key(主密钥)有且唯有三个,名称叫为x,当前用于加密解密token

A = D(B,
P)

深远浅出的讲,token
是用户的一种凭证,需拿正确的用户名/密码向 Keystone
申请技能赢得。假使用户每一次都应用用户名/密码访问 OpenStack
API,轻巧走漏风声用户新闻,带来安全隐患。所以 OpenStack 供给用户访问其 API
前,必须先拿走 token,然后用 token 作为用户凭据访问 OpenStack
API。 

 

数字具名又称为公钥数字具名,首先应用 Hash
函数对消息生成摘要,摘要经私钥加密后称为数字签名。接收方用公钥解密该数字具名,并与接收音讯生成的摘要做相比较,要是双方1致,便得以确定该新闻的完整性和忠实。

 图片 14

CMS
token1般都超越1600个字节,样例:

在keystone开始化时,keystone生成了CA的公钥CA.pem和私钥CA.key,同时keystone发生了团结的公钥keystone.pub和私钥keystone.key,然后将keystone.pub实行CA的签字,生成keystone.pem。

             
                   ‘-signer’, signing_cert_file_name,

末尾output,
err = process.communicate(data)
生成Token-id,这些历程涉及到openssl相关的加密本领。

keystone认证方式:UUID、PKI、Fernet;

             
                   ‘-outform’, ‘PEM’,

 该token
的高低相似在 200 多 Byte 左右,样例:

壹.user在客户端输入用户名密码,发送给keystone。

staged key
相较于secondary key,它更有机遇成为primary key。

staged key
相较于secondary key,它更有机会形成primary key。

在此,要求提一下八个概念:

(一)UUID认证原理:

相关文章