Envoy 需要管理员权限的原因是什么,可以避免吗?
What are the reasons Envoy needs admin privileges, and can it be avoid?
我想将 Envoy 作为 L7 负载均衡器实现 运行 与 kubernetes 一起使用,但我不能授予它管理员访问权限,因为这是我不得不担心的安全问题。一些研究告诉我,Envoy 需要管理员权限才能修改一些 IP 表,但是 pod 中的其他容器是否也需要管理员权限?如果是这样,为什么?这是否存在解决方法?
谢谢
根据说明,您应该使用 Envoy 用户 UID 创建 iptables 规则(就像在 Istio 中一样)。
sudo iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 5001
sudo iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 5001 -m owner '!' --uid-owner ${Envoy_User_UID}
为了 运行 此规则,需要在启动 Envoy 之前创建具有 ${Envoy_User_UID}
的新用户。然后 Envoy 需要在这个用户 ID 下 运行,这样来自 Envoy 的数据包就不会被重定向到它们自己。
另一方面,您可以使用 Ambassador - 它是为 Kubernetes 设计的 Envoy 开源发行版。
如何部署和配置 Ambassador,您可以在 Envoy as an API Gateway in Kubernetes 说明中找到。
您可以在 Setup IP tables rules to redirect inbound/outbound traffic to Envoy sidecar 页面上找到更多详细信息。
另外,Use Envoy as tcp/http proxy for all outbound traffic 可能会有用。
我想将 Envoy 作为 L7 负载均衡器实现 运行 与 kubernetes 一起使用,但我不能授予它管理员访问权限,因为这是我不得不担心的安全问题。一些研究告诉我,Envoy 需要管理员权限才能修改一些 IP 表,但是 pod 中的其他容器是否也需要管理员权限?如果是这样,为什么?这是否存在解决方法?
谢谢
根据说明,您应该使用 Envoy 用户 UID 创建 iptables 规则(就像在 Istio 中一样)。
sudo iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 5001
sudo iptables -t nat -A OUTPUT -p tcp -j REDIRECT --to-port 5001 -m owner '!' --uid-owner ${Envoy_User_UID}
为了 运行 此规则,需要在启动 Envoy 之前创建具有 ${Envoy_User_UID}
的新用户。然后 Envoy 需要在这个用户 ID 下 运行,这样来自 Envoy 的数据包就不会被重定向到它们自己。
另一方面,您可以使用 Ambassador - 它是为 Kubernetes 设计的 Envoy 开源发行版。
如何部署和配置 Ambassador,您可以在 Envoy as an API Gateway in Kubernetes 说明中找到。
您可以在 Setup IP tables rules to redirect inbound/outbound traffic to Envoy sidecar 页面上找到更多详细信息。 另外,Use Envoy as tcp/http proxy for all outbound traffic 可能会有用。