Spring Cloud之Vault实践踩坑记录

news/2024/11/17 2:28:22/

Spring Cloud之Vault实践踩坑记录

  • 一、Vault 简介
    • 1.1 概述
    • 1.2 Vault 与 Spring Cloud 的关系
  • 二 Vault 实践
    • 2.1 安装配置 Vault
      • 2.1.1 Vault 的安装步骤
      • 2.1.2 Vault 配置文件的配置方法
    • 2.2 使用 Vault 存储敏感信息
      • 2.2.1 如何使用 Vault 存储敏感信息
      • 2.2.2 Vault 的加密机制
    • 2.3 将 Vault 与 Spring Cloud 集成
      • 2.3.1 Spring Cloud 中使用 Vault 的方式
      • 2.3.2 配置 Spring Cloud 和 Vault 之间的连接
  • 三、Vault 实践踩坑记录
    • 3.1 使用 Vault 时遇到的常见问题及解决方法
    • 3.2 Vault 与 Spring Cloud 集成中可能出现的问题及解决方法
  • 四、小结回顾

一、Vault 简介

1.1 概述

Vault 是 HashiCorp 公司开发的一个开源项目,用于管理机密信息,例如 API 密钥、密码、证书等。它提供了一种集中式的管理方式来保护敏感的数据,同时也提供了访问控制和加密服务等。

使用 Vault 能够更安全地管理敏感信息,并且可以从应用程序代码中抽象出来,从而简化管理和减少泄露风险。

1.2 Vault 与 Spring Cloud 的关系

Spring Cloud 为构建基于 Spring Boot 的微服务应用提供了各种工具和框架,包括配置管理、服务注册与发现、负载均衡、熔断器等等。Vault 与 Spring Cloud 配合使用,可以实现安全的配置管理。

二 Vault 实践

2.1 安装配置 Vault

2.1.1 Vault 的安装步骤

在 Linux 系统下安装 Vault,可以按照以下步骤进行:

  • 下载并解压 Vault 软件包
  $ wget https://releases.hashicorp.com/vault/1.8.1/vault_1.8.1_linux_amd64.zip$ unzip vault_1.8.1_linux_amd64.zip
  • 移动二进制文件到 /usr/local/bin 目录

    $ sudo mv vault /usr/local/bin/
    
  • 检查是否安装成功

    $ vault --version
    

2.1.2 Vault 配置文件的配置方法

Vault 的配置文件是一个 HCL(HashiCorp Configuration Language)格式的文本文件,一般命名为 config.hcl。

下面是一个简单的配置文件示例:

listener "tcp" {address = "127.0.0.1:8200"tls_disable = 1
}storage "file" {path = "/var/lib/vault/data"
}

该配置文件指定了监听地址和存储方式。其中,listener 定义了 Vault 的监听地址和协议,这里指定了 TCP 协议和端口号为 8200;storage 定义了 Vault 存储的方式,这里指定了使用文件系统存储。

2.2 使用 Vault 存储敏感信息

2.2.1 如何使用 Vault 存储敏感信息

首先需要启动 Vault 服务,并进行身份验证。然后可以使用如下命令将密钥存储到 Vault 中:

$ vault kv put secret/myapp/database username=dbuser password=dbpass

上述命令将数据库用户名和密码存储到 Vault 中,路径为 secret/myapp/database。

要检索存储在 Vault 中的密码,使用如下命令:

$ vault kv get secret/myapp/database

上述命令将显示存储在 Vault 中的数据库用户名和密码。

2.2.2 Vault 的加密机制

Vault 提供了多种加密机制来保护敏感的数据。其中最常用的方式是基于 Transit 引擎进行加密。

使用 Transit 引擎,可以对数据进行加密和解密,并且只需定义一次加密策略即可在多个应用程序中重复使用该策略。这样可以有效地保证数据安全性,并减少开发人员在代码中实现加密逻辑的工作量。

2.3 将 Vault 与 Spring Cloud 集成

2.3.1 Spring Cloud 中使用 Vault 的方式

Spring Cloud 提供了 spring-cloud-vault 和 spring-cloud-starter-vault 两个库,用于集成 Vault。在 Spring Boot 应用程序中,可以通过添加这些依赖项,来启用与 Vault 的集成。

例如,在 Maven 项目中可以在 pom.xml 文件中添加以下依赖项:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-vault-config</artifactId><version>3.0.4</version>
</dependency>

2.3.2 配置 Spring Cloud 和 Vault 之间的连接

配置 Spring Cloud 和 Vault 之间的连接需要设置 Vault 的地址、认证方式以及访问授权等信息。下面是一个简单的 application.yml 示例:

spring:cloud:vault:uri: http://127.0.0.1:8200/authentication: TOKENtoken: {VAULT_TOKEN}ssl:key-store:location: file:/path/to/vault.keystorepassword: {KEYSTORE_PASSWORD}key-alias: {KEY_ALIAS}

其中,uri 指定了 Vault 服务的地址;authentication 指定了 Vault 认证方式,这里使用 TOKEN;token 是访问 Vault 的凭证;ssl 定义了安全套接字层(SSL)的设置,包括信任库的位置和密码,以及密钥别名等。

三、Vault 实践踩坑记录

