当前位置: 首页 > 知识库问答 >
问题:

Spring云配置(Vault后端)过早终止

班安平
2023-03-14

我正在使用Spring Cloud Config Server为我的客户端应用程序提供配置。为了方便机密配置,我使用HashiCorp Vault作为后端。对于其余的配置,我使用GIT repo。因此,我在复合模式下配置了配置服务器。请参阅我的配置服务器引导。yml如下:-

server:
    port: 8888

spring:
    profiles:
        active: local, git, vault

    application:
        name: my-domain-configuration-server

    cloud:
        config:
            server:
                git:
                    uri: https://mygit/my-domain-configuration
                    order: 1
                vault:
                    order: 2
                    host: vault.mydomain.com
                    port: 8200
                    scheme: https
                    backend: mymount/generic

这一切都按预期工作。但是,我使用的代币使用Vault auth策略进行保护。见下文:-

{
    "rules": "path "mymount/generic/myapp-app,local" {
                  policy = "read"
              }

              path "mymount/generic/myapp-app,local/*" {
                  policy = "read"
              }

              path "mymount/generic/myapp-app" {
                  policy = "read"
              }

              path "mymount/generic/myapp-app/*" {
                  policy = "read"
              }

              path "mymount/generic/application,local" {
                  policy = "read"
              }

              path "mymount/generic/application,local/*" {
                  policy = "read"
              }

              path "mymount/generic/application" {
                  policy = "read"
              }

              path "mymount/generic/application/*" {
                  policy = "read"
              }"
}

我的问题是,我没有在所有这些范围内存储秘密。我需要指定所有这些路径,这样我就可以授权令牌从mymount/generic/myapp-app,local中读取一个秘密。如果我没有授权VaultEnvironmentRepository的所有其他路径。read()方法返回403 HTTP状态码(禁止)并引发VaultException。这将导致无法检索应用程序的任何配置,包括基于GIT的配置。这是非常有限的,因为客户端应用程序可能有多个Spring配置文件,与检索配置项无关。问题是,配置服务器将尝试检索客户端提供的所有活动配置文件的配置。

有没有办法在配置服务器上启用容错或宽容,以便Vault环境存储库不会中止并返回其实际授权返回的任何配置?

共有1个答案

壤驷经国
2023-03-14

你真的需要本地资料吗?你不能在Config Server中使用“vault”和“git”配置文件,并在每个Spring Boot应用程序中使用“默认”配置文件吗?

如果您使用上述建议,那么您在规则(. hcl)文件中只需要两条路径:

path "mymount/generic/application" {
  capabilities = ["read", "list"]
}

path "mymount/generic/myapp-app" {
  capabilities = ["read", "list"]
}

这假设您正在将配置写入

vault write mymount/generic/myapp-app

而不是

vault write mymount/generic/myapp-app,local

或类似。

 类似资料:
  • 我试图修改我们目前的Spring云配置服务器,它只有一个JDBC后端,以包括一个保险库后端,以使JDBC连接证书保密。 库: bootstrap.yml 应用程序. yml 没有从vault中检索spring.datasource用户名和密码。

  • 不是为Spring Cloud Config Server提供一个AppRole或Static令牌来访问所有应用程序的所有机密,是否可以配置Spring Cloud Vault Config来在配置请求中使用给定的令牌? 这种通信将通过带有标头中的令牌的双向SSL进行。向外发送这样的令牌并不理想,但在这种情况下似乎是合适的解决方案。 请记住,这是一个Spring Cloud Config服务器,它

  • 我们正在使用SpringCloud2.2。6.RELEASE使用vault存储我们的微服务,我们的vault团队对请求数量表示不满,他们提供了Splunk日志访问,我看到许多请求如下: 我确实看到了对秘密/数据/应用程序等的正常请求,但是为什么会有对秘密/数据/应用程序的请求呢? 关于如何或在哪里制作这个有什么想法吗?

  • 我是HashiCorp Vault的新手,并设置了Spring云配置服务器,将Vault作为存储机密,密钥等的后端。 问题是我能够访问默认级别存储的机密,例如: 但是,我无法访问我存储在Vault中的配置文件特定机密。无论我将机密存储在哪个配置文件中,API始终返回默认值而不是配置文件特定值。 例如: 以下是存储在Vault开发实例(1.1.3版)上的秘密: Spring云配置服务器applica

  • 我正在设置一个Spring启动云配置服务器,它使用VAULT来存储秘密。 保管库身份验证机制设置为AWS_IAM。我的类路径中也有aws-java-sdk。aws cli也被配置。 当我向配置服务器发出请求时,我能够从VAULT中获取机密,但第一次请求除外 对配置服务器的第一个请求失败,因为它试图安排任务在到期后续订vault令牌(来自vault响应) 应用程序中的配置。性质 错误日志是

  • 我想设置一个能够使用Vault和git作为配置后端的配置服务器。我不太明白有关配置的一些事情: 为什么我需要设置<code>spring.cloud.config.server。vault和? 我真的需要两个都设置吗? 它们之间的区别是什么? 我只希望我的客户能够直接从配置服务器获取配置,而不管Vault是否存在。 因此,客户端仅在配置服务器上请求,并且配置服务器被用于从Vault获取机密。