The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
hxndg

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

  •  
  •   hxndg · May 3, 2022 · 3744 views
    This topic created in 1480 days ago, the information mentioned may be changed or developed.

    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  
       May 4, 2022
    你这个 kms 是我理解的那个 kms ?还是 keymanagersystem ?
    hxndg
        2
    hxndg  
    OP
       May 4, 2022
    @ragnaroks
    密钥管理系统的 kms ,简单版本,毕竟个人买不起 hsm 。。。。
    sbilly
        3
    sbilly  
       May 9, 2022
    支持一下~
    这个领域比较少见开源
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2829 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 15:08 · PVG 23:08 · LAX 08:08 · JFK 11:08
    ♥ Do have faith in what you're doing.