问题描述
我正尝试在Vault中使用App角色身份验证方法在Nginx代理后面使用Vault。我需要将secret_id_bound_cidrs
用作角色限制之一,以便只有特定的主机才能登录和访问Vault API。我已经尝试了所有方法,最接近的方法是在Vault中使用代理协议选项。但是,当我从主机向保管库发送请求时,保管库中的remote_add
被设置为托管保管库的服务器,而不是实际的客户端IP,因此验证失败。
我的Nginx.conf
如下:
location /vault/
{
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_pass http://vault:8200/;
}
我的保管库配置如下:
请注意,我使用consul和Vault作为docker服务,这使我可以在这里将consul称为服务的名称。因此consul:8500
{
"backend": {
"consul": {
"address": "consul:8500","path": "vault/"
}
},"listener": {
"tcp":{
"address": "0.0.0.0:8200","tls_disable": 1
}
},"proxy_protocol_behavior":"use_always","ui": true
}
我的角色配置如下,其中x.x.x.x是我需要允许访问的IP:
bind_secret_id false
local_secret_ids false
policies [test-policy]
secret_id_bound_cidrs [ x.x.x.x/32]
secret_id_num_uses 0
secret_id_ttl 0s
token_bound_cidrs []
token_explicit_max_ttl 0s
token_max_ttl 30m
token_no_default_policy false
token_num_uses 0
token_period 0s
token_policies [test-policy]
token_ttl 20m
token_type default
有人可以提供任何有关我在这里缺少什么的帮助吗?
解决方法
proxy_protocol_behaviour
字段属于listener/tcp
块,但您可以单独使用它。
除此之外,我不确定100%是否确定NGINX将以正确的方式使用正确的PROXY协议-请参阅这些网站以获取更多评论: