BTW if you have any alternative way just share it either in the jira or in
PR 🙂

On Thu, Nov 27, 2025 at 9:02 AM Gabor Somogyi <[email protected]>
wrote:

> Hi Gyula,
>
> We've discussed the issue but no PR available yet.
> Feel free and cc me if you have time...
>
> BR,
> G
>
>
> On Thu, Nov 27, 2025 at 8:52 AM Gyula Komlossi <[email protected]>
> wrote:
>
>> Hi Yaroslav, Gabor,
>>
>> I just ran into this issue, when tried to configure SSL for the REST
>> endpoint. I'm wondering what the preferred approach is with HTTPS on
>> this REST endpoint or if there is any code change in progress.
>> Have you been able to solve this one way or another, or started preparing
>> a code change for it?
>>
>> I was able to make this work with a small code change in the
>> RestServerEndpoint class to use the rest.address as the advertisedAddress
>> with HTTPS, but I’m looking forward to the official improvement.
>> Thank you both for taking care of this!
>>
>> Best,
>> Gyula
>>
>>
>> On 2025/08/19 20:34:06 Yaroslav Chernysh wrote:
>> > https://issues.apache.org/jira/browse/FLINK-38269
>> >
>> > On 2025/08/19 18:58:59 Gabor Somogyi wrote:
>> >  > You can file a jira and open a PR too so feel free.
>> >  >
>> >  > G
>> >  >
>> >  > On Tue, Aug 19, 2025, 19:51 Yaroslav Chernysh <[email protected]>
>> wrote:
>> >  >
>> >  > > Hi Gabor,
>> >  > >
>> >  > >
>> >  > > Just to avoid any misunderstanding, I've been waiting for the
>> ticket
>> >  > > from you. I assumed that you were going to do it. Please let me
>> know if
>> >  > > I got you wrong and I should create it myself.
>> >  > >
>> >  > >
>> >  > > Best regards,
>> >  > >
>> >  > > Yaroslav
>> >  > >
>> >  > >
>> >  > > On 2025/08/18 14:07:51 Gabor Somogyi wrote:
>> >  > > > Yeah, please read the how to contribute guide if you haven't
>> done
>> >  > > already.
>> >  > > >
>> >  > > > G
>> >  > > >
>> >  > > > On Mon, Aug 18, 2025 at 4:00 PM Yaroslav Chernysh <
>> [email protected]>
>> >  > > > wrote:
>> >  > > >
>> >  > > > > Hi Gabor,
>> >  > > > >
>> >  > > > >
>> >  > > > > Thanks, let's add a new option then to make advertised address
>> >  > > > > configurable and document the default behavior. Would you
>> mind
>> > filing
>> >  > > a
>> >  > > > > ticket for that?
>> >  > > > >
>> >  > > > >
>> >  > > > > Regards,
>> >  > > > >
>> >  > > > > Yaroslav
>> >  > > > >
>> >  > > > >
>> >  > > > > On 2025/08/18 13:41:54 Gabor Somogyi wrote:
>> >  > > > > > Hi Yaroslav,
>> >  > > > > >
>> >  > > > > > Having a config option to advertise something else is what
>> I can
>> >  > > > > support.
>> >  > > > > > Needless to say the actual behavior would remain as default.
>> >  > > > > >
>> >  > > > > > G
>> >  > > > > >
>> >  > > > > >
>> >  > > > > > On Mon, Aug 18, 2025 at 3:28 PM Yaroslav Chernysh
>> > <[email protected]>
>> >  > > > > > wrote:
>> >  > > > > >
>> >  > > > > > > Hi Gabor,
>> >  > > > > > >
>> >  > > > > > > I got your point on using `getHostName()`. Thank you for
>> such a
>> >  > > > > detailed
>> >  > > > > > > explanation.
>> >  > > > > > >
>> >  > > > > > > What do you think about advertising rest.address instead?
>> In
>> >  > > case of
>> >  > > > > > > YARN (at least on my environment), this is already set by
>> YARN
>> >  > > to a NM
>> >  > > > > > > hostname, so rDNS would be avoided.
>> >  > > > > > >
>> >  > > > > > > Thanks,
>> >  > > > > > >
>> >  > > > > > > Yaroslav
>> >  > > > > > >
>> >  > > > > > >
>> >  > > > > > > On 2025/08/15 21:12:58 Gabor Somogyi wrote:
>> >  > > > > > > > Hi Yaroslav,
>> >  > > > > > > >
>> >  > > > > > > > Thanks for your efforts in finding out all the details.
>> >  > > > > > > >
>> >  > > > > > > > I think making `getHostName` possible with a config +
>> some
>> >  > > > > additional
>> >  > > > > > > > warnings in the documentation can be considered.
>> >  > > > > > > > You need to evaluate your security standards but you win
>> >  > > something
>> >  > > > > on
>> >  > > > > > > one
>> >  > > > > > > > side and introduce new attack vector on the other side.
>> >  > > > > > > >
>> >  > > > > > > > I would write something similar in the documentation,
>> and
>> > I also
>> >  > > > > suggest
>> >  > > > > > > > you consider these for your own situation as well:
>> >  > > > > > > > - rDNS is not trustworthy for security decisions.
>> > Attackers with
>> >  > > > > control
>> >  > > > > > > > over PTR (or via poisoning/misconfig) can return
>> arbitrary
>> >  > > names.
>> >  > > > > > > > MITRE tracks this as CWE-350 [1] (Reliance on Reverse
>> DNS for
>> >  > > > > > > Security). If
>> >  > > > > > > > you base TLS host checks on rDNS, it’s bypassable.
>> >  > > > > > > > - Slow or failing DNS causes blocking delays (seconds)
>> in JVM
>> >  > > > > lookups.
>> >  > > > > > > > OpenJDK issues document repeated timeouts and lack of
>> >  > > > > > > > effective caching paths for some rDNS calls. Putting
>> rDNS in
>> >  > > > > critical
>> >  > > > > > > paths
>> >  > > > > > > > (TLS, handshake, request handling) can amplify random
>> > outages.
>> >  > > > > > > >
>> >  > > > > > > > All in all I'm not yet convinced that this issue
>> appears in
>> >  > > other
>> >  > > > > > > trending
>> >  > > > > > > > environments like k8s.
>> >  > > > > > > > Adding this together with the mentioned risks I
>> personally
>> >  > > wouldn't
>> >  > > > > > > merge
>> >  > > > > > > > it to the main repo.
>> >  > > > > > > >
>> >  > > > > > > > BR,
>> >  > > > > > > > G
>> >  > > > > > > >
>> >  > > > > > > > [1] https://cwe.mitre.org/data/definitions/350.html
>> >  > > > > > > >
>> >  > > > > > > >
>> >  > > > > > > > On Fri, Aug 15, 2025 at 7:44 PM Yaroslav Chernysh
>> >  > > <[email protected]>
>> >  > > > > > > > wrote:
>> >  > > > > > > >
>> >  > > > > > > > > Hi Gobor,
>> >  > > > > > > > >
>> >  > > > > > > > > Thank you for such a quick response, I appreciate it.
>> >  > > > > > > > >
>> >  > > > > > > > > Actually, I'm not very good at all this security and
>> >  > > networking
>> >  > > > > > > stuff, so
>> >  > > > > > > > > I apologize in advance if I'm wrong in some statement.
>> >  > > > > > > > >
>> >  > > > > > > > > > Does YARN containers share the host’s network in
>> your
>> > case?
>> >  > > > > > > > >
>> >  > > > > > > > > Yes, it does. And as far as I have researched, it
>> > always does,
>> >  > > > > > > possibly
>> >  > > > > > > > > only unless you have configured YARN to use Docker
>> > containers
>> >  > > > > > > > >
>> >  > > > > > > <
>> >  > > > > > >
>> >  > > > >
>> >  > > > >
>> >  > >
>> >  > >
>> >
>> https://hadoop.apache.org/docs/r3.4.1/hadoop-yarn/hadoop-yarn-site/DockerContainers.html
>> >  > > > > > > >,
>> >  > > > > > > > > which is definitely not my case. I have also done some
>> >  > > testing on
>> >  > > > > > > my node,
>> >  > > > > > > > > which has 2 IP addresses:
>> >  > > > > > > > >
>> >  > > > > > > > > - With default rest.bind-address (set by YARN to Node
>> >  > > Manager's
>> >  > > > > > > hostname),
>> >  > > > > > > > > the only IP address that opens a port is the one that
>> NM
>> >  > > > > hostname is
>> >  > > > > > > > > resolved to. The other one (not sure where it comes
>> from,
>> >  > > this is
>> >  > > > > a
>> >  > > > > > > VM)
>> >  > > > > > > > > remains closed
>> >  > > > > > > > >
>> >  > > > > > > > > - With rest.bind-address set to 0.0.0.0, the port is
>> > open and
>> >  > > > > > > accessible
>> >  > > > > > > > > via both IP addresses
>> >  > > > > > > > >
>> >  > > > > > > > > > However if you have a single IP then using 0.0.0.0
>> and
>> >  > > > > binding it to
>> >  > > > > > > > > lo + eth0 is something what I wouldn't worry about.
>> >  > > > > > > > >
>> >  > > > > > > > > I got the point and basically I agree here, but I'm
>> not
>> >  > > sure how
>> >  > > > > > > > > future-proof this approach is. How probable is a
>> > scenario in
>> >  > > > > which the
>> >  > > > > > > > > environment (single IP node) is changed (to a
>> multi-homed
>> >  > > > > node), but
>> >  > > > > > > > > unchanged configuration (still listening on 0.0.0.0)
>> > now leads
>> >  > > > > to an
>> >  > > > > > > > > excessive network exposure? Either way, that's not my
>> case.
>> >  > > And I
>> >  > > > > > > think
>> >  > > > > > > > > this is not restricted to YARN too: binding to all
>> >  > > interfaces in
>> >  > > > > > > Standalone
>> >  > > > > > > > > deployment might be too excessive as well.
>> >  > > > > > > > >
>> >  > > > > > > > > > but you still have control on firewall, right?
>> >  > > > > > > > >
>> >  > > > > > > > > Probably yes (saying for an average user). This would
>> > probably
>> >  > > > > > > cover the
>> >  > > > > > > > > excessive binding leak, however only at the firewall
>> level
>> >  > > and not
>> >  > > > > > > at the
>> >  > > > > > > > > "core". This adds a dependency on firewall. I'm not
>> saying
>> >  > > it's
>> >  > > > > > > bad, but
>> >  > > > > > > > > rather that using the defense-in-depth approach and
>> > doing both
>> >  > > > > limited
>> >  > > > > > > > > binding and adding firewall would be even better than
>> >  > > relying on
>> >  > > > > > > firewall
>> >  > > > > > > > > only.
>> >  > > > > > > > >
>> >  > > > > > > > > I hope all the above proves the point that even with
>> good
>> >  > > enough
>> >  > > > > > > > > environment (number of IP address + firewall) it
>> still does
>> >  > > make
>> >  > > > > > > sense to
>> >  > > > > > > > > restrict the binding. At least that's how I see this,
>> > please
>> >  > > > > > > correct me if
>> >  > > > > > > > > I'm wrong.
>> >  > > > > > > > >
>> >  > > > > > > > > > introduce reverse DNS lookup as a must have feature
>> >  > > > > > > > >
>> >  > > > > > > > > Could we make it optional and disabled by default?
>> >  > > > > > > > >
>> >  > > > > > > > > Thanks,
>> >  > > > > > > > >
>> >  > > > > > > > > Yaroslav
>> >  > > > > > > > >
>> >  > > > > > > > > On 2025/08/14 21:32:40 Gabor Somogyi wrote:
>> >  > > > > > > > > > Hi Yaroslav,
>> >  > > > > > > > > >
>> >  > > > > > > > > > First of all I would like to understand why you
>> think
>> >  > > binding to
>> >  > > > > > > 0.0.0.0
>> >  > > > > > > > > is
>> >  > > > > > > > > > less secure in your case. Correct me if I'm wrong:
>> >  > > > > > > > > > Does YARN containers share the host’s network in
>> your
>> >  > > case? On a
>> >  > > > > > > > > > multi-homed node, 0.0.0.0 exposes on every host
>> > interface,
>> >  > > > > > > > > > which can be less secure than binding to a specific
>> host
>> >  > > IP. So
>> >  > > > > > > this case
>> >  > > > > > > > > > pinning can matter.
>> >  > > > > > > > > >
>> >  > > > > > > > > > However if you have a single IP then using 0.0.0.0
>> and
>> >  > > binding
>> >  > > > > it
>> >  > > > > > > to lo +
>> >  > > > > > > > > > eth0 is something what I wouldn't worry about.
>> >  > > > > > > > > > Like a "normal" kubernetes pod (default networking,
>> > single
>> >  > > > > > > interface, no
>> >  > > > > > > > > > hostNetwork) has no such issue.
>> >  > > > > > > > > >
>> >  > > > > > > > > > As a general remark. Let's say you expose the REST
>> > endpoint
>> >  > > > > on 2 IP
>> >  > > > > > > > > > addresses but you still have control on firewall,
>> right?
>> >  > > > > > > > > >
>> >  > > > > > > > > > The main reason why I'm asking these questions is
>> because
>> >  > > using
>> >  > > > > > > > > > `getHostName` would introduce reverse DNS lookup as
>> a
>> >  > > must have
>> >  > > > > > > feature.
>> >  > > > > > > > > > That could cause quite some turbulences at heavy
>> users by
>> >  > > > > additional
>> >  > > > > > > > > > traffic, PTR records can be wrong or spoofed, etc...
>> >  > > > > > > > > >
>> >  > > > > > > > > > BR,
>> >  > > > > > > > > > G
>> >  > > > > > > > > >
>> >  > > > > > > > > >
>> >  > > > > > > > > > On Thu, Aug 14, 2025 at 8:13 PM Yaroslav Chernysh
>> >  > > > > <[email protected]>
>> >  > > > > > > > > <[email protected]>
>> >  > > > > > > > > > wrote:
>> >  > > > > > > > > >
>> >  > > > > > > > > > > Hi Flink community,
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > Is there a particular reason to advertise Job
>> Manager's
>> >  > > REST
>> >  > > > > > > endpoint
>> >  > > > > > > > > > > address in a form of IP address instead of
>> > hostname? More
>> >  > > > > > > precisely,
>> >  > > > > > > > > I'm
>> >  > > > > > > > > > > talking about this code block
>> >  > > > > > > > > > >
>> >  > > > > > > > >
>> >  > > > > > > <
>> >  > > > > > >
>> >  > > > >
>> >  > > > >
>> >  > >
>> >  > >
>> >
>> https://github.com/apache/flink/blob/release-2.0.0/flink-runtime/src/main/java/org/apache/flink/runtime/rest/RestServerEndpoint.java#L298-L304
>> >  > > > > > > >
>> >  > > > > > > > >
>> >  > > > > > > <
>> >  > > > > > >
>> >  > > > >
>> >  > > > >
>> >  > >
>> >  > >
>> >
>> https://github.com/apache/flink/blob/release-2.0.0/flink-runtime/src/main/java/org/apache/flink/runtime/rest/RestServerEndpoint.java#L298-L304
>> >  > > > > > > >
>> >  > > > > > > > > in
>> >  > > > > > > > > > > RestServerEndpoint.java:
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > final InetSocketAddress bindAddress =
>> > (InetSocketAddress)
>> >  > > > > > > > > > > serverChannel.localAddress();
>> >  > > > > > > > > > > final String advertisedAddress;
>> >  > > > > > > > > > > if (bindAddress.getAddress().isAnyLocalAddress())
>> {
>> >  > > > > > > > > > > advertisedAddress = this.restAddress;
>> >  > > > > > > > > > > } else {
>> >  > > > > > > > > > > advertisedAddress =
>> >  > > > > > > > > > > bindAddress.getAddress().getHostAddress();
>> >  > > > > > > > > > > }
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > That is (as far as I understood), if
>> rest.bind-address
>> >  > > is set
>> >  > > > > > > to the
>> >  > > > > > > > > > > 0.0.0.0 wildcard (which means binding to all
>> available
>> >  > > > > > > interfaces),
>> >  > > > > > > > > then
>> >  > > > > > > > > > > the advertised address will be the value of
>> > rest.address.
>> >  > > > > > > Otherwise, an
>> >  > > > > > > > > > > address in a form of IP address of the specified
>> >  > > > > rest.bind-address
>> >  > > > > > > > > will be
>> >  > > > > > > > > > > used.
>> >  > > > > > > > > > > What if I want to bind the REST endpoint to some
>> > specific
>> >  > > > > > > address (for
>> >  > > > > > > > > > > security reasons), but at the same time advertise
>> it in
>> >  > > the
>> >  > > > > form
>> >  > > > > > > of
>> >  > > > > > > > > > > hostname? Assuming that all the name resolution
>> things
>> >  > > work
>> >  > > > > > > correctly.
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > For me particularly, the problem this creates is
>> with
>> >  > > SSL. The
>> >  > > > > > > > > certificate
>> >  > > > > > > > > > > I have for the Job Manager (REST connectivity) is
>> > created
>> >  > > > > with a
>> >  > > > > > > > > hostname
>> >  > > > > > > > > > > and not an IP address. I run Flink on YARN and
>> this way
>> >  > > the
>> >  > > > > > > default
>> >  > > > > > > > > value
>> >  > > > > > > > > > > for rest.bind-address is Node Manager's hostname
>> (thus,
>> >  > > not
>> >  > > > > the
>> >  > > > > > > 0.0.0.0
>> >  > > > > > > > > > > wildcard), and the same goes for rest.address.
>> This
>> >  > > way, the
>> >  > > > > > > advertised
>> >  > > > > > > > > > > address is in the form of an IP address. I'd like
>> to
>> >  > > access
>> >  > > > > > > Flink's UI
>> >  > > > > > > > > via
>> >  > > > > > > > > > > the YARN Resource Manager proxy ("Tracking URL"
>> in the
>> >  > > > > application
>> >  > > > > > > > > page)
>> >  > > > > > > > > > > that has the Job Manager's certificate in its
>> > truststore.
>> >  > > > > > > However, due
>> >  > > > > > > > > to
>> >  > > > > > > > > > > the Flink being advertised to Resource Manager
>> with
>> > the IP
>> >  > > > > > > address and
>> >  > > > > > > > > the
>> >  > > > > > > > > > > certificate holds the hostname, the connection
>> from
>> >  > > Resource
>> >  > > > > > > Manager
>> >  > > > > > > > > to Job
>> >  > > > > > > > > > > Manager fails with:
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > javax.net.ssl.SSLPeerUnverifiedException:
>> > Certificate for
>> >  > > > > > > > > <192.168.33.11>
>> >  > > > > > > > > > > doesn't match any of the subject alternative
>> names: []
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > The only way I can fix this (without code
>> changes)
>> > is by
>> >  > > > > > > explicitly
>> >  > > > > > > > > > > setting rest.bind-address to 0.0.0.0, which is not
>> >  > > secure, as
>> >  > > > > > > far as I
>> >  > > > > > > > > > > understand (less secure than binding to a specific
>> >  > > address).
>> >  > > > > > > > > > > However, if I substitute the getHostAddress()
>> call in
>> >  > > the code
>> >  > > > > > > block
>> >  > > > > > > > > above
>> >  > > > > > > > > > > with the getHostName(), the issue is gone.
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > So, my question is: is there any particular
>> reason
>> > not to
>> >  > > > > > > > > > > use getHostName() here (assuming hostname is
>> > available)?
>> >  > > > > > > > > > >
>> >  > > > > > > > > > > Thanks,
>> >  > > > > > > > > > > Yaroslav
>> >  > > > > > > > > > >
>> >  > > > > > > > > >
>> >  > > > > > > > >
>> >  > > > > > > >
>> >  > > > > > >
>> >  > > > > >
>> >  > > > >
>> >  > > >
>> >  > >
>> >  >
>> >
>>
>

Reply via email to