zoukankan      html  css  js  c++  java
  • 部署企业私密信息管理平台Hashicorp vault集成kubernetes和AWS的密钥信息

    一、需求

      目前公司内部网站、项目比较多,运维的密钥管理主要都是靠个人保存,其中包含数据库密钥信息、申请的TLS证书、AWS密钥信息、各管理平台的密钥等,管理混乱,容易丢失,希望有一个平台能统一收集管理、签发、授权、审计。

    二、HashiCorp Vault介绍

    HashiCorp Vault作为集中化的私密信息管理工具,具有以下特点:

    • 存储私密信息
      不仅可以存放现有的私密信息,还可以动态生成用于管理第三方资源的私密信息。所有存放的数据都是加密的,任何动态生成的私密信息都有租期,并且到期会自动回收。
    • 滚动更新秘钥
      用户可以随时更新存放的私密信息。Vault提供了加密即服务(encryption-as-a-service)的功能,可以随时将密钥滚动到新的密钥版本,同时保留对使用过去密钥版本加密的值进行解密的能力。 对于动态生成的秘密,可配置的最大租赁寿命确保密钥滚动易于实施。
    • 审计日志
      保管库存储所有经过身份验证的客户端交互的详细审核日志:身份验证,令牌创建,私密信息访问,私密信息撤销等。 可以将审核日志发送到多个后端以确保冗余副本。

    另外,HaishiCorp Vault提供了多种方式来管理私密信息。用户可以通过命令行、HTTP API等集成到应用中来获取私密信息。HashiCorp Vault也能与Ansible、Chef、Consul等DevOps工具链无缝结合使用。

    HaishiCorp Vault官方网站

    三、环境介绍

      kubernetes集群环境

    四、部署HashiCorp Vault

    • 创建命名空间 
    kubectl create namespace vault
    • 添加helm repo
    helm repo add hashicorp https://helm.releases.hashicorp.com
    • 安装
    helm install vault hashicorp/vault -n vault
    • 初始化
    kubectl exec -ti vault-0 -c vault -n vault -- vault operator init
    
    Unseal Key 1: O67V+PZGr3OyQd2IjQgH2+7pXZLuIJss5ko+MXb8LcSm
    Unseal Key 2: oEdjXv11XrgJqPMuOduda5ygIUdtvaCMoufKF3Fllh9i
    Unseal Key 3: /doVpsSdTCnjvfTQL+wfrOgVWI/cMaOR/D0YasL8fV/c
    Unseal Key 4: tp8VLTbnwD0p34dn0DBaHEKM/jmtJ0WU1Kp4WG9MvbCC
    Unseal Key 5: d6j1CR6jVWEoKShjZ6wT9S5ZFyHo2XldBjb+NzJJRVUd
    
    Initial Root Token: s.8AQ0XD8Yp5Q6IfdXtjsFPCSF

    特别注意,这一步会输出5个Unseal Key和一个root token,Unseal Key在后面会用到,一定要记录下来,因为该值只会在初始化时出现。

    • 进行解封,随便取3个,只要达到key threashold即可
    kubectl exec -ti vault-0 -n vault -- vault operator unseal # ... Unseal Key 1
    kubectl exec -ti vault-0 -n vault -- vault operator unseal # ... Unseal Key 2
    kubectl exec -ti vault-0 -n vault -- vault operator unseal # ... Unseal Key 3
    • 完成以上几步操作之后,查看pod是否正常运行
    kubectl get pods -l app.kubernetes.io/name=vault -n vault
    • 添加service及ingress
    apiVersion: v1
    kind: Service
    metadata:
      name: vault-portal
      namespace: vault
    spec:
      ports:
      - name: "8200"
        port: 8200
        protocol: TCP
        targetPort: 8200
      type: ClusterIP
    
    ---
    
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      annotations:
        cert-manager.io/cluster-issuer: letsencrypt-prod
      name: dev.vault.arfront.cn
      namespace: vault
    spec:
      rules:
      - host: dev.vault.arfront.cn
        http:
          paths:
          - backend:
              serviceName: vault
              servicePort: 8200
      tls:
      - hosts:
        - dev.vault.arfront.cn
        secretName: dev.vault.arfront.cn
    • 验证

    打开网站 dev.vault.arfront.cn,输入上面初始化得到的Initial Root Token: s.8AQ0XD8Yp5Q6IfdXtjsFPCSF,即部署完成。

    五、集成管理kubernetes密钥

    待补充

    六、集成管理AWS密钥

    待补充

    七、Vault的使用

    待补充

  • 相关阅读:
    黑马程序员_字符串常用处理方法
    动软代码生成器,主子表增加的时候子表的parentID无法插入问题解决方案
    大数据量高并发的数据库优化详解
    C# Socket网络编程精华篇 (转)
    html+javascript+soap获取webservice免费天气预报信息
    js中字符串怎么转化为日期
    attachEvent方法的作用
    C#中[WebMethod]的用法,aspx、ashx、asmx
    C#操作XML方法详解
    C#操作XML的通用方法总结
  • 原文地址:https://www.cnblogs.com/flyingaway/p/14705362.html
Copyright © 2011-2022 走看看