文档章节

OpenStack Fernet Key Rotate

平江夜弹
 平江夜弹
发布于 2017/07/07 11:38
字数 330
阅读 33
收藏 0

简单介绍一下OpenStack Fernet Keys 的 Rotate 工作

1.介绍

Openstack 的Fernet key 采用的是  python fernet 库生成的(https://cryptography.io/en/latest/fernet/)

from cryptography.fernet import Fernet
Fernet.generate_key()

Fernet Key 类似:

    RoFd7Kucd2RdzIoMcsc5j3nx7cHR0pWi-XVaiOel978=

2.工作方式

  • 数值最大的key 是当前的signing key (Primary Key)
  • 数值为0 的key 是即将要变成signing key 的key
  • 其它数值的key 都是 old keys,它们曾经是Primary Key。系统中也许会有一些tokens 是使用这些key 来加密的,取决于你所设置的过期时间方式
  • 新产生的key 通常都是数值为0的

3.怎么来做Rotate

举例,有三个key:0, 1, 2

  • 0 变成了 3 ,成为signing key (primary key)
  • 1 被删除
  • 2 仍然是2
  • 新创建了一个key 为0

图示如下:

    做个解释:在key rotate 之前,所有的token 都是用2来加密的。key rotate 之后,所有的token 都是用3来加密的,当过来一个token 时候,keystone 同时用3 和2 来解密,总有一个能够work 的。在这个时候,不能再次rotate,否则 2 被删除后,将会出现解密错误。

   这将要求你需要有更多的keys,或者过期时间设置的长一些。

   举例,一周做一次key rotate,然后token 的过期时间设置为2h。

 

© 著作权归作者所有

共有 人打赏支持
平江夜弹
粉丝 26
博文 47
码字总数 17530
作品 0
南京
程序员
安装OpenStack QUEENS版本二:keystone

安装Keystone,在控制节点上 yum install openstack-keystone httpd mod_wsgi -y create a database mysql -uroot -ppassword -e "CREATE DATABASE keystone;" mysql -uroot -ppassword -e "......

OpenStack2015
08/03
0
0
理解 Keystone 的四种 Token

Token 是什么 通俗的讲,token 是用户的一种凭证,需拿正确的用户名/密码向 Keystone 申请才能得到。如果用户每次都采用用户名/密码访问 OpenStack API,容易泄露用户信息,带来安全隐患。所...

koala bear
2015/12/26
0
0
openstack-ocata---2-keystone 安全认证

为什么写这个呢 一、为了记录自己干了啥 二、官方文档这里有点小问题 先决条件 mysql数据库 CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone. TO 'keystone'@'localhost' IDEN...

yr_linux运维
06/06
0
0
openstack-M版安装部署

[openstack信息简介] Openstack项目是一个开源的云计算平台,它为广大云平台提供了可大规模扩展的平台,全世界的云计算技术人员创造了这个项目,通过一组相互关联的服务来提供了Iaas基础解决...

mapleZDW
06/28
0
0
openstack-o版-启动实例

本节将创建必要的虚拟网络来支持启动实例。 创建名为provider的网络 [root@wang02 ~]# openstack network create --share --provider-physical-network provider --provider-network-type f......

Zai坚强一点
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高三暑假我是怎么想开去学linux系统的

高三的时候,我有一句口头禅:“老了老了,现在做题越来越迟钝了”。当时整天日夜苦读,体重日益增加,脸色越来越黯淡,我在终于熬过了高考的时候,简直心里面乐得开了花。我终于可以去做自己...

linuxprobe16
22分钟前
0
0
Python 获得命令行参数的方法

需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2]

编程老陆
29分钟前
0
0
链队

队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack. 根据链接方向的不同,链队有两种链接方式(其实就是链表的头插入节点和尾插入节点,头删除节点和尾删除节点)。...

Frost729
32分钟前
0
0
IDEA toString() json模板

public java.lang.String toString() {java.lang.StringBuilder builder = new java.lang.StringBuilder();#set ($i = 0)#foreach ($member in $members)#if ($i == 0)builder.appen......

Mtok
42分钟前
0
0
Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLo...

明理萝
47分钟前
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部