V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
hxndg
V2EX  ›  Go 编程语言

更新了下开源的 kms 实现代码

  •  
  •   hxndg · 2022-05-03 13:28:25 +08:00 · 2323 次点击
    这是一个创建于 695 天前的主题,其中的信息可能已经有所发展或是发生改变。

    kube kms

    魔方 kms ,使用 go 开源的 kms 系统,由于没有 HSM ,因此使用服务器上的证书私钥做密钥派生拿到数据库的 rootkey ,服务器的安全性依靠这张证书私钥来保证。 代码的 github 为 https://github.com/hxndg/qkms ,欢迎提出修改意见

    目前支持的功能

    • 用户管理:使用 grpc 的 tls 双向认证做权限控制,每张 CA 签发出来的证书对应一个用户,每个用户证书里面的 subject 需要有不同的 appkey 内容。初始化时如果没有创建 root 用户,会要求输入 root user 的 name ,然后生成 root user 的证书和私钥。后续对第三方用户签发证书私钥可以由 root user 进行管理。root user 拥有一切权限,root user 可以创建其他角色;查看 ak ;吊销用户证书等功能。
    • 角色管理:可以将 namespace 的 read/wirte 权限赋予给某个 role ,再将某个 role 赋予给相对应的用户(用户使用 appkey 区分),从而用户可以作为某个 namespace 下面的 mainter 。
    • 密钥管理:密钥三层拆封,rootkey ===> key encryption key ===> access key.用户需要先申请创建 key encryption key ,即创建 namespace 。之后即可在该 namespace 下创建对应的 accesskey 。对用户而言,kek 是透明的,
    • 密钥可见性:用户可见的为 Access key ,按照 namespace, name 索引。创建密钥后默认只有用户可读可写,如果用户授权给其他用户相应的读 /写权限,其他用户可以执行相应的操作。

    待完成功能

    • kek 轮转,定期更新所管理的 access key

    依赖

    • 使用 postgresql 做数据持久化
    • 使用 grpc 的双向 tls 做认证
    • 依赖 casbin 做 rbac 的管理
    ragnaroks
        1
    ragnaroks  
       2022-05-04 13:17:42 +08:00
    你这个 kms 是我理解的那个 kms ?还是 keymanagersystem ?
    hxndg
        2
    hxndg  
    OP
       2022-05-04 18:10:31 +08:00
    @ragnaroks
    密钥管理系统的 kms ,简单版本,毕竟个人买不起 hsm 。。。。
    sbilly
        3
    sbilly  
       2022-05-09 01:33:45 +08:00
    支持一下~
    这个领域比较少见开源
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1737 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:38 · PVG 00:38 · LAX 09:38 · JFK 12:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.