openstack barbican重要概念

 
总体架构图 
 
 
各个抽象概念的关系图
 
 

抽象概念解释

Secrets:
Secrets是需要存储的密钥,可能的形式如:私钥、证书、密码等。
 
ACL:
除了基于角色的权限控制外,ACL可以提供基于用户访问列表的权限控制。即可以指定哪些用户对该密钥有访问权限。
 
 
Containers:
Containers是一个容器,用于存储多个secret引用。当不得不跟踪、访问上百个secret时,container非常有用。
barbican支持3种类型的container:
  • Generic
  • Certificate
  • RSA
 
每种类型的container应该保存什么类型的secret,有明确的限制。
 
Generic Containers:
用于存储任意类型的secret。对于secret的类型和存储数量没有任何限制。
 
Certificate Containers:
用于存储如下类型的secret:
  • certificate (如PEM格式的x509证书)
  • private_key (可选)
  • private_key_passphrase (optional)
  • intermediates (optional) (如PEM格式的PKCS7证书链)
 
RSA Container:
用于存储如下类型的secret:
  • RSA public key
  • RSA private key
  • RSA private key pass phrase

即非对称密钥的公钥、私钥、以及私钥密码。目前只支持RSA算法。用order创建非对称密钥的时候,自动会创建一个该类型的container,并把公钥和私钥放到该container

 
 
 
 
Orders:
order允许用户请求barbican自己产生secret。并且支持异步生成secret。当希望请求生成多个公私钥对时,非常有用。
order支持如下两种类型:
  • symmetric keys 对称密钥
  • asymmetric keys 非对称密钥
 
一个order生成一个对应的secret。
order可以异步生成。
 
 
 
Consumer:
consumer可以把一组用户或服务注册给container,表明这组用户或服务对该container感兴趣。
该设计的初衷是,当一个container被删除时,所有的consumer应该被通知该事件。
 
 
其它:
barbican除了启动api web 服务之外,还会默认启动两个消息队列的server:
service barbican-keystone-listener start/stop
service barbican-worker start/stop
 
启动流程:
/etc/init.d/barbican-keystone-listener -> /usr/bin/barbican-keystone-listener -> barbican.cmd.keystone_listener -> main
 
/etc/init.d/barbican-worker -> /usr/bin/barbican-worker -> barbican.cmd.worker -> main
 
作用:
barbican-keystone-listener:
监听keystone发出的事件,执行相应的操作。目前只有一个功能,即捕获keystone删除project的事件,然后删除对应project下的资源(container、secret等)
 
barbican-worker:
监听order操作的异步事件,执行相应的操作。如创建密钥等。事件源来自order api 
 
 
最重要的放最后:
barbican的加解密插件系统
 
 
原文地址:https://www.cnblogs.com/tian-jiang-ming/p/8718319.html