Mikhail,

So, I suppose there should be ordering guarantees that listener is
registered before first validation failure can occur. Hope
GridComponent#onKernalStart is the right place. Is it enough to pass
only problematic node id (or ClusterNode) with an event? Actually such
event seems to fit naturally node join/left/failed events.

вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov <pmgheap....@gmail.com>:
>
> Hi Ivan.
>
> No other lifecycle events are needed in my case.
>
> We can register a listener in the security component's
> GridComponent#onKernalStart method and listen locally to every failed
> joining attempt. Am I missing something?
>
> Regards,
> Mikhail.
>
> On 03.12.2019 8:48, Ivan Pavlukhin wrote:
> > Mikhail,
> >
> > Do you need some ordering guarantees among node lifecycle events and
> > listener notifications. For example, I can imagine that it is good to
> > notify security component about every node failed validation. How can
> > we achieve it with events (I assume dynamic listener registration)?
> >
> > пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov <pmgheap....@gmail.com>:
> >> Hi, Andrey.
> >>
> >> It doesn't influence on authentication or authorization process. There
> >> is a security requirement that demands to notify some outer security
> >> subsystems in a specific way when joining node validation failed in any
> >> Ignite component (e.g. GridCacheProcessor) not only in
> >> IgniteSecurityProcessor. So PluginProvider#validateNewNode is not
> >> acceptable for me.
> >>
> >> Regards,
> >> Mikhail.
> >>
> >> On 02.12.2019 16:35, Andrey Gura wrote:
> >>> Mikhail,
> >>>
> >>> I don't understand how node validation on join affects security. But
> >>> it seems that you can use
> >>> PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode,
> >>> java.io.Serializable) method. Does it fit for your needs?
> >>>
> >>> On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov <pmgheap....@gmail.com> 
> >>> wrote:
> >>>> Hi, Ivan.
> >>>>
> >>>>
> >>>> Unfortunately, we came to no decision yet. As I mentioned above this
> >>>> event is disabled by default and no node will receive this event without
> >>>> an explicit subscription. In my case, that event is assumed to be used
> >>>> on node locally to share joining node info between security and
> >>>> discovery components. I have no idea how to solve this problem without
> >>>> publishing a new event too. But I'm concerned about the acceptance of
> >>>> that solution. Maybe it can be solved some other way? I will appreciate
> >>>> any suggestion or review PR [1] with event implementation.
> >>>>
> >>>>
> >>>> [1] https://github.com/apache/ignite/pull/7057
> >>>>
> >>>>
> >>>> Regards,
> >>>>
> >>>> Mikhail.
> >>>>
> >>>> On 02.12.2019 10:38, Ivan Pavlukhin wrote:
> >>>>> Mikhail, Andrey,
> >>>>>
> >>>>> Have you come to a common decision here? As for me, it sounds useful
> >>>>> to expose node join failure details somehow. The thing to decide on is
> >>>>> a mechanism to expose it. Unfortunately, immediately have no idea
> >>>>> better than using events.
> >>>>>
> >>>>>> What is purpose of the special cluster wide event? Node is not joined
> >>>>>> to the topology. Why topology nodes should know something about this
> >>>>>> node?
> >>>>> Was this question answered? I suppose that at least coordinator will
> >>>>> receive the event, will not it?
> >>>>>
> >>>>> чт, 28 нояб. 2019 г. в 10:10, Mikhail Petrov <pmgheap....@gmail.com>:
> >>>>>> Hi, Ivan.
> >>>>>>
> >>>>>> I'm sorry that the discussion was moved in private channel. The problem
> >>>>>> I'm trying to solve is described below in the thread. The security
> >>>>>> plugin in my case stores and analyzesinfo about a node that failed to 
> >>>>>> join.
> >>>>>>
> >>>>>>
> >>>>>> Regards,
> >>>>>>
> >>>>>> Mikhail.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> -------- Forwarded Message --------
> >>>>>> Subject:        Re: Joining node validation failure event.
> >>>>>> Date:   Thu, 21 Nov 2019 21:43:33 +0300
> >>>>>> From:   Mikhail Petrov <pmgheap....@gmail.com>
> >>>>>> To:     Andrey Gura <ag...@apache.org>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Hi, Andrey.
> >>>>>>
> >>>>>> In my task security plugin running on the coordinator must locally
> >>>>>> handle the situation when some node is trying to join the topology with
> >>>>>> the invalid configuration. I can't handle the response on a node that
> >>>>>> failed to connect because it's untrusted.
> >>>>>>
> >>>>>> Actually I'm only concerned about one validation -- when all Ignite
> >>>>>> components validate new node.
> >>>>>>
> >>>>>> In my case plugin must be able to obtain general and security subject
> >>>>>> information from joining TcpDiscoveryNode attributes. But I have no 
> >>>>>> idea
> >>>>>> how to share information between the security and discovery components
> >>>>>> without recording event and listening it locally.
> >>>>>>
> >>>>>> This event is assumed to be disable by default and in my case used only
> >>>>>> on local node so it's not look like "cluster wide event".
> >>>>>>
> >>>>>> Also I propose to record this event in dedicated utilityPool so it 
> >>>>>> can't
> >>>>>> stuck discovery thread.
> >>>>>>
> >>>>>> I will appreciate any thoughts on this problem.
> >>>>>>
> >>>>>> Regards,
> >>>>>> Mikhail.
> >>>>>>
> >>>>>> On 21.11.2019 19:40, Andrey Gura wrote:
> >>>>>>> Mikhail,
> >>>>>>>
> >>>>>>> It is still not enough details to me. What is expected behavior if the
> >>>>>>> plugin?
> >>>>>>>
> >>>>>>> There are a different validations during node join. Many of them
> >>>>>>> placed in RingMessageWorker#processJoinRequestMessage method. If
> >>>>>>> validation will fail then corresponding message will be sent to the
> >>>>>>> joining node (including TcpDiscoveryAuthFailedMessage) and node will
> >>>>>>> not joined to topology.
> >>>>>>>
> >>>>>>> What is purpose of the special cluster wide event? Node is not joined
> >>>>>>> to the topology. Why topology nodes should know something about this
> >>>>>>> node?
> >>>>>>>
> >>>>>>> On Thu, Nov 21, 2019 at 9:54 AM Mikhail Petrov <pmgheap....@gmail.com>
> >>>>>>> wrote:
> >>>>>>>> Hi, Andrey.
> >>>>>>>>
> >>>>>>>> I take part in the development of a custom security plugin for Apache
> >>>>>>>> Ignite. There is an information security requirement for which node
> >>>>>>>> joining failures due to invalid configuration must be handled by the
> >>>>>>>> plugin.
> >>>>>>>>
> >>>>>>>> This is where my case comes from. Are there any objections to the
> >>>>>>>> proposed approach?
> >>>>>>>>
> >>>>>>>> Regards,
> >>>>>>>> Mikhail.
> >>>>>>>>
> >>>>>>>> On 20.11.2019 19:38, Andrey Gura wrote:
> >>>>>>>>> Hi, Mikhail!
> >>>>>>>>>
> >>>>>>>>> Could you please describe the case for this new event?
> >>>>>>>>>
> >>>>>>>>> On Wed, Nov 20, 2019 at 12:45 PM Mikhail Petrov
> >>>>>>>>> <pmgheap....@gmail.com> wrote:
> >>>>>>>>>> Hello, Igniters.
> >>>>>>>>>>
> >>>>>>>>>> There is a case which requires to handle joining node validation
> >>>>>>>>>> failure
> >>>>>>>>>> in Ignite components and obtain information of the node that tried 
> >>>>>>>>>> to
> >>>>>>>>>> join and the reason for the failure. Now, as I see, there is no 
> >>>>>>>>>> way to
> >>>>>>>>>> do it. I propose to implement a new event -- 
> >>>>>>>>>> NodeValidationFailedEvent
> >>>>>>>>>> -- and record it in case the validation fails. I have created 
> >>>>>>>>>> Tiket [1]
> >>>>>>>>>> and PR [2], which shows an example of implementation. Could anyone 
> >>>>>>>>>> take
> >>>>>>>>>> a look at it, please?
> >>>>>>>>>>
> >>>>>>>>>> [1] https://issues.apache.org/jira/browse/IGNITE-12380
> >>>>>>>>>>
> >>>>>>>>>> [2] https://github.com/apache/ignite/pull/7057
> >>>>>>>>>>
> >
> >



-- 
Best regards,
Ivan Pavlukhin

Reply via email to