如何在Spring Boot中使用非root用户的Vault令牌进行Vault登录

时间:2019-05-15 07:35:01

标签: spring-boot spring-cloud-config hashicorp-vault configserver

我正在使用库的默认令牌身份验证方法。还可以在Spring Boot应用程序中将Vault与Spring Cloud Config服务器集成。 root令牌具有超级用户访问权限,可以读取/写入应用程序的机密,但我需要创建一个 non root令牌,该令牌只能登录到保险库,而不会读写任何机密。这样就不会强制执行保管库,而是使用保管库启动应用程序。当用户想要专门使用保管库时,他可以提供自己的令牌和访问机密。

使用默认策略(创建令牌),通过Vault cli登录,但不通过spring boot应用程序登录,因此禁止403。 我创建了自己的策略,其中包括针对身份验证路径的不同功能,并且其中没有秘密路径。再次使用此策略创建的令牌通过cli(而非代码)成功登录。 如果我在策略中提供具有读取功能(仅读取有效)的秘密路径,那么我也可以通过代码登录,但随后启用了秘密读取。

我只想使用非根保管库令牌作为登录令牌。在金库策略中不提供秘密路径就可以实现吗?

1 个答案:

答案 0 :(得分:0)

这是我还没有尝试过的东西,但是我与r 限制了非根令牌的读取访问权限

可以创建具有deny功能的策略,如下所示:

$cat auth-policy.hcl 
path "secret/*" {
  capabilities = ["deny"]
}


vault policy write client-access auth-policy.hcl                         
Success! Uploaded policy: client-access

以下是为保险柜策略定义的不同功能-https://www.vaultproject.io/docs/concepts/policies.html#capabilities

vault token create -policy=client-access -period=768h                                    

Key                Value                                                        
---                -----                                                        
token              *********************                         
token_accessor     *********************                         
token_duration     768h                                                         
token_renewable    true                                                         
token_policies     [client-access default]  

这将创建一个有效期为768小时的令牌,默认情况下为最大。如果要为新令牌配置更多时间,请在基本config.hcl

中相应地配置max_lease_ttldefault_lease_ttl
$cat config.hcl
disable_mlock =  true
storage "postgresql" {
    connection_url =  "postgres://vault:vault@postgresql:5432/postgres?sslmode=disable"
}   
listener "tcp" {    
    address =  "0.0.0.0:8200" 
    tls_disable =  1
}
max_lease_ttl = "7200h"
default_lease_ttl = "7200h"

希望这会有所帮助!