web_fetch がダウンロードするファイル)は、各 Ayakaleaf Pro Pod 内の linked-url-proxy サービスが取得します。このサービスは公開されていないアドレスを拒否するため、ユーザーがこれを経由して内部サービスを読み取ることはできません。この機能とその設定は 外部 URL で説明しています。
設定
30-config.yaml (additions)
Kubernetes でブロックされるもの
プロキシは、パブリックなユニキャストアドレスではないすべてのアドレスを拒否します。対象は、ループバック、リンクローカル(クラウドのメタデータアドレス169.254.169.254 を含む)、プライベート範囲 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、キャリアグレード NAT の範囲 100.64.0.0/10、およびそれらに対応する IPv6 アドレスです。kubeadm、flannel、Calico、およびほとんどのマネージドクラスターのデフォルトのように、Pod ネットワークや Service ネットワークがこれらの範囲にある場合は、設定なしでブロックされます。それらに解決される redis や git-bridge などのクラスター内の名前も同様です。
パブリックアドレスは許可されます。ノードやロードバランサーがパブリックアドレスを持つ場合は、それらを OVERLEAF_LINKED_URL_BLOCKED_NETWORKS に追加して(スペースまたはカンマ区切り)、ユーザーがそれらを経由して NodePort やステータスページを取得できないようにしてください。
OVERLEAF_LINKED_URL_OUTBOUND_PROXY を設定している場合、ホスト名はそのプロキシが解決するため、チェックされるのは IP アドレスを含む URL のみです。内部ネットワークのブロックは、そのプロキシ自身で行う必要があります。
複数のレプリカ
追加の作業は不要です。各 Pod は自身の linked-url-proxy と同じ設定で取得します。Kubernetes でのテスト結果
Kubernetes 1.37 上で、3 つのレプリカ、flannel の Pod ネットワーク10.244.0.0/16、kubeadm の Service ネットワーク 10.96.0.0/12 の構成で、OVERLEAF_LINKED_URL_BLOCKED_NETWORKS を設定しなくても、プロキシは Service の ClusterIP、クラスター内の名前 redis、garage、overleaf-1.overleaf-hl.overleaf.svc.cluster.local、およびノードのアドレスからのダウンロードを拒否しました。インポート API を介したループバックとクラウドのメタデータアドレスの拒否、および AI アシスタントが OVERLEAF_LINKED_URL_ALLOWED_RESOURCES で許可されたページのみを読み取ることについても、エンドツーエンドテストに合格しています。
