返回

保管库配置

发布时间:2023-07-19 08:52:33 260
# html# java# git# github# 软件

保管库配置_java

本指南将引导您完成使用过程春云金库​生成从中检索其配置属性的应用程序桥狮金库.

您将构建的内容

您将启动 Vault,将配置属性存储在 Vault 中,构建 Spring 应用程序并将其与 Vault 连接。

你需要什么

  • 约15分钟
  • 最喜欢的文本编辑器或 IDE
  • JDK 17或以后
  • 格拉德尔 4+​或梅文 3.2+
  • 您也可以将代码直接导入到 IDE 中:
  • 弹簧工具套件 (STS)
  • 智能理念
  • VSCode

如何完成本指南

像大多数春天一样入门指南,您可以从头开始并完成每个步骤,也可以绕过您已经熟悉的基本设置步骤。无论哪种方式,您最终都会得到工作代码。

要从头开始,请继续使用 Gradle 构建.

要跳过基础知识,请执行以下操作:

  • 下载​并解压缩本指南的源存储库,或使用吉特:git clone https://github.com/spring-guides/gs-vault-config.git
  • 光盘成gs-vault-config/initial
  • 跳转到安装并启动桥公司保险库.

完成后,您可以根据 中的代码检查结果。​​gs-vault-config/complete​

使用 Gradle 构建

使用 Maven 构建

使用 IDE 进行构建

安装并启动桥公司保险库

设置项目后,您可以安装和启动HashiCorp Vault。

如果您使用的是带有自制软件的Mac,则这很简单:

$ brew install vault

或者,从以下位置下载适用于您的操作系统的保险柜https://www.vaultproject.io/downloads.html:

$ https://releases.hashicorp.com/vault/1.12.2/vault_1.12.2_darwin_amd64.zip
$ unzip vault_1.12.2_darwin_amd64.zip

对于其他具有包管理功能的系统,例如Redhat,Ubuntu,Debian,CentOS和Windows,请参阅以下说明:https://www.vaultproject.io/docs/install/index.html.

安装 Vault 后,在控制台窗口中启动它。此命令还会启动服务器进程。

$ vault server --dev --dev-root-token-id="00000000-0000-0000-0000-000000000000"

您应该看到以下内容作为最后的输出行之一:

[INFO ] core: post-unseal setup complete

上述命令使用内存中存储(不带传输加密)在开发模式下启动 Vault。这对于在本地评估保险柜很好。确保使用正确的 SSL 证书和可靠的存储后端以供生产使用。咨询保险柜生产硬化指南了解更多详情。

在保险柜中存储配置

保险柜是一个机密管理系统,允许您存储静态加密的敏感数据。非常适合存储敏感的配置详细信息,例如密码、加密密钥、API 密钥。

启动另一个控制台窗口,以使用 Vault 命令行将应用程序配置存储在 Vault 中。

首先,您需要设置两个环境变量,以将保管库 CLI 指向保管库终端节点并提供身份验证令牌。

$ export export VAULT_TOKEN="00000000-0000-0000-0000-000000000000"
$ export VAULT_ADDR="http://127.0.0.1:8200"

现在,您可以在保管库中存储配置键值对:

$ vault kv put secret/gs-vault-config example.username=demouser example.password=demopassword
$ vault kv put secret/gs-vault-config/cloud example.username=clouduser example.password=cloudpassword

现在,您已经在 Vault 和 中写入了两个条目。​​secret/gs-vault-config​​​​secret/gs-vault-config/cloud​

定义配置类

为您的 Spring 应用程序创建一个简单的配置:

​src/main/java/hello/MyConfiguration.java​

package hello;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
* @author Mark Paluch
*/
@ConfigurationProperties("example")
public class MyConfiguration {

private String username;

private String password;

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

配置您的应用程序

在这里,您可以使用 配置应用程序。下面的代码使用 Spring Boot 的配置数据 API,它允许从 Vault 导入配置。​​application.properties​

​src/main/resources/application.properties​

spring.application.name=gs-vault-config
spring.cloud.vault.token=00000000-0000-0000-0000-000000000000
spring.cloud.vault.scheme=http
spring.cloud.vault.kv.enabled=true
spring.config.import: vault://

创建应用程序类

在这里,您将创建一个包含所有组件的应用程序类。

​src/main/java/hello/Application.java​

package hello;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

@SpringBootApplication
@EnableConfigurationProperties(MyConfiguration.class)
public class Application implements CommandLineRunner {

private final MyConfiguration configuration;

public Application(MyConfiguration configuration) {
this.configuration = configuration;
}

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Override
public void run(String... args) {

Logger logger = LoggerFactory.getLogger(Application.class);

logger.info("----------------------------------------");
logger.info("Configuration properties");
logger.info(" example.username is {}", configuration.getUsername());
logger.info(" example.password is {}", configuration.getPassword());
logger.info("----------------------------------------");
}
}

Spring Cloud Vault 用于与 Vault 交互。库中的属性将映射到以进行类型安全访问。 启用配置属性映射并注册 Bean。​​VaultOperations​​​​MyConfiguration​​​​@EnableConfigurationProperties(MyConfiguration.class)​​​​MyConfiguration​

​Application​​包括自动连接 的实例的方法。​​main()​​​​MyConfiguration​

构建可执行的 JAR

您可以使用 Gradle 或 Maven 从命令行运行应用程序。您还可以构建一个包含所有必需依赖项、类和资源的可执行 JAR 文件并运行该文件。通过构建可执行 jar,可以轻松地在整个开发生命周期中跨不同环境等将服务作为应用程序进行交付、版本控制和部署。

如果使用 Gradle,则可以使用 .或者,您可以使用 JAR 文件生成 JAR 文件,然后运行该文件,如下所示:​​./gradlew bootRun​​​​./gradlew build​

java -jar build/libs/gs-vault-config-0.1.0.jar

如果使用 Maven,则可以使用 运行应用程序。或者,您可以使用 JAR 文件生成 JAR 文件,然后运行该文件,如下所示:​​./mvnw spring-boot:run​​​​./mvnw clean package​

java -jar target/gs-vault-config-0.1.0.jar

此处描述的步骤将创建一个可运行的 JAR。你也可以构建经典 WAR 文件.

正如我们的实现一样,该方法在启动启动时自动调用。您应该看到如下所示的内容:​​Application​​​​CommandLineRunner​​​​run​

----------------------------------------
Configuration properties
example.username is demouser
example.password is demopassword
----------------------------------------

现在,在激活配置文件的情况下启动应用程序。您应该看到如下所示的内容:​​cloud​

----------------------------------------
Configuration properties
example.username is clouduser
example.password is cloudpassword
----------------------------------------

配置属性根据激活的配置文件进行绑定。Spring Cloud Vault 会构造一个 Vault 上下文路径,并从中附加配置文件名称 (),因此启用配置文件将从 获取额外的配置属性。​​spring.application.name​​​​gs-vault​​​​cloud​​​​cloud​​​​secret/gs-vault-config/cloud​

总结

祝贺!您设置了一个 Vault 服务器并编写了一个简单的应用程序,该应用程序使用 Spring Vault 将机密读取到配置属性中,并使用强密码加密数据 — 所有这些都无需为实施密钥管理、密码模式和填充而头疼。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
访问保管库 2023-07-19 05:52:02