我试图修改我们目前的Spring云配置服务器,它只有一个JDBC后端,以包括一个保险库后端,以使JDBC连接证书保密。
库:
Listener 1: tcp (addr: "127.0.0.1:8400", cluster address: "127.0.0.1:8401", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
C:\apps\HashiCorp>vault kv get secret/my-secrets
=============== Data ===============
Key Value
--- -----
spring.datasource.password yadayadayada
spring.datasource.username cobar
bootstrap.yml
server:
port: 8888
spring:
application:
name: config-server
cloud:
config:
allowOverride: true
server:
jdbc:
sql: SELECT prop_key, prop_value from CloudProperties where application=? and profile=? and label=?
order: 2
#https://cloud.spring.io/spring-cloud-config/reference/html/#vault-backend
vault:
scheme: http
host: localhost
port: 8400
defaultKey: my-secrets
order: 1
应用程序. yml
spring:
main:
banner-mode: off
allow-bean-definition-overriding: true
datasource:
url: jdbc:mysql://localhost/bootdb?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=false
#username: cobar
#password: yadayadayada
driverClassName: com.mysql.jdbc.Driver
hikari:
connection-timeout: 60000
maximum-pool-size: 5
cloud:
vault:
scheme: http
host: localhost
port: 8400
defaultKey: my-secrets
token: root.RIJQjZ4jRZUS8mskzfCON88K
没有从vault中检索spring.datasource用户名和密码。
2021-12-01 12:43:39.927 INFO 5992 --- [ restartedMain]: The following profiles are active: jdbc,vault
2021-12-01 12:43:46.123 ERROR 5992 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization.
Login failed for user ''. ClientConnectionId:a32
将属性从引导程序移动到应用程序上下文。
调用Vaultendpoint以获取机密并使用这些机密将数据源配置到JDBC后端。
@Slf4j
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static final String VAULT_URL_FRMT = "%s://%s:%s/v1/secret/%s";
@Autowired
private Environment env;
public static void main(String[] args) {
SpringApplication app = new SpringApplication(ConfigServerApplication.class);
app.addListeners(new ApplicationPidFileWriter());
app.addListeners(new WebServerPortFileWriter());
app.run(args);
}
@Order(1)
@Bean("restTemplate")
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Configuration
public class JdbcConfig {
@Autowired
private RestTemplate restTemplate;
@Bean
public DataSource getDataSource() {
Secrets secrets = findSecrets();
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.url(secrets.getData().get("spring.datasource.url"));
dataSourceBuilder.username(secrets.getData().get("spring.datasource.username"));
dataSourceBuilder.password(secrets.getData().get("spring.datasource.password"));
return dataSourceBuilder.build();
}
private Secrets findSecrets() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("X-Vault-Token", env.getProperty("spring.cloud.vault.token"));
HttpEntity request = new HttpEntity(httpHeaders);
String url = String.format(VAULT_URL_FRMT,
env.getProperty("spring.cloud.vault.scheme"),
env.getProperty("spring.cloud.vault.host"),
env.getProperty("spring.cloud.vault.port"),
env.getProperty("spring.cloud.vault.defaultKey")
);
return restTemplate.exchange(url, HttpMethod.GET, request, Secrets.class, 1).getBody();
}
}
}
@Getter
@Setter
public class Secrets implements Serializable {
private String request_id;
private String lease_id;
private boolean renewable;
private Duration lease_duration;
private Map<String, String> data;
}
现在,您有一个带有 JDBC 后端的云配置,您可以将数据库属性保密。
我正在使用Spring Cloud Config Server为我的客户端应用程序提供配置。为了方便机密配置,我使用HashiCorp Vault作为后端。对于其余的配置,我使用GIT repo。因此,我在复合模式下配置了配置服务器。请参阅我的配置服务器引导。yml如下:- 这一切都按预期工作。但是,我使用的代币使用Vault auth策略进行保护。见下文:- 我的问题是,我没有在所有这些范围内存
不是为Spring Cloud Config Server提供一个AppRole或Static令牌来访问所有应用程序的所有机密,是否可以配置Spring Cloud Vault Config来在配置请求中使用给定的令牌? 这种通信将通过带有标头中的令牌的双向SSL进行。向外发送这样的令牌并不理想,但在这种情况下似乎是合适的解决方案。 请记住,这是一个Spring Cloud Config服务器,它
我想设置一个能够使用Vault和git作为配置后端的配置服务器。我不太明白有关配置的一些事情: 为什么我需要设置<code>spring.cloud.config.server。vault和? 我真的需要两个都设置吗? 它们之间的区别是什么? 我只希望我的客户能够直接从配置服务器获取配置,而不管Vault是否存在。 因此,客户端仅在配置服务器上请求,并且配置服务器被用于从Vault获取机密。
以下的区别是什么? Spring Cloud Vault-http://Cloud.spring.io/spring-cloud-vault/ 带有保险库后端的Spring Cloud Config服务器-http://Cloud.spring.io/spring-cloud-static/camden.sr4/#_spring_cloud_config_server
我们正在使用SpringCloud2.2。6.RELEASE使用vault存储我们的微服务,我们的vault团队对请求数量表示不满,他们提供了Splunk日志访问,我看到许多请求如下: 我确实看到了对秘密/数据/应用程序等的正常请求,但是为什么会有对秘密/数据/应用程序的请求呢? 关于如何或在哪里制作这个有什么想法吗?
我是HashiCorp Vault的新手,并设置了Spring云配置服务器,将Vault作为存储机密,密钥等的后端。 问题是我能够访问默认级别存储的机密,例如: 但是,我无法访问我存储在Vault中的配置文件特定机密。无论我将机密存储在哪个配置文件中,API始终返回默认值而不是配置文件特定值。 例如: 以下是存储在Vault开发实例(1.1.3版)上的秘密: Spring云配置服务器applica