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的使用

    待补充

  • 相关阅读:
    django-JWT的原理
    python-路由Routers-SimpleRouter-DefaultRouter的使用
    深入理解单例模式
    ArrayList
    队列----java实现
    栈--链表实现
    开发中CollectionUtils处理集合
    NullPointerException-----开发中遇到的空指针异常
    查询部门----返回给前台TreeView数据格式的数据
    git使用命令记录
  • 原文地址:https://www.cnblogs.com/flyingaway/p/14705362.html
Copyright © 2011-2022 走看看