3.1 使用 Vault 时遇到的常见问题及解决方法

  1. 无法启动 Vault 服务

    • 问题描述:Vault 服务无法正常启动,报错信息为 “failed to start:”;

    • 可能原因:

      1. 端口冲突,可以通过修改配置文件 “config.hcl” 修改 Vault 服务端口;

      2. 数据目录权限不足,可以修改数据目录的权限或者更改 Vault 服务运行的用户;

      3. 系统没有安装 HashiCorp Vault;

    • 解决方案:

      1. 检查系统中是否安装了 HashiCorp Vault,并确保其已加入 PATH 环境变量中;

      2. 确认端口未被占用,并通过配置文件修改 Vault 服务端口;

      3. 修改数据目录权限或更改 Vault 服务运行的用户。

  2. 转发代理使用异常

    • 问题描述:当使用转发代理访问 Vault 服务时,返回 503 错误;

    • 可能原因:

      1. 代理转发地址错误,导致无法正常访问;

      2. Vault 服务并未正确配置 SSL;

      3. 配置文件中 “listener” 部分设置错误。

    • 解决方案:

      1. 检查代理转发地址,并确保其正确有效;

      2. 确认 Vault 服务是否已正确配置 SSL;

      3. 检查配置文件中 “listener” 部分的设置是否正确。

3.2 Vault 与 Spring Cloud 集成中可能出现的问题及解决方法

  1. 无法自动续租

    • 问题描述:在使用 Vault 与 Spring Cloud 进行集成后,无法进行自动续租;

    • 可能原因:

      1. Vault Token 权限不足;

      2. 传递给 Spring Cloud 的秘密引用无效;

      3. 没有正确配置 Vault。

    • 解决方案:

      1. 确认使用的 Vault Token 具有续租权限;

      2. 确认传递给 Spring Cloud 的秘密引用有效,且可以被正确解析;

      3. 确认已正确配置 Vault,并为其分配了正确的秘密引用。

  2. Vault 密钥错误

    • 问题描述:在使用 Vault 与 Spring Cloud 进行集成后,Vault 密钥无法正确获取;

    • 可能原因:

      1. 配置 Vault 时没有正确连接到 Vault 服务器;

      2. Vault Token 权限不足;

      3. 凭据路径设置错误。

    • 解决方案:

      1. 确认 Vault 连接配置正确,并可以正常连接到 Vault 服务器;

      2. 确定使用的 Vault Token 具有足够的权限获取密钥;

      3. 检查凭据路径是否正确设置。

四、小结回顾

本文主要介绍了在使用 Vault 时可能会遇到的一些常见问题,并给出了相应的解决方案。针对 Vault 与 Spring Cloud 集成中出现的问题也做出了相应的介绍。总的来说在使用 Vault 时需要注意正确的配置,以及相关权限的设置。


http://www.ppmy.cn/news/598627.html

相关文章

source-map定位生产问题

source-map 定位源码错误位置 需要安装source-map库webpack配置需要配上devtool: “hidden-source-map”&#xff0c;devtool详细配置看这里devtool配置配置完webpack打包后&#xff0c;可以看到打包出来的.js.map文件 将生产包产生错误的栈赋值给stack即可&#xff0c;即设置…

Linux环境常见命令 /putty

ls 显示当前目录下所有文件 cd &#xff08;目录名&#xff09;–到指定目录下 f95 *90 *f 用fortran95编译当前目录下的f90文件并生成运行文件vi 进入编辑界面 i 修改 esc :w 保存 esc :wq 保存并退出编辑界面 :q 非写入状态下退出编辑界面rm 删除&#xff0c;一次可以删…

%.0f

%.0f表示不输出小数位&#xff0c;但要对第一位小数进行四舍五入 %.1f,表示保留一位小数&#xff0c;对第二位小数进行四舍五入

VSCODE配置fortran调试环境(INTEL)

VSCOE安装必要fortran插件 python -m pip install fortran-language-server setting搜索break&#xff0c;把Allow Breakpoints Everywhere打开&#xff0c;即可打断点。 新建文件夹name&#xff0c;新建hello.f90文件 program mainwrite(*,*) hello, world! end programna…

VSCODE_Fortran语言的多文件(.F90、.F95、.F)调用

目的&#xff1a;记录利用VSCODE编译TRIGRS模型时遇到的问题 意义&#xff1a;网上查询了很多资料&#xff0c;均未阐述该问题的详细解决方式&#xff0c;借鉴各种资料后&#xff0c;得出以下解决方式&#xff0c;希望后者能有效解决该问题。 解决方法如下&#xff1a;将${fi…

ShengBTE安装processes. f90报错的解决办法

经验分享 在前文中介绍了有关ShengBTE的内容以及安装方法ShengBTE简单介绍、安装与使用&#xff0c;近期有小伙伴联系笔者说在安装ShengBTE时出现报错&#xff0c;主要为 processes. f90出了点问题&#xff0c;说对于代码147行中的“omp_get_thread_num”存在“this name does…

FORTRAN的read语句中END参数的用法

FORTRAN的read语句中END参数的用法 END子句 Fortran程序设计&#xff08;第四版&#xff09;p518&#xff1a;该子句指定了一个可执行语句的标号。当检测到输入文件结束时&#xff0c;将跳转到该标号。END子句提供了一个处理意外文件结束条件的方法。 书中简单描述了END语句的…

C与Fortran混合编程

混合编程 1、C调Fortran&#xff1a;判断两个数的最大值&#xff0c;C输入&#xff0c;Fortran判断2、Fortran调C&#xff1a;二维数组运算&#xff0c;Fortran进行相关定义&#xff0c;C运算3、遇到的问题 1、C调Fortran&#xff1a;判断两个数的最大值&#xff0c;C输入&…