2

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

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

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

4

1 回答 1

1

这是我还没有尝试过的东西,但我已经使用 r限制非 root 令牌的读取访问权限

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

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


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

以下是为 Vault 策略定义的不同功能- 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 小时的令牌,默认为 max。如果您想为新令牌配置更多时间,请在基本 config.hcl 中进行相应max_lease_ttl配置default_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"

希望这可以帮助!

于 2019-05-15T11:10:20.470 回答