Управляйте данными, отправляемыми в трассировки AppInsight - PullRequest
0 голосов
/ 12 сентября 2018

Есть ли способ контролировать отправку данных в трассировки AppInsights.Как гласит официальная документация, файловая обработка и предварительная обработка - способ сделать это.Я не могу получить свойство (пароль) из POST & PUT.Поскольку пароль чувствителен, я не хочу, чтобы его отправляли в App Insights.Ниже из моих следов:

"Значение": "client_id = {someguid} & resource = {someguid} & username = {username} & password = {password} & grant_type = password & scope = openid & nca = 1; 1;login-NonInteractive; False "

 public void Initialize(ITelemetry telemetry)
    {
        var requestTelemetry = telemetry as RequestTelemetry;
        if (requestTelemetry != null && (HttpContext.Current.Request.HttpMethod == HttpMethod.Post.ToString() || HttpContext.Current.Request.HttpMethod == HttpMethod.Put.ToString()))
        {
            using (var reader = new StreamReader(HttpContext.Current.Request.InputStream))
            {
                string requestBody = reader.ReadToEnd();
                requestTelemetry.Properties.Add("body", requestBody);
            }
        }
    }

1 Ответ

0 голосов
/ 14 сентября 2018

Прямой ответ в настоящее время: не поддерживается в Application Insights.

Здесь вы можете узнать, как обрабатывать Персональные данные с помощью Application Insights

Примечание. Если вы заинтересованы в просмотре или удалении личных данных, пожалуйста, см. Запросы субъекта данных Azure для статьи GDPR. Если вы для получения общей информации о GDPR см. раздел GDPR Сервисный трастовый портал.

Для любого типичного проекта, , не рекомендуется хранить / показывать пароль как голый (даже в логах) . Это строгое нарушение конфиденциальности

Для вашего случая использования, как упомянуто Иваном Янгом в комментарии. Вместо того, чтобы помещать / выгружать все содержимое тела запроса в журналы понимания приложения, вам следует отфильтровать / удалить пароль .

   public void Initialize(ITelemetry telemetry)
    {
        var requestTelemetry = telemetry as RequestTelemetry;
        if (requestTelemetry != null && (HttpContext.Current.Request.HttpMethod == HttpMethod.Post.ToString() || HttpContext.Current.Request.HttpMethod == HttpMethod.Put.ToString()))
        {
            using (var reader = new StreamReader(HttpContext.Current.Request.InputStream))
            {
                string requestBody = reader.ReadToEnd();
                int startIndex= requestBody.LastIndexOf("&password=");
                int endIndex= requestBody.LastIndexOf("&scope=");
                requestBody = requestBody.Replace(requestBody.Substring(startIndex, (endIndex - startIndex) -1),""); 
                requestTelemetry.Properties.Add("body", requestBody);
            }
        }
    }

Вы можете оставить свой собственный отзыв здесь , если вы действительно хотите, чтобы такая функция, как включение / отключение некоторых полей, была маскирована / снята при входе в приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...