#authorization #nginx-reverse-proxy #hashicorp-vault #cidr
#авторизация #nginx-обратный прокси #хранилище hashicorp #cidr
Вопрос:
Я пытаюсь использовать vault за прокси-сервером nginx, используя метод аутентификации роли приложения в vault. Мне нужно применить secret_id_bound_cidrs
в качестве одного из ограничений для роли, чтобы только определенные хосты могли входить в систему и получать доступ к API Vault. Я перепробовал все, и самое близкое, что у меня получилось, — это использовать параметры протокола прокси в vault. Однако, когда я отправляю запрос в vault с хоста, remote_add
в vault указывается сервер, на котором размещено хранилище, а не фактический 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
Может кто-нибудь, пожалуйста, помочь с какими-либо указаниями на то, чего мне здесь не хватает?
Ответ №1:
proxy_protocol_behaviour
Поле принадлежит listener/tcp
блоку, но у вас оно есть само по себе.
Помимо этого, я не уверен на 100%, что NGINX будет использовать правильный ПРОКСИ-протокол с тем, как вы его настроили — смотрите эти сайты для получения дополнительных комментариев: