Also, before this thread goes off on this particular tangent, I'd like to
go back to something Bryan mentioned in his earlier response.

> Based on how we use HBase in
> our environment, this is perfectly secure for our use-case. That may not
> work for everyone, and I did file a jira to add a feature for validating
> the username (perhaps pulling from a custom certificate property).

There is middle ground between your position and a blanket trust of
connection header parameters from any client with a valid certificate...
Certificates can carry additional information, including usernames, which
would be protected by the signature. Sometimes this is done. HBase doesn't
implement it (yet) and if you have a trust architecture that demands it, it
would establish the username as attested by an authority, like a kerberos
ticket. You'd use a netty API presumably in a coprocessor hook to get it in
order to hand off to UGI. Should someone decide this is needed it would
make a good contribution back to the project, somewhere in hbase-examples
perhaps.


On Sun, Jun 9, 2024 at 10:57 PM Andrew Purtell <apurt...@apache.org> wrote:

> Like I said the successful verification of the certificate implies the
> client is trustworthy, including what the client supplies in the header.
> Now, if within your organization, you are distributing trusted certificates
> to potentially untrustworthy software, that is a you problem, as they say.
>
> It is absolutely not true that kerberos authentication is *required* when
> using mTLS. Frankly I'd prefer you expand on such comments to explain why
> you might have untrustworthy clients operating in your production as
> opposed to another organization with competent operations and better
> controls. Otherwise this flirts with F.U.D.
>
>
> On Sun, Jun 9, 2024 at 10:07 PM Andor Molnar <an...@apache.org> wrote:
>
>> Yeah. I think the key point here is that the client certificate
>> identifies the originating "host" and not the "user", hence we have the
>> client hostname verification built-in. The only thing that you can be
>> sure about when you do mTLS is that the request is coming from a
>> legitimate host.
>>
>> Therefore you still need a secure authentication method in order to
>> prevent legitimate users to impersonate each other.
>>
>> For instance, you have Alice and Bob valid users both having trusted
>> client certificates. They both can make requests from legitimate hosts,
>> but with SIMPLE auth they're free to lie about their valid usernames.
>>
>> As far as I know, the only secure authentication option for HBase is
>> Kerberos, so you still have to use it. Using mTLS will prevent
>> attackers from making requests from ordinary hosts by stoling Kerberos
>> tokens.
>>
>> Andor
>>
>>
>>
>> On Sun, 2024-06-09 at 13:45 -0400, Bryan Beaudreault wrote:
>> > mTLS is totally unrelated to the username. It's whatever you'd
>> > typically
>> > have without mTLS.
>> >
>> > On Sun, Jun 9, 2024 at 1:38 PM Andor Molnar <an...@apache.org> wrote:
>> >
>> > > That is a completely fair point and I agree that from security
>> > > perspective, the approach is safe enough.
>> > >
>> > > I'd just like to figure out what is the username in this case?
>> > > Linux
>> > > user id? Anything that comes from SASL layer based on the Hadoop
>> > > stack?
>> > >
>> > > Andor
>> > >
>> > >
>> > >
>> > >
>> > > On Fri, 2024-06-07 at 09:30 -0700, Andrew Purtell wrote:
>> > > > Most users who would employ a mTLS authentication scheme would
>> > > > operate with this trust model. The fact the client has a valid
>> > > > signed
>> > > > certificate means it can be trusted, and that trust includes
>> > > > supplied
>> > > > connection metadata like username. Or, if not, then not.
>> > > > So then a lot of security engineering effort goes in to
>> > > > protecting
>> > > > the trust established by certificate distribution, like using
>> > > > short
>> > > > lived certs, and secure distribution methods.
>> > > >
>> > > > > On Jun 7, 2024, at 6:34 AM, Bryan Beaudreault <
>> > > > > bbeaudrea...@apache.org> wrote:
>> > > > >
>> > > > > You're sort of correct. We've been using mTLS in prod for a
>> > > > > while
>> > > > > now, ever
>> > > > > since the feature was committed. It's true that the actual
>> > > > > HBase
>> > > > > username
>> > > > > is not verified with mTLS, however you still can authenticate
>> > > > > the
>> > > > > connection. The idea behind mTLS is that the certificate
>> > > > > carries
>> > > > > the
>> > > > > authentication -- so a client will need a certificate which has
>> > > > > been signed
>> > > > > by the same CA (or at least within the CA chain) which signed
>> > > > > the
>> > > > > server's
>> > > > > certificate, and vise versa.
>> > > > >
>> > > > > For us, if someone has a valid certificate and the mTLS
>> > > > > authentication
>> > > > > succeeds, then we just trust their username. Based on how we
>> > > > > use
>> > > > > HBase in
>> > > > > our environment, this is perfectly secure for our use-case.
>> > > > > That
>> > > > > may not
>> > > > > work for everyone, and I did file a jira to add a feature for
>> > > > > validating
>> > > > > the username (perhaps pulling from a custom certificate
>> > > > > property).
>> > > > > But I
>> > > > > haven't actually implemented that, and not sure that I will
>> > > > > since
>> > > > > it works
>> > > > > as-is for us.
>> > > > >
>> > > > > I'm on mobile now so I can't find it, but it should be findable
>> > > > > in
>> > > > > jira if
>> > > > > you search the tls-related tickets
>> > > > >
>> > > > > > On Fri, Jun 7, 2024 at 8:53 AM Andor Molnar <an...@apache.org
>> > > > > > >
>> > > > > > wrote:
>> > > > > >
>> > > > > > Hi Bryan / Hbase devs,
>> > > > > >
>> > > > > > Based on the changes when you added mTLS support in HBASE-
>> > > > > > 27280
>> > > > > > [1],
>> > > > > > only the certificate and hostname verification part were
>> > > > > > added to
>> > > > > > the
>> > > > > > codebase. HBase doesn't actually authenticates the user when
>> > > > > > mTLS
>> > > > > > is
>> > > > > > being used.
>> > > > > >
>> > > > > > In other words some other auth method Simple or Kerberos is
>> > > > > > still
>> > > > > > needed to identify the HBase user, because mTLS doesn't
>> > > > > > extract
>> > > > > > identity information from the client certificate and doesn't
>> > > > > > map
>> > > > > > it to
>> > > > > > an active HBase user.
>> > > > > >
>> > > > > > Is that correct?
>> > > > > >
>> > > > > > Regards,
>> > > > > > Andor
>> > > > > >
>> > > > > >
>> > > > > > [1] https://issues.apache.org/jira/browse/HBASE-27280
>> > > > > >
>> > > > > >
>> > > > > >
>> > > > > >
>>
>>

Reply via email to