Esempio n. 1
0
        public void InitializeEtwListener()
        {
            payload = GetNewPayloadObject();

            var configurationFile = ConfigurationManager.AppSettings["SentinelApiConfig"];

            EtwProviderSession(EtwListenerConfig.SessionName, EtwListenerConfig.ProviderId, true);
            var _etw = EtwTdhObservable.FromSession(EtwListenerConfig.SessionName);

            KqlNodeHub = KqlNodeHub.FromKqlQuery(_etw, DefaultOutput, EtwListenerConfig.ObservableName,
                                                 EtwListenerConfig.KqlQuery);

            GlobalLog.WriteToStringBuilderLog($"Loading config [{configurationFile}].", 14001);
            var textOfJsonConfig =
                File.ReadAllText(Path.Combine(LogAnalyticsOdsApiHarness.GetExecutionPath(), $"{configurationFile}"));

            SentinelApiConfig = JsonConvert.DeserializeObject <SentinelApiConfig>(textOfJsonConfig);

            if (SentinelApiConfig.UseMmaCertificate)
            {
                logAnalyticsX509Certificate2 =
                    CertificateManagement.FindOdsCertificateByWorkspaceId(SentinelApiConfig.WorkspaceId);
            }
            else
            {
                logAnalyticsX509Certificate2 = CertificateManagement.FindCertificateByThumbprint("MY",
                                                                                                 SentinelApiConfig.CertificateThumbprint, StoreLocation.LocalMachine);
            }

            GlobalLog.WriteToStringBuilderLog($"SampleData load [{configurationFile}].", 14001);
            var sampleData =
                File.ReadAllText(Path.Combine(LogAnalyticsOdsApiHarness.GetExecutionPath(), $"XMLFile1.xml"));

            UploadBatchToLogAnalytics(sampleData, logAnalyticsX509Certificate2);
        }
Esempio n. 2
0
 public EventProcessor(
     IObservable <IDictionary <string, object> > inputStream,
     string inputName,
     IOutput output,
     bool realTimeMode,
     params string[] queries)
 {
     _inputStream  = inputStream;
     _inputName    = inputName;
     _output       = output;
     _realTimeMode = realTimeMode;
     _queries      = queries;
     _kqlNodeHub   = null;
 }
Esempio n. 3
0
        public bool ApplyRxKql()
        {
            List <string> queriesFullPath = new List <string>();

            foreach (var query in _queries)
            {
                if (!string.IsNullOrEmpty(query))
                {
                    var queryFullPath = Path.GetFullPath(query);
                    if (!File.Exists(queryFullPath))
                    {
                        _output.OutputError(new Exception($"ERROR! Query file {queryFullPath} does not seem to exist."));
                        return(false);
                    }
                    else
                    {
                        queriesFullPath.Add(queryFullPath);
                    }
                }
            }

            // adding custom functions
            if (_realTimeMode)
            {
                ScalarFunctionFactory.AddFunctions(typeof(RealTimeCustomScalarFunctions));
            }
            ScalarFunctionFactory.AddFunctions(typeof(CustomScalarFunctions));

            // instantiating KqlNodeHub with input stream, output action, and query files
            _kqlNodeHub = KqlNodeHub.FromFiles(_inputStream, _output.KqlOutputAction, _inputName, queriesFullPath.ToArray());

            // checking if any queries failed
            foreach (var query in _kqlNodeHub._node.FailedKqlQueryList)
            {
                _output.OutputError(query.FailureReason);
            }

            // return false if any queries failed
            if (_kqlNodeHub._node.FailedKqlQueryList.Count > 0)
            {
                return(false);
            }

            // set up error handling for any runtime query errors
            _kqlNodeHub._node.KqlKqlQueryFailed         += KqlQueryFailedEventHandler;
            _kqlNodeHub._node.EnableFailedKqlQueryEvents = true;

            return(true);
        }