Darren

Its difficult to get to what you have in mind as you keep saying
authorization but then giving examples of authentication protocols
(kerberos/keytabs, basic auth).

Lets focus though on your later comment about hdfs processors.  Take for
example put hdfs...it connects to and hdfs cluster to put data.  In terms
of the actual dataflow we get to authenticate/convey our identity to hdfs
and where we want to write data.  Hdfs then gets to accept or reiect that.
 *That* is authorization.  Now then, speaking in terms of flow
administration in nifi we do have authorization scenarios.  Like who can
view the processor, start it, stop it, and so on.   This kind of
authorization in nifi IS something that can be extended/altered to meet
some awesome and complex needs.

Lets keep circling closer to your intent here

thanks

On Wed, Nov 4, 2020 at 1:38 PM Darren Govoni <dar...@ontrenet.com> wrote:

> Hi Bryan,
>    Thanks for the input. Right now, I'm really exploring how better to
> accommodate migrating from the use of keytabs to our corporate mandate for
> pkinit support. Observing that the current authorizations in processors
> (basic auth, kerberos etc) are tightly wired, it suggested to me an
> opportunity to move security more into an "aspect" of processors rather
> than woven into the processor specific code. Of course, there are
> interactions that take place throughout the behavior of the processor.
>
> This is a fairly common approach to security, noting that for any given
> behavior, it can be done all the same securely or without security. So I
> would think it should be possible to abstract the authorizations as needed,
> and there are a variety of patterns to pull those details out of the
> components needing them. 🙂
>
> I suppose the difference is more subtle these days, but in my mind
> Authentication does one thing. Decide if principal (e.g.username) is who
> they say they are, using the provided credentials (e.g. password). Once
> this is established the authentication service will return an identifying
> token, cert etc. That's it. Now, some services will inline this activity
> along with authorization.
>
> For us, this is already handled and the identity is established as a
> digitally signed X.509 certificate. Thus, our primary need is to consult
> our security services which will decide if that principal is allowed to do
> something - such as use HDFSProcessor, Query Solr, etc.
>
> In looking at the current code in the processors (and I haven't studied
> them all but will look more closely at HDFS), it didn't seem like a good
> approach to layer another authorization (PKInit) into that existing code
> and it will certainly get crowded in processors doing that, which should
> focus on processing. Just my opinions so far! Subject to change.
>
> Darren
>
> ------------------------------
> *From:* Bryan Bende <bbe...@gmail.com>
> *Sent:* Wednesday, November 4, 2020 3:22 PM
>
> *To:* users@nifi.apache.org <users@nifi.apache.org>
> *Subject:* Re: Authorization Framework
>
> Darren,
>
> I also thought you were talking about authentication. Processors don’t
> really perform authorization, they provide credentials to some system which
> is authentication, the system then decides if they authenticated
> successfully, and then some systems may also perform authorization to
> determine if the authenticated identity is allowed to perform the action.
> The examples you gave of basic auth and kerberos are both authentication
> mechanisms.
>
> I think it will be very hard to not have this logic embedded in processors
> since many times it is specific to the client library being used. For
> example, HDFS processors use the UserGroupInformation class from
> hadoop-common for kerberos authentication where as Kafka processors use the
> Kafka client which takes a JAAS config string.
>
> The parts that can be factored out are usually common things like
> credential holders, such as SSLContextService or KeytabCredentialService,
> both of which don’t really do anything besides hold values that are then
> used in different ways by various processors.
>
> If we are missing what you are talking about, let us know.
>
> Thanks,
>
> Bryan
>
> On Nov 4, 2020, at 2:45 PM, Darren Govoni <dar...@ontrenet.com> wrote:
>
> Thanks Joe.
>
> Just looking to see where community might be going down the road with
> respect to processor security so we can keep our efforts aligned.
>
> In regards to your question I primarily mean authorization. Our company
> already has a SSO that establishes identity credentials so these are then
> used to authorize specific functions and access to certain infrastructure
> systems when constructing flows.
>
> Darren
>
> Sent from my Verizon, Samsung Galaxy smartphone
> Get Outlook for Android <https://aka.ms/ghei36>
>
> ------------------------------
> *From:* Joe Witt <joe.w...@gmail.com>
> *Sent:* Wednesday, November 4, 2020 12:29:35 PM
> *To:* users@nifi.apache.org <users@nifi.apache.org>
> *Subject:* Re: Authorization Framework
>
> Darren
>
> You will want this thread on dev list to get traction.
>
> Also please clarify if you mean authorization or whether you  mean
> authentication.   I read all usages as meaning to discuss authentication.
>
> thanks
>
> On Wed, Nov 4, 2020 at 9:53 AM Darren Govoni <dar...@ontrenet.com> wrote:
>
> Greetings!
>
> We have an internal need to move to a specific PK based authorization for
> all our nifi processors. Currently, authorizations such as basic auth and
> kerberos seem to be wired directly inside the processors. My design
> approach to addressing our need also seeks to factor authorization out of
> processors where specific authorization handlers can be composed and
> config/run time and lighten the responsibilities inside processor classes.
>
> Towards this end, my initial design goals for this framework are thus:
>
> 1) Allow various kinds of authorization handlers to be written and added
> to processors without necessarily recoding the processor.
> 2) Allow for a pipeline effect where one or more authorizers might need to
> operate at the same time.
> 3) Do not disrupt existing processors that rely on their internal coding
> for authorization
> 4) Use appropriate design patterns to allow for flexible implementations
> of principals, credentials and other authorization assets.
> 5) Secure any clear text assets (usernames and passwords) in existing
> authorizations when moving them inside the framework.
>
> How does the community conduct initial design reviews of such changes? We
> would be quite a ways from contributing anything back but want to keep in
> sync with community practices and expectations to make such an offering
> immediately useful.
>
> Regards,
> Darren
>
>
>

Reply via email to