使用 RBAC (Envoy) 允许 IP 与 TCP 侦听器
Allow IPs with TCP Listener using RBAC (Envoy)
我正在尝试使用 Envoy 实现以下目标:
- 使用 RBAC 规则允许 TCP 流量到 Postgres 服务以仅允许几个 IP。
这是我的监听器设置。
- name: listener_postgres
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 54322
filter_chains:
filters:
- name: envoy.filters.network.rbac
config:
stat_prefix: rbac_postgres
rules:
action: ALLOW
policies:
"allow":
permissions:
- any: true
principals:
- source_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- source_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- source_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- name: envoy.tcp_proxy
config:
stat_prefix: tcp_postgres
cluster: database_service
我可以确认服务设置正确,因为我可以删除 RBAC 规则并且可以成功连接。
添加 RBAC 规则后,我无法连接到 Postgres 数据库。
但由于某种原因似乎没有任何效果,我也尝试用 remote_ip 和 direct_remote_ip 代替 source_ip。
我是不是做错了什么?
谢谢
嘿,我 运行 遇到了同样的问题,这是适合我的配置。
我使用了 remote_ip
属性。
另外,检查更新的过滤器名称
- name: listener_postgres
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 54322
filter_chains:
filters:
- name: envoy_rbac
config:
stat_prefix: rbac_postgres
rules:
action: ALLOW
policies:
"allow":
permissions:
- any: true
principals:
- remote_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- name: envoy_tcp_proxy
config:
stat_prefix: tcp_postgres
cluster: database_service
似乎按照 Rahul Pratap 的建议将属性设置为“remote_ip”。
这是一个工作示例:
- name: listener_postgres
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 54322
filter_chains:
filters:
- name: envoy.filters.network.rbac
config:
stat_prefix: rbac_postgres
rules:
action: ALLOW
policies:
"allow":
permissions:
- any: true
principals:
- remote_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- name: envoy.tcp_proxy
config:
stat_prefix: tcp_postgres
cluster: database_service
我正在尝试使用 Envoy 实现以下目标:
- 使用 RBAC 规则允许 TCP 流量到 Postgres 服务以仅允许几个 IP。
这是我的监听器设置。
- name: listener_postgres
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 54322
filter_chains:
filters:
- name: envoy.filters.network.rbac
config:
stat_prefix: rbac_postgres
rules:
action: ALLOW
policies:
"allow":
permissions:
- any: true
principals:
- source_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- source_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- source_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- name: envoy.tcp_proxy
config:
stat_prefix: tcp_postgres
cluster: database_service
我可以确认服务设置正确,因为我可以删除 RBAC 规则并且可以成功连接。
添加 RBAC 规则后,我无法连接到 Postgres 数据库。
但由于某种原因似乎没有任何效果,我也尝试用 remote_ip 和 direct_remote_ip 代替 source_ip。
我是不是做错了什么?
谢谢
嘿,我 运行 遇到了同样的问题,这是适合我的配置。
我使用了 remote_ip
属性。
另外,检查更新的过滤器名称
- name: listener_postgres
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 54322
filter_chains:
filters:
- name: envoy_rbac
config:
stat_prefix: rbac_postgres
rules:
action: ALLOW
policies:
"allow":
permissions:
- any: true
principals:
- remote_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- name: envoy_tcp_proxy
config:
stat_prefix: tcp_postgres
cluster: database_service
似乎按照 Rahul Pratap 的建议将属性设置为“remote_ip”。
这是一个工作示例:
- name: listener_postgres
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 54322
filter_chains:
filters:
- name: envoy.filters.network.rbac
config:
stat_prefix: rbac_postgres
rules:
action: ALLOW
policies:
"allow":
permissions:
- any: true
principals:
- remote_ip:
address_prefix: XX.XX.XX.XX
prefix_len: 32
- name: envoy.tcp_proxy
config:
stat_prefix: tcp_postgres
cluster: database_service