Невозможно остановить ведение журнала отладки Kerberos - PullRequest
0 голосов
/ 08 ноября 2019

Я использую кластер Spark с поддержкой Kerberos для запуска наших приложений Spark. Kerberos был настроен ранее другими членами организации, и я понятия не имею, как он работает. В первые дни мы использовали журналы отладки Kerberos, чтобы понять исключение «Невозможно получить пароль от пользователя», которое возникало из-за отсутствия сертификата JCE в папке cacerts jre security. Однако нам больше не нужны журналы, поэтому мы использовали параметр -Dsun.security.krb5.debug = false, чтобы отключить ведение журнала. Однако это не имело никакого эффекта. Есть ли другой параметр, который мог бы добиться цели? Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 11 ноября 2019

Отрывок из GitBook "Сводка и Керберос: безумие за воротами" Стивом Лафраном, глава Секреты низкого уровня

Ведение журнала библиотеки JVM

Вы можете включить низкоуровневое ведение журнала Kerberos
-Dsun.security.krb5.debug=true

Это не выходит через Log4J, иливедение журнала java.util;это просто выходит на консоль. Что несколько неудобно - но имейте в виду, что они регистрируются на очень низком уровне системы. И это как минимум лог. Если вы окажетесь на этом уровне, у вас проблемы. Имейте это в виду.

Если вы хотите отлаживать то, что происходит в SPNEGO, другое системное свойство позволяет вам включить это:
-Dsun.security.spnego.debug=true

Вы можете запросить оба из них вHADOOP_OPTS переменная окружения
export HADOOP_OPTS="-Dsun.security.krb5.debug=true -Dsun.security.spnego.debug=true"

Отладка JAAS на стороне Hadoop

Установите для переменной env HADOOP_JAAS_DEBUG значение true, и UGI установит флаг "debug" для любого JAASфайлы, которые он создает.

Вы можете сделать это на клиенте, прежде чем вводить команду hadoop, hdfs или yarn, и установить ее в сценарии среды службы YARN, чтобы включить его там.
export HADOOP_JAAS_DEBUG=true

В следующей команде Hadoop вы увидите след типа (.........)

Предостережение: свойства Java, начинающиеся с sun.security., применяются к среде выполнения Sun / Oracle Java, а также к среде выполнения OpenJDK и ее вариантам. Но не для IBM Java и т. Д.


Выдержка из документации Java 8 в Устранение неполадок безопасности

Если вы хотите контролировать безопасный доступ, вы можете установить системное свойство java.security.debug.
(.......) Разделяйте несколько опций запятыми.

При конкретном устранении неполадок Kerberos я лично использую эту комбинацию:
-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext


Выдержка из Oracle Замечания к выпуску JDK 9 раздел инструменты / средство запуска

JDK9 поддерживает новую переменную среды JDK_JAVA_OPTIONS для добавления параметров к параметрам, указанным в командной строке. Новая переменная среды имеет несколько преимуществ по сравнению с устаревшей / неподдерживаемой переменной среды _JAVA_OPTIONS, включая возможность включения параметров запуска Java (...)

Эти две переменные envочень грязный (и крайне сложный для обнаружения) способ внедрения системных свойств Java без их появления в командной строке.


Что это значит для вас? Что ж, вам нужно искать несколько реквизитов системы Java и переменных среды, которые могут быть установлены
  • для переменных env: глобально (ср. /etc/profile.d/*.sh) или на уровне аккаунта (ср. ~/.bashrc и друзья), либо внутри «включаемых файлов» Hadoop, либо непосредственно внутри сценария оболочки, который запускает задание Spark
  • для системных подпрограмм: в любой переменной shell-or-env, которая впоследствии будет разработана в сценарии оболочки(...) или любой env var, выбранный Java при запуске, или в файлах конфигурации YARN (при использовании Spark-on-YARN) , или непосредственно в командной строке Java

Удачи.
Лично я бы запустил фиктивную работу Spark, которая просто сбрасывает все переменные env и реквизиты системы Java;затем осмотрите дамп, чтобы определить, что искать;затем выполните перебор find ... -exec grep ... в файловой системе Linux (повторите при необходимости) .

